From 8b7891ba77f47fcc11d344a6940651a283195e0c Mon Sep 17 00:00:00 2001 From: Stone monkey Date: Fri, 9 Jun 2023 15:08:04 +0800 Subject: [PATCH] fix doc link --- 404.html | 6 +++--- .../{0.styles.844a2aa8.css => 0.styles.7f0f2da6.css} | 2 +- assets/js/{10.83378578.js => 10.a104077a.js} | 2 +- assets/js/{102.93011a96.js => 102.cd09eeac.js} | 2 +- assets/js/{103.7288a5c6.js => 103.16fa40de.js} | 2 +- assets/js/{104.8f885d74.js => 104.8698471e.js} | 2 +- assets/js/{105.6b3019b7.js => 105.2db9a241.js} | 2 +- assets/js/{106.2ddf3989.js => 106.d34f9773.js} | 2 +- assets/js/{108.2ad33fac.js => 108.95e66204.js} | 2 +- assets/js/{109.72abead6.js => 109.e903b5a2.js} | 2 +- assets/js/{11.279ca8e2.js => 11.02a59c96.js} | 2 +- assets/js/{111.55ff9cad.js => 111.19b4aae0.js} | 2 +- assets/js/{112.9afb3e2d.js => 112.c9503c25.js} | 2 +- assets/js/{113.fe55a09e.js => 113.fc4cffc4.js} | 2 +- assets/js/{114.2d7b1c8b.js => 114.59f7a81c.js} | 2 +- assets/js/{115.f538cdf8.js => 115.d42ba1ec.js} | 2 +- assets/js/{117.e12a9fbf.js => 117.9d52ab3d.js} | 2 +- assets/js/{119.760ef2ca.js => 119.078cd29d.js} | 2 +- assets/js/{91.cbdc1e1b.js => 12.ce6d8e00.js} | 2 +- assets/js/{120.0be976db.js => 120.017e1c20.js} | 2 +- assets/js/{121.d5cedafb.js => 121.cec73b04.js} | 2 +- assets/js/{123.bdff3bcb.js => 123.d7928c13.js} | 2 +- assets/js/{124.bb513256.js => 124.e3732c93.js} | 2 +- assets/js/{125.de1e04a4.js => 125.e0b91456.js} | 2 +- assets/js/{126.1979b4ba.js => 126.6718f6ab.js} | 2 +- assets/js/{128.fde84ac4.js => 128.b29f5cf2.js} | 2 +- assets/js/{129.5fdca64d.js => 129.eeddd15b.js} | 2 +- assets/js/{13.845b3ac4.js => 13.32bb9e8c.js} | 2 +- assets/js/{130.aacd2cdb.js => 130.dcc3b606.js} | 2 +- assets/js/{131.174c03f0.js => 131.0ce33a04.js} | 2 +- assets/js/{132.dc402607.js => 132.db5ef214.js} | 2 +- assets/js/{133.71b40ea8.js => 133.33afab4d.js} | 2 +- assets/js/{134.d6af2ba1.js => 134.84f28a6f.js} | 2 +- assets/js/{135.031ac685.js => 135.7858dd33.js} | 2 +- assets/js/{138.7e763317.js => 138.bd6c2fd9.js} | 2 +- assets/js/{139.77214828.js => 139.6ee53aa4.js} | 2 +- assets/js/{140.3d3f94c2.js => 140.ab030c6a.js} | 2 +- assets/js/{144.5b723479.js => 144.33bc1488.js} | 2 +- assets/js/{145.9382ab60.js => 145.ce11df15.js} | 2 +- assets/js/{15.97374dd5.js => 15.04e9cdd9.js} | 2 +- assets/js/{16.d5fadb1f.js => 16.1a8393dc.js} | 2 +- assets/js/{17.85070bd8.js => 17.abddf148.js} | 2 +- assets/js/{19.142e1664.js => 19.0e2cfbc3.js} | 2 +- assets/js/{20.6aa700a9.js => 20.01e8066c.js} | 2 +- assets/js/{21.f79562fe.js => 21.4776481c.js} | 2 +- assets/js/{22.c36f814f.js => 22.39b444af.js} | 2 +- assets/js/{23.3fc4b8f0.js => 23.2892f1bb.js} | 2 +- assets/js/{24.ff0bd2fa.js => 24.57e15656.js} | 2 +- assets/js/{25.a364ffe9.js => 25.08e6622a.js} | 2 +- assets/js/{26.4d190cda.js => 26.57296ca7.js} | 2 +- assets/js/{27.f7273c62.js => 27.bb3cd6a8.js} | 2 +- assets/js/{28.7895237d.js => 28.d2dff34a.js} | 2 +- assets/js/{29.d8f4cc81.js => 29.8f845fe9.js} | 2 +- assets/js/{3.5bcf211a.js => 3.8d28154b.js} | 2 +- assets/js/{30.94b3175d.js => 30.ea0e974b.js} | 2 +- assets/js/{31.4e810261.js => 31.4b4c7d4b.js} | 2 +- assets/js/{32.ab295dfc.js => 32.067561ac.js} | 2 +- assets/js/{33.720c5bbd.js => 33.29e9d8fb.js} | 2 +- assets/js/{75.15c05bc2.js => 38.d62d2f87.js} | 2 +- assets/js/{39.0b03c921.js => 39.d32d57ec.js} | 2 +- assets/js/{4.1e8ca44e.js => 4.79290685.js} | 2 +- assets/js/{44.94776414.js => 44.b0f6b8e9.js} | 2 +- assets/js/{45.3ba157f9.js => 45.5d19e959.js} | 2 +- assets/js/{48.dc9554ed.js => 48.f154ba5f.js} | 2 +- assets/js/{49.37da269e.js => 49.dc83ea0d.js} | 2 +- assets/js/{50.61cbf8e3.js => 50.f38bbdae.js} | 2 +- assets/js/{51.b4b41ad6.js => 51.229db107.js} | 2 +- assets/js/{38.059132ee.js => 56.f888d1d5.js} | 2 +- assets/js/{76.cf457c63.js => 57.df15705e.js} | 2 +- assets/js/{58.71b16290.js => 58.e749d9b2.js} | 2 +- assets/js/{59.75f73182.js => 59.b36e04a6.js} | 2 +- assets/js/{60.257187e5.js => 60.b2e91e30.js} | 2 +- assets/js/{98.ecfbcf5d.js => 61.692e75d6.js} | 2 +- assets/js/{63.72e4ec3c.js => 63.648d2341.js} | 2 +- assets/js/{64.251500bf.js => 64.33fca94f.js} | 2 +- assets/js/{66.b3f22aae.js => 66.de8e5b74.js} | 2 +- assets/js/{67.d643eaeb.js => 67.b3bfcbbe.js} | 2 +- assets/js/{68.1391041a.js => 68.70e1fec1.js} | 2 +- assets/js/{69.f076f69f.js => 69.59a1ff4e.js} | 2 +- assets/js/{70.21d1fa26.js => 70.d08c86af.js} | 2 +- assets/js/{56.86ca51c4.js => 75.ddf691ed.js} | 2 +- assets/js/{57.84653a3c.js => 76.20b05096.js} | 2 +- assets/js/{77.b62b05f7.js => 77.2586d174.js} | 2 +- assets/js/{78.95a748e7.js => 78.3fb56785.js} | 2 +- assets/js/{8.596f1de1.js => 8.500d8954.js} | 2 +- assets/js/{61.e593a701.js => 80.d5974e7f.js} | 2 +- assets/js/{81.b35c265f.js => 81.c70e41a0.js} | 2 +- assets/js/{83.2c1a7eea.js => 83.b2ae7c60.js} | 2 +- assets/js/{9.ae816606.js => 9.caae5b5a.js} | 2 +- assets/js/{90.14e64fc9.js => 90.7aed6c12.js} | 2 +- assets/js/{12.7bb4f7bb.js => 91.7ca1606c.js} | 2 +- assets/js/96.7d2e294a.js | 1 + assets/js/96.e8b2265d.js | 1 - assets/js/{80.fc3ac8ab.js => 98.32aeff0a.js} | 2 +- assets/js/{99.516d8b9f.js => 99.c50280d4.js} | 2 +- assets/js/app.1fdb8a3a.js | 8 -------- assets/js/app.ed2354d3.js | 8 ++++++++ concepts/about-the-platform.html | 6 +++--- concepts/blockchain-layers.html | 6 +++--- concepts/consensus.html | 6 +++--- concepts/faq.html | 6 +++--- concepts/thesaurus.html | 6 +++--- de/concepts/about-the-platform.html | 6 +++--- de/concepts/blockchain-layers.html | 6 +++--- de/concepts/consensus.html | 6 +++--- de/concepts/faq.html | 6 +++--- de/concepts/thesaurus.html | 6 +++--- de/howtos/deployment.html | 6 +++--- de/index.html | 6 +++--- de/reference/api2.html | 6 +++--- de/reference/backend-config.html | 6 +++--- de/reference/desync_monitor.html | 6 +++--- de/reference/json-rpc.html | 8 ++++---- de/reference/platform-parameters.html | 6 +++--- de/topics/daemons.html | 6 +++--- de/topics/script.html | 6 +++--- de/topics/templates2.html | 6 +++--- de/topics/vm.html | 6 +++--- de/tutorials/app_tutorial.html | 6 +++--- de/tutorials/tutorial.html | 6 +++--- es/concepts/about-the-platform.html | 6 +++--- es/concepts/blockchain-layers.html | 6 +++--- es/concepts/consensus.html | 6 +++--- es/concepts/faq.html | 6 +++--- es/concepts/thesaurus.html | 6 +++--- es/howtos/deployment.html | 6 +++--- es/index.html | 6 +++--- es/reference/api2.html | 6 +++--- es/reference/backend-config.html | 6 +++--- es/reference/desync_monitor.html | 6 +++--- es/reference/json-rpc.html | 8 ++++---- es/reference/platform-parameters.html | 6 +++--- es/topics/daemons.html | 6 +++--- es/topics/script.html | 6 +++--- es/topics/templates2.html | 6 +++--- es/topics/vm.html | 6 +++--- es/tutorials/app_tutorial.html | 6 +++--- es/tutorials/tutorial.html | 6 +++--- fr/concepts/about-the-platform.html | 6 +++--- fr/concepts/blockchain-layers.html | 6 +++--- fr/concepts/consensus.html | 6 +++--- fr/concepts/faq.html | 6 +++--- fr/concepts/thesaurus.html | 6 +++--- fr/howtos/deployment.html | 6 +++--- fr/index.html | 6 +++--- fr/reference/api2.html | 6 +++--- fr/reference/backend-config.html | 6 +++--- fr/reference/desync_monitor.html | 6 +++--- fr/reference/json-rpc.html | 8 ++++---- fr/reference/platform-parameters.html | 6 +++--- fr/topics/daemons.html | 6 +++--- fr/topics/script.html | 6 +++--- fr/topics/templates2.html | 6 +++--- fr/topics/vm.html | 6 +++--- fr/tutorials/app_tutorial.html | 6 +++--- fr/tutorials/tutorial.html | 6 +++--- howtos/deployment.html | 6 +++--- index.html | 6 +++--- it/concepts/about-the-platform.html | 6 +++--- it/concepts/blockchain-layers.html | 6 +++--- it/concepts/consensus.html | 6 +++--- it/concepts/faq.html | 6 +++--- it/concepts/thesaurus.html | 6 +++--- it/howtos/deployment.html | 6 +++--- it/index.html | 6 +++--- it/reference/api2.html | 6 +++--- it/reference/backend-config.html | 6 +++--- it/reference/desync_monitor.html | 6 +++--- it/reference/json-rpc.html | 8 ++++---- it/reference/platform-parameters.html | 6 +++--- it/topics/daemons.html | 6 +++--- it/topics/script.html | 6 +++--- it/topics/templates2.html | 6 +++--- it/topics/vm.html | 6 +++--- it/tutorials/app_tutorial.html | 6 +++--- it/tutorials/tutorial.html | 6 +++--- ja/concepts/about-the-platform.html | 6 +++--- ja/concepts/blockchain-layers.html | 6 +++--- ja/concepts/consensus.html | 6 +++--- ja/concepts/faq.html | 6 +++--- ja/concepts/thesaurus.html | 6 +++--- ja/howtos/deployment.html | 6 +++--- ja/index.html | 6 +++--- ja/reference/api2.html | 6 +++--- ja/reference/backend-config.html | 6 +++--- ja/reference/desync_monitor.html | 6 +++--- ja/reference/json-rpc.html | 10 +++++----- ja/reference/platform-parameters.html | 6 +++--- ja/topics/daemons.html | 6 +++--- ja/topics/script.html | 6 +++--- ja/topics/templates2.html | 6 +++--- ja/topics/vm.html | 6 +++--- ja/tutorials/app_tutorial.html | 6 +++--- ja/tutorials/tutorial.html | 6 +++--- reference/api2.html | 6 +++--- reference/backend-config.html | 6 +++--- reference/desync_monitor.html | 6 +++--- reference/json-rpc.html | 8 ++++---- reference/platform-parameters.html | 6 +++--- topics/daemons.html | 6 +++--- topics/script.html | 6 +++--- topics/templates2.html | 6 +++--- topics/vm.html | 6 +++--- tr-TR/concepts/about-the-platform.html | 6 +++--- tr-TR/concepts/blockchain-layers.html | 6 +++--- tr-TR/concepts/consensus.html | 6 +++--- tr-TR/concepts/faq.html | 6 +++--- tr-TR/concepts/thesaurus.html | 6 +++--- tr-TR/howtos/deployment.html | 6 +++--- tr-TR/index.html | 6 +++--- tr-TR/reference/api2.html | 6 +++--- tr-TR/reference/backend-config.html | 6 +++--- tr-TR/reference/desync_monitor.html | 6 +++--- tr-TR/reference/json-rpc.html | 8 ++++---- tr-TR/reference/platform-parameters.html | 6 +++--- tr-TR/topics/daemons.html | 6 +++--- tr-TR/topics/script.html | 6 +++--- tr-TR/topics/templates2.html | 6 +++--- tr-TR/topics/vm.html | 6 +++--- tr-TR/tutorials/app_tutorial.html | 6 +++--- tr-TR/tutorials/tutorial.html | 6 +++--- tutorials/app_tutorial.html | 6 +++--- tutorials/tutorial.html | 6 +++--- zh-CN/concepts/about-the-platform.html | 6 +++--- zh-CN/concepts/blockchain-layers.html | 6 +++--- zh-CN/concepts/consensus.html | 6 +++--- zh-CN/concepts/faq.html | 6 +++--- zh-CN/concepts/thesaurus.html | 6 +++--- zh-CN/howtos/deployment.html | 6 +++--- zh-CN/index.html | 6 +++--- zh-CN/reference/api2.html | 6 +++--- zh-CN/reference/backend-config.html | 6 +++--- zh-CN/reference/desync_monitor.html | 6 +++--- zh-CN/reference/json-rpc.html | 8 ++++---- zh-CN/reference/platform-parameters.html | 6 +++--- zh-CN/topics/daemons.html | 6 +++--- zh-CN/topics/script.html | 6 +++--- zh-CN/topics/templates2.html | 6 +++--- zh-CN/topics/vm.html | 6 +++--- zh-CN/tutorials/app_tutorial.html | 6 +++--- zh-CN/tutorials/tutorial.html | 6 +++--- 241 files changed, 545 insertions(+), 545 deletions(-) rename assets/css/{0.styles.844a2aa8.css => 0.styles.7f0f2da6.css} (97%) rename assets/js/{10.83378578.js => 10.a104077a.js} (99%) rename assets/js/{102.93011a96.js => 102.cd09eeac.js} (99%) rename assets/js/{103.7288a5c6.js => 103.16fa40de.js} (99%) rename assets/js/{104.8f885d74.js => 104.8698471e.js} (99%) rename assets/js/{105.6b3019b7.js => 105.2db9a241.js} (98%) rename assets/js/{106.2ddf3989.js => 106.d34f9773.js} (98%) rename assets/js/{108.2ad33fac.js => 108.95e66204.js} (99%) rename assets/js/{109.72abead6.js => 109.e903b5a2.js} (99%) rename assets/js/{11.279ca8e2.js => 11.02a59c96.js} (99%) rename assets/js/{111.55ff9cad.js => 111.19b4aae0.js} (99%) rename assets/js/{112.9afb3e2d.js => 112.c9503c25.js} (99%) rename assets/js/{113.fe55a09e.js => 113.fc4cffc4.js} (97%) rename assets/js/{114.2d7b1c8b.js => 114.59f7a81c.js} (99%) rename assets/js/{115.f538cdf8.js => 115.d42ba1ec.js} (99%) rename assets/js/{117.e12a9fbf.js => 117.9d52ab3d.js} (99%) rename assets/js/{119.760ef2ca.js => 119.078cd29d.js} (99%) rename assets/js/{91.cbdc1e1b.js => 12.ce6d8e00.js} (99%) rename assets/js/{120.0be976db.js => 120.017e1c20.js} (99%) rename assets/js/{121.d5cedafb.js => 121.cec73b04.js} (98%) rename assets/js/{123.bdff3bcb.js => 123.d7928c13.js} (99%) rename assets/js/{124.bb513256.js => 124.e3732c93.js} (99%) rename assets/js/{125.de1e04a4.js => 125.e0b91456.js} (99%) rename assets/js/{126.1979b4ba.js => 126.6718f6ab.js} (99%) rename assets/js/{128.fde84ac4.js => 128.b29f5cf2.js} (99%) rename assets/js/{129.5fdca64d.js => 129.eeddd15b.js} (99%) rename assets/js/{13.845b3ac4.js => 13.32bb9e8c.js} (97%) rename assets/js/{130.aacd2cdb.js => 130.dcc3b606.js} (99%) rename assets/js/{131.174c03f0.js => 131.0ce33a04.js} (99%) rename assets/js/{132.dc402607.js => 132.db5ef214.js} (99%) rename assets/js/{133.71b40ea8.js => 133.33afab4d.js} (97%) rename assets/js/{134.d6af2ba1.js => 134.84f28a6f.js} (99%) rename assets/js/{135.031ac685.js => 135.7858dd33.js} (99%) rename assets/js/{138.7e763317.js => 138.bd6c2fd9.js} (99%) rename assets/js/{139.77214828.js => 139.6ee53aa4.js} (99%) rename assets/js/{140.3d3f94c2.js => 140.ab030c6a.js} (99%) rename assets/js/{144.5b723479.js => 144.33bc1488.js} (99%) rename assets/js/{145.9382ab60.js => 145.ce11df15.js} (99%) rename assets/js/{15.97374dd5.js => 15.04e9cdd9.js} (99%) rename assets/js/{16.d5fadb1f.js => 16.1a8393dc.js} (99%) rename assets/js/{17.85070bd8.js => 17.abddf148.js} (99%) rename assets/js/{19.142e1664.js => 19.0e2cfbc3.js} (99%) rename assets/js/{20.6aa700a9.js => 20.01e8066c.js} (99%) rename assets/js/{21.f79562fe.js => 21.4776481c.js} (98%) rename assets/js/{22.c36f814f.js => 22.39b444af.js} (98%) rename assets/js/{23.3fc4b8f0.js => 23.2892f1bb.js} (99%) rename assets/js/{24.ff0bd2fa.js => 24.57e15656.js} (99%) rename assets/js/{25.a364ffe9.js => 25.08e6622a.js} (99%) rename assets/js/{26.4d190cda.js => 26.57296ca7.js} (99%) rename assets/js/{27.f7273c62.js => 27.bb3cd6a8.js} (99%) rename assets/js/{28.7895237d.js => 28.d2dff34a.js} (99%) rename assets/js/{29.d8f4cc81.js => 29.8f845fe9.js} (99%) rename assets/js/{3.5bcf211a.js => 3.8d28154b.js} (62%) rename assets/js/{30.94b3175d.js => 30.ea0e974b.js} (99%) rename assets/js/{31.4e810261.js => 31.4b4c7d4b.js} (97%) rename assets/js/{32.ab295dfc.js => 32.067561ac.js} (99%) rename assets/js/{33.720c5bbd.js => 33.29e9d8fb.js} (99%) rename assets/js/{75.15c05bc2.js => 38.d62d2f87.js} (99%) rename assets/js/{39.0b03c921.js => 39.d32d57ec.js} (98%) rename assets/js/{4.1e8ca44e.js => 4.79290685.js} (67%) rename assets/js/{44.94776414.js => 44.b0f6b8e9.js} (99%) rename assets/js/{45.3ba157f9.js => 45.5d19e959.js} (99%) rename assets/js/{48.dc9554ed.js => 48.f154ba5f.js} (99%) rename assets/js/{49.37da269e.js => 49.dc83ea0d.js} (97%) rename assets/js/{50.61cbf8e3.js => 50.f38bbdae.js} (99%) rename assets/js/{51.b4b41ad6.js => 51.229db107.js} (99%) rename assets/js/{38.059132ee.js => 56.f888d1d5.js} (99%) rename assets/js/{76.cf457c63.js => 57.df15705e.js} (98%) rename assets/js/{58.71b16290.js => 58.e749d9b2.js} (98%) rename assets/js/{59.75f73182.js => 59.b36e04a6.js} (99%) rename assets/js/{60.257187e5.js => 60.b2e91e30.js} (99%) rename assets/js/{98.ecfbcf5d.js => 61.692e75d6.js} (99%) rename assets/js/{63.72e4ec3c.js => 63.648d2341.js} (99%) rename assets/js/{64.251500bf.js => 64.33fca94f.js} (99%) rename assets/js/{66.b3f22aae.js => 66.de8e5b74.js} (99%) rename assets/js/{67.d643eaeb.js => 67.b3bfcbbe.js} (99%) rename assets/js/{68.1391041a.js => 68.70e1fec1.js} (97%) rename assets/js/{69.f076f69f.js => 69.59a1ff4e.js} (99%) rename assets/js/{70.21d1fa26.js => 70.d08c86af.js} (99%) rename assets/js/{56.86ca51c4.js => 75.ddf691ed.js} (99%) rename assets/js/{57.84653a3c.js => 76.20b05096.js} (98%) rename assets/js/{77.b62b05f7.js => 77.2586d174.js} (98%) rename assets/js/{78.95a748e7.js => 78.3fb56785.js} (99%) rename assets/js/{8.596f1de1.js => 8.500d8954.js} (99%) rename assets/js/{61.e593a701.js => 80.d5974e7f.js} (99%) rename assets/js/{81.b35c265f.js => 81.c70e41a0.js} (99%) rename assets/js/{83.2c1a7eea.js => 83.b2ae7c60.js} (99%) rename assets/js/{9.ae816606.js => 9.caae5b5a.js} (99%) rename assets/js/{90.14e64fc9.js => 90.7aed6c12.js} (99%) rename assets/js/{12.7bb4f7bb.js => 91.7ca1606c.js} (99%) create mode 100644 assets/js/96.7d2e294a.js delete mode 100644 assets/js/96.e8b2265d.js rename assets/js/{80.fc3ac8ab.js => 98.32aeff0a.js} (99%) rename assets/js/{99.516d8b9f.js => 99.c50280d4.js} (99%) delete mode 100644 assets/js/app.1fdb8a3a.js create mode 100644 assets/js/app.ed2354d3.js diff --git a/404.html b/404.html index 026cf77..53c24a8 100644 --- a/404.html +++ b/404.html @@ -12,13 +12,13 @@ - - + +

404

Looks like we've got some broken links.
Take me home.
- + diff --git a/assets/css/0.styles.844a2aa8.css b/assets/css/0.styles.7f0f2da6.css similarity index 97% rename from assets/css/0.styles.844a2aa8.css rename to assets/css/0.styles.7f0f2da6.css index a1549ee..aae5331 100644 --- a/assets/css/0.styles.844a2aa8.css +++ b/assets/css/0.styles.7f0f2da6.css @@ -1 +1 @@ -code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#db8be7}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#db8be7}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:focus .header-anchor,h1:hover .header-anchor,h2:focus .header-anchor,h2:hover .header-anchor,h3:focus .header-anchor,h3:hover .header-anchor,h4:focus .header-anchor,h4:hover .header-anchor,h5:focus .header-anchor,h5:hover .header-anchor,h6:focus .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:focus,a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}div.theme-default-content:not(.custom){max-width:100%}blockquote{color:#000;border-left:4px solid #64b5f6;border-top:1px solid #64b5f6}.home .hero img{max-height:240px!important}#nprogress{pointer-events:none}#nprogress .bar{background:#db8be7;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #db8be7,0 0 5px #db8be7;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#db8be7 transparent transparent #db8be7;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}html{scroll-behavior:smooth}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#db8be7;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #d16ce1}.home .hero .action-button:hover{background-color:#df97e9}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#db8be7}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#db8be7}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title,.dropdown-wrapper .mobile-dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#2c3e50}.dropdown-wrapper .dropdown-title:hover,.dropdown-wrapper .mobile-dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow,.dropdown-wrapper .mobile-dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .mobile-dropdown-title{display:none;font-weight:600}.dropdown-wrapper .mobile-dropdown-title font-size inherit:hover{color:#db8be7}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:1rem 1.5rem .45rem 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#db8be7}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #db8be7;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{display:none}.dropdown-wrapper .mobile-dropdown-title{display:block}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#db8be7}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #de94e9}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:419px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#767676}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:419px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#2c3e50;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#db8be7;border-left-color:#db8be7}.sidebar-heading.clickable:hover{color:#db8be7}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#2c3e50;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#db8be7}a.sidebar-link.active{font-weight:600;color:#db8be7;border-left-color:#db8be7}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}.badge[data-v-15b7b770]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-15b7b770],.badge.tip[data-v-15b7b770],.badge[data-v-15b7b770]{background-color:#42b983}.badge.error[data-v-15b7b770]{background-color:#da5961}.badge.warn[data-v-15b7b770],.badge.warning[data-v-15b7b770],.badge.yellow[data-v-15b7b770]{background-color:#e7c000}.badge+.badge[data-v-15b7b770]{margin-left:5px}.theme-code-block[data-v-759a7d02]{display:none}.theme-code-block__active[data-v-759a7d02]{display:block}.theme-code-block>pre[data-v-759a7d02]{background-color:orange}.theme-code-group__nav[data-v-deefee04]{margin-bottom:-35px;background-color:#282c34;padding-bottom:22px;border-top-left-radius:6px;border-top-right-radius:6px;padding-left:10px;padding-top:10px}.theme-code-group__ul[data-v-deefee04]{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.theme-code-group__nav-tab[data-v-deefee04]{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:hsla(0,0%,100%,.9);font-weight:600}.theme-code-group__nav-tab-active[data-v-deefee04]{border-bottom:1px solid #42b983}.pre-blank[data-v-deefee04]{color:#42b983} \ No newline at end of file +code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#db8be7}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#db8be7}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:focus .header-anchor,h1:hover .header-anchor,h2:focus .header-anchor,h2:hover .header-anchor,h3:focus .header-anchor,h3:hover .header-anchor,h4:focus .header-anchor,h4:hover .header-anchor,h5:focus .header-anchor,h5:hover .header-anchor,h6:focus .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:focus,a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}div.theme-default-content:not(.custom){max-width:100%}blockquote{color:#000;border-left:4px solid #64b5f6;border-top:1px solid #64b5f6}.home .hero img{max-height:240px!important}#nprogress{pointer-events:none}#nprogress .bar{background:#db8be7;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #db8be7,0 0 5px #db8be7;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#db8be7 transparent transparent #db8be7;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}html{scroll-behavior:smooth}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#db8be7;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #d16ce1}.home .hero .action-button:hover{background-color:#df97e9}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#db8be7}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#db8be7}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title,.dropdown-wrapper .mobile-dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#2c3e50}.dropdown-wrapper .dropdown-title:hover,.dropdown-wrapper .mobile-dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow,.dropdown-wrapper .mobile-dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .mobile-dropdown-title{display:none;font-weight:600}.dropdown-wrapper .mobile-dropdown-title font-size inherit:hover{color:#db8be7}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:1rem 1.5rem .45rem 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#db8be7}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #db8be7;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{display:none}.dropdown-wrapper .mobile-dropdown-title{display:block}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#db8be7}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #de94e9}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:419px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#767676}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:419px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#2c3e50;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#db8be7;border-left-color:#db8be7}.sidebar-heading.clickable:hover{color:#db8be7}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#2c3e50;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#db8be7}a.sidebar-link.active{font-weight:600;color:#db8be7;border-left-color:#db8be7}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}.theme-code-block[data-v-759a7d02]{display:none}.theme-code-block__active[data-v-759a7d02]{display:block}.theme-code-block>pre[data-v-759a7d02]{background-color:orange}.badge[data-v-15b7b770]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-15b7b770],.badge.tip[data-v-15b7b770],.badge[data-v-15b7b770]{background-color:#42b983}.badge.error[data-v-15b7b770]{background-color:#da5961}.badge.warn[data-v-15b7b770],.badge.warning[data-v-15b7b770],.badge.yellow[data-v-15b7b770]{background-color:#e7c000}.badge+.badge[data-v-15b7b770]{margin-left:5px}.theme-code-group__nav[data-v-deefee04]{margin-bottom:-35px;background-color:#282c34;padding-bottom:22px;border-top-left-radius:6px;border-top-right-radius:6px;padding-left:10px;padding-top:10px}.theme-code-group__ul[data-v-deefee04]{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.theme-code-group__nav-tab[data-v-deefee04]{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:hsla(0,0%,100%,.9);font-weight:600}.theme-code-group__nav-tab-active[data-v-deefee04]{border-bottom:1px solid #42b983}.pre-blank[data-v-deefee04]{color:#42b983} \ No newline at end of file diff --git a/assets/js/10.83378578.js b/assets/js/10.a104077a.js similarity index 99% rename from assets/js/10.83378578.js rename to assets/js/10.a104077a.js index a0a7086..d37670a 100644 --- a/assets/js/10.83378578.js +++ b/assets/js/10.a104077a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{389:function(e,t,o){"use strict";o.r(t);var n=o(51),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"decentralized-proof-of-authority-consensus"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#decentralized-proof-of-authority-consensus"}},[e._v("#")]),e._v(" Decentralized Proof-of-Authority Consensus")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("What is Decentralized Proof-of-Authority consensus")])]),e._v(" "),o("li",[o("p",[e._v("Advantages of DPoA consensus")])]),e._v(" "),o("li",[o("p",[e._v("DPoA consensus and common means of attack")])]),e._v(" "),o("li",[o("p",[e._v("Implementation of DPoA consensus in IBAX")])])]),e._v(" "),o("p",[e._v("In this section, we will describe the Decentralized Proof-of-Authority consensus and its implementation in IBAX.")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#what-is-decentralized-proof-of-authority-consensus"}},[e._v("What is Decentralized Proof-of-Authority consensus")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#advantages-of-dpoa-consensus"}},[e._v("Advantages of DPoA consensus")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#dpoa-consensus-and-common-means-of-attack"}},[e._v("DPoA consensus and common means of attack")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#dos"}},[e._v("DoS")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#percent-attack-51"}},[e._v("51 percent attack")])])])]),e._v(" "),o("li",[o("a",{attrs:{href:"#implementation-of-dpoa-consensus-in-ibax"}},[e._v("Implementation of DPoA consensus in IBAX")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#honor-node"}},[e._v("Honor node")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#leader-node"}},[e._v("Leader node")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#generation-of-new-blocks"}},[e._v("Generation of new blocks")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#forks"}},[e._v("Forks")])])])])]),e._v(" "),o("h2",{attrs:{id:"what-is-decentralized-proof-of-authority-consensus"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-is-decentralized-proof-of-authority-consensus"}},[e._v("#")]),e._v(" What is Decentralized Proof-of-Authority consensus")]),e._v(" "),o("p",[e._v("Considering commercial application scenarios and real-world environments, IBAX Network has built a new consensus mechanism, DPoA (Decentralized Proof of Authority).")]),e._v(" "),o("p",[e._v("Decentralization has always been our firm belief. It refers not only to IBAX’s infrastructure network environment. Instead, we will let decentralization take root in each ecoLib created in IBAX Network and use technical solutions to achieve a high degree of self-governance in each of them. For the purpose of highly distributed self-governance, we have made many changes in the overall architecture and technical implementation. However, in practice, we cannot avoid the centralized management concept. In order to find a balance between centralization and decentralization, in addition to the DPoA consensus mechanism, we have also formulated certain reward and incentive programs.")]),e._v(" "),o("p",[e._v("IBAX Network has created a new consensus mechanism that combines distribution, weak centralization, and a certification authority. We call it DPoA (Decentralized Proof of Authority). To ensure continuity for the entire IBAX Network, the consensus covers not only IBAX Public Network, but also ecoLibs created by each user and user group. This creates a truly self-governed, decentralized, fair, transparent, and fraud-proof Decentralized Autonomous Organization (DAO).")]),e._v(" "),o("p",[e._v("DPoA has a prevention mechanism against network attacks and allows creation of Mint Nodes that guard the network and mint new IBXC coins. IBAXCoin holders can stake a part of their IBXC liquidity balance in Mint Nodes for Mint & Stake Emission Rewards. Minting and staking serve to increase the cost and difficulty of attacks and increase the total value of IBXC coins proportionally. With this mechanism, the probability and harm of any attack are infinitely close to zero.")]),e._v(" "),o("h2",{attrs:{id:"advantages-of-dpoa-consensus"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#advantages-of-dpoa-consensus"}},[e._v("#")]),e._v(" Advantages of DPoA consensus")]),e._v(" "),o("p",[e._v("Compared to Proof-of-Work (PoW) or Proof-of-Stake (PoS) consensus, DPoA consensus has the following advantages:")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("No need of high-performance hardware. Compared to PoW consensus, nodes implementing the DPoA consensus does not spend computational resources for solving complex mathematical logic tasks;")])]),e._v(" "),o("li",[o("p",[e._v("The interval of time to generate new blocks is predictable, but that for PoW and PoS consensuses are different;")])]),e._v(" "),o("li",[o("p",[e._v("High transaction rate. Blocks are generated in a sequence at specified time interval by authorized network nodes, which increases the speed of transaction verification.")])]),e._v(" "),o("li",[o("p",[e._v("Tolerance to compromised and malicious nodes, as long as 51% of nodes are not compromised. IBAX implements a mechanism of banning nodes and revoking block generation rights.")])])]),e._v(" "),o("h2",{attrs:{id:"dpoa-consensus-and-common-means-of-attack"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#dpoa-consensus-and-common-means-of-attack"}},[e._v("#")]),e._v(" DPoA consensus and common means of attack")]),e._v(" "),o("h3",{attrs:{id:"dos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#dos"}},[e._v("#")]),e._v(" DoS")]),e._v(" "),o("p",[e._v("An attacker may send large amount of transactions and blocks to a targeted node in the network, making an attempt to disrupt its operation and make its services unavailable.")]),e._v(" "),o("p",[e._v("The DPoA mechanism is possible to defend against DoS attacks:")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("Because network nodes are pre-authenticated, block generation rights can be granted only to nodes that can withstand DoS attacks.")])]),e._v(" "),o("li",[o("p",[e._v("If a honor node is unavailable for a certain period, it can be excluded from the list of honor nodes.")])])]),e._v(" "),o("h3",{attrs:{id:"_51-percent-attack"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_51-percent-attack"}},[e._v("#")]),e._v(" "),o("spn",{attrs:{id:"percent-attack-51"}},[e._v("51 percent attack")])],1),e._v(" "),o("p",[e._v("As to the scenario with the DPoA consensus, the 51% attack requires an attacker to obtain control over 51% of network nodes. But the scenario for the PoW consensus is different, which an attacker needs to obtain 51% of network computational power. Obtaining the control over nodes in a permissioned blockchain network is much harder than obtaining the computational power.")]),e._v(" "),o("p",[e._v("For example, in a network implementing the PoW consensus, an attacker can increase computation power (performance) of the controlled network segment thus increasing the percentage of controlled nodes. This makes no sense for DPoA consensus, because the computational power of the node has no impact on the blockchain network decisions.")]),e._v(" "),o("h2",{attrs:{id:"implementation-of-dpoa-consensus-in-ibax"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#implementation-of-dpoa-consensus-in-ibax"}},[e._v("#")]),e._v(" Implementation of DPoA consensus in IBAX")]),e._v(" "),o("h3",{attrs:{id:"honor-node"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),o("p",[e._v("In IBAX, only honor nodes can generate new blocks, which maintain the blockchain network and the distributed ledger.")]),e._v(" "),o("p",[e._v("The list of honor nodes is kept in the blockchain registry. The order of nodes determines the sequence in which nodes generate new blocks.")]),e._v(" "),o("h3",{attrs:{id:"leader-node"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#leader-node"}},[e._v("#")]),e._v(" Leader node")]),e._v(" "),o("p",[e._v("The following formula determines the current "),o("strong",[e._v("leader node")]),e._v(", i.e. a node that must generate a new block at the current time.")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",{pre:!0,attrs:{class:"language-text"}},[o("code",[e._v("leader = ((time - first) / step) % nodes\n")])])]),o("blockquote",[o("p",[e._v("leader")])]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("Current leader node.\n")])])]),o("blockquote",[o("p",[e._v("time")])]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("Current time (UNIX).\n")])])]),o("blockquote",[o("p",[e._v("first")])]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("First block generation time (UNIX).\n")])])]),o("blockquote",[o("p",[e._v("step")])]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("Number of seconds in the block generation interval.\n")])])]),o("blockquote",[o("p",[e._v("nodes")])]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("Total number of honor nodes.\n")])])]),o("h3",{attrs:{id:"generation-of-new-blocks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#generation-of-new-blocks"}},[e._v("#")]),e._v(" Generation of new blocks")]),e._v(" "),o("p",[e._v("New blocks are generated by a "),o("a",{attrs:{href:"#leader-node"}},[e._v("leader node")]),e._v(" of the current time interval. At each time interval, the leader role is passed to the next honor node from the list of honor nodes.")]),e._v(" "),o("p",[o("img",{attrs:{src:"/block-generation.png",alt:"avatar"}})]),e._v(" "),o("p",[e._v("a) Steps for Generation of new blocks")]),e._v(" "),o("p",[e._v("Main steps for generating a new block are as follows:")]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Collects all new transactions from the transaction queue of the node;")])]),e._v(" "),o("li",[o("p",[e._v("Executes transactions one by one. Invalid or inexecutable transactions are rejected;")])]),e._v(" "),o("li",[o("p",[e._v("Checks if the "),o("RouterLink",{attrs:{to:"/reference/platform-parameters.html#configure-the-generation-of-blocks"}},[e._v("block generation limits")]),e._v(" is in compliance;")],1)]),e._v(" "),o("li",[o("p",[e._v("Generates a block with valid transactions and signs it with the private key of the honor node through the ECDSA algorithm;")])]),e._v(" "),o("li",[o("p",[e._v("Sends this block to other honor nodes.")])])]),e._v(" "),o("p",[e._v("b) Verification of new blocks")]),e._v(" "),o("p",[e._v("Steps for verifying new blocks on other honor nodes:")]),e._v(" "),o("p",[e._v("1.Receive a new block and verify:")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("– whether the new block was generated by the leader node of a current interval;\n\n– whether there are no other blocks generated by the leader node of a current interval;\n\n– whether the new block is properly signed. \n")])])]),o("ol",{attrs:{start:"2"}},[o("li",[o("p",[e._v("Execute transactions from the block one by one. Check whether the transactions are executed successfully and within the "),o("RouterLink",{attrs:{to:"/reference/platform-parameters.html#configure-the-generation-of-blocks"}},[e._v("block generation limits")]),e._v(" .")],1)]),e._v(" "),o("li",[o("p",[e._v("Add or reject the block, depending on the previous step:")]),e._v(" "),o("p",[e._v("– If block validation is successful, add the new block to the blockchain of the current node;")]),e._v(" "),o("p",[e._v("– If block validation failed, reject the block and send a "),o("strong",[e._v("bad block")]),e._v(" transaction;")]),e._v(" "),o("p",[e._v("– If the honor node that created this invalid block continues to generate bad blocks, it can be banned or excluded from the list of honor nodes.")])])]),e._v(" "),o("h3",{attrs:{id:"forks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#forks"}},[e._v("#")]),e._v(" Forks")]),e._v(" "),o("p",[e._v("A "),o("strong",[e._v("fork")]),e._v(" is an alternative version of the blockchain, which contains one or more blocks that were generated independently from the rest of the blockchain.")]),e._v(" "),o("p",[e._v("Forks usually occur when a part of the network becomes desynchronized. Factors that are probably result in forks are high network latency, intentional or unintentional time limits violation, time desynchronization at nodes. If network nodes have a significant geographic distribution, block generation interval must be increased.")]),e._v(" "),o("p",[e._v("Forks are resolved by following the longest blockchain rule. When two blockchain versions are detected, honor nodes rollback the shorter one and accept the longer one.")]),e._v(" "),o("p",[o("img",{attrs:{src:"/block-fork-resolution.png",alt:"avatar"}})])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{392:function(e,t,o){"use strict";o.r(t);var n=o(51),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"decentralized-proof-of-authority-consensus"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#decentralized-proof-of-authority-consensus"}},[e._v("#")]),e._v(" Decentralized Proof-of-Authority Consensus")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("What is Decentralized Proof-of-Authority consensus")])]),e._v(" "),o("li",[o("p",[e._v("Advantages of DPoA consensus")])]),e._v(" "),o("li",[o("p",[e._v("DPoA consensus and common means of attack")])]),e._v(" "),o("li",[o("p",[e._v("Implementation of DPoA consensus in IBAX")])])]),e._v(" "),o("p",[e._v("In this section, we will describe the Decentralized Proof-of-Authority consensus and its implementation in IBAX.")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#what-is-decentralized-proof-of-authority-consensus"}},[e._v("What is Decentralized Proof-of-Authority consensus")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#advantages-of-dpoa-consensus"}},[e._v("Advantages of DPoA consensus")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#dpoa-consensus-and-common-means-of-attack"}},[e._v("DPoA consensus and common means of attack")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#dos"}},[e._v("DoS")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#percent-attack-51"}},[e._v("51 percent attack")])])])]),e._v(" "),o("li",[o("a",{attrs:{href:"#implementation-of-dpoa-consensus-in-ibax"}},[e._v("Implementation of DPoA consensus in IBAX")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"#honor-node"}},[e._v("Honor node")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#leader-node"}},[e._v("Leader node")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#generation-of-new-blocks"}},[e._v("Generation of new blocks")])]),e._v(" "),o("li",[o("a",{attrs:{href:"#forks"}},[e._v("Forks")])])])])]),e._v(" "),o("h2",{attrs:{id:"what-is-decentralized-proof-of-authority-consensus"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#what-is-decentralized-proof-of-authority-consensus"}},[e._v("#")]),e._v(" What is Decentralized Proof-of-Authority consensus")]),e._v(" "),o("p",[e._v("Considering commercial application scenarios and real-world environments, IBAX Network has built a new consensus mechanism, DPoA (Decentralized Proof of Authority).")]),e._v(" "),o("p",[e._v("Decentralization has always been our firm belief. It refers not only to IBAX’s infrastructure network environment. Instead, we will let decentralization take root in each ecoLib created in IBAX Network and use technical solutions to achieve a high degree of self-governance in each of them. For the purpose of highly distributed self-governance, we have made many changes in the overall architecture and technical implementation. However, in practice, we cannot avoid the centralized management concept. In order to find a balance between centralization and decentralization, in addition to the DPoA consensus mechanism, we have also formulated certain reward and incentive programs.")]),e._v(" "),o("p",[e._v("IBAX Network has created a new consensus mechanism that combines distribution, weak centralization, and a certification authority. We call it DPoA (Decentralized Proof of Authority). To ensure continuity for the entire IBAX Network, the consensus covers not only IBAX Public Network, but also ecoLibs created by each user and user group. This creates a truly self-governed, decentralized, fair, transparent, and fraud-proof Decentralized Autonomous Organization (DAO).")]),e._v(" "),o("p",[e._v("DPoA has a prevention mechanism against network attacks and allows creation of Mint Nodes that guard the network and mint new IBXC coins. IBAXCoin holders can stake a part of their IBXC liquidity balance in Mint Nodes for Mint & Stake Emission Rewards. Minting and staking serve to increase the cost and difficulty of attacks and increase the total value of IBXC coins proportionally. With this mechanism, the probability and harm of any attack are infinitely close to zero.")]),e._v(" "),o("h2",{attrs:{id:"advantages-of-dpoa-consensus"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#advantages-of-dpoa-consensus"}},[e._v("#")]),e._v(" Advantages of DPoA consensus")]),e._v(" "),o("p",[e._v("Compared to Proof-of-Work (PoW) or Proof-of-Stake (PoS) consensus, DPoA consensus has the following advantages:")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("No need of high-performance hardware. Compared to PoW consensus, nodes implementing the DPoA consensus does not spend computational resources for solving complex mathematical logic tasks;")])]),e._v(" "),o("li",[o("p",[e._v("The interval of time to generate new blocks is predictable, but that for PoW and PoS consensuses are different;")])]),e._v(" "),o("li",[o("p",[e._v("High transaction rate. Blocks are generated in a sequence at specified time interval by authorized network nodes, which increases the speed of transaction verification.")])]),e._v(" "),o("li",[o("p",[e._v("Tolerance to compromised and malicious nodes, as long as 51% of nodes are not compromised. IBAX implements a mechanism of banning nodes and revoking block generation rights.")])])]),e._v(" "),o("h2",{attrs:{id:"dpoa-consensus-and-common-means-of-attack"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#dpoa-consensus-and-common-means-of-attack"}},[e._v("#")]),e._v(" DPoA consensus and common means of attack")]),e._v(" "),o("h3",{attrs:{id:"dos"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#dos"}},[e._v("#")]),e._v(" DoS")]),e._v(" "),o("p",[e._v("An attacker may send large amount of transactions and blocks to a targeted node in the network, making an attempt to disrupt its operation and make its services unavailable.")]),e._v(" "),o("p",[e._v("The DPoA mechanism is possible to defend against DoS attacks:")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("Because network nodes are pre-authenticated, block generation rights can be granted only to nodes that can withstand DoS attacks.")])]),e._v(" "),o("li",[o("p",[e._v("If a honor node is unavailable for a certain period, it can be excluded from the list of honor nodes.")])])]),e._v(" "),o("h3",{attrs:{id:"_51-percent-attack"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#_51-percent-attack"}},[e._v("#")]),e._v(" "),o("spn",{attrs:{id:"percent-attack-51"}},[e._v("51 percent attack")])],1),e._v(" "),o("p",[e._v("As to the scenario with the DPoA consensus, the 51% attack requires an attacker to obtain control over 51% of network nodes. But the scenario for the PoW consensus is different, which an attacker needs to obtain 51% of network computational power. Obtaining the control over nodes in a permissioned blockchain network is much harder than obtaining the computational power.")]),e._v(" "),o("p",[e._v("For example, in a network implementing the PoW consensus, an attacker can increase computation power (performance) of the controlled network segment thus increasing the percentage of controlled nodes. This makes no sense for DPoA consensus, because the computational power of the node has no impact on the blockchain network decisions.")]),e._v(" "),o("h2",{attrs:{id:"implementation-of-dpoa-consensus-in-ibax"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#implementation-of-dpoa-consensus-in-ibax"}},[e._v("#")]),e._v(" Implementation of DPoA consensus in IBAX")]),e._v(" "),o("h3",{attrs:{id:"honor-node"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),o("p",[e._v("In IBAX, only honor nodes can generate new blocks, which maintain the blockchain network and the distributed ledger.")]),e._v(" "),o("p",[e._v("The list of honor nodes is kept in the blockchain registry. The order of nodes determines the sequence in which nodes generate new blocks.")]),e._v(" "),o("h3",{attrs:{id:"leader-node"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#leader-node"}},[e._v("#")]),e._v(" Leader node")]),e._v(" "),o("p",[e._v("The following formula determines the current "),o("strong",[e._v("leader node")]),e._v(", i.e. a node that must generate a new block at the current time.")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",{pre:!0,attrs:{class:"language-text"}},[o("code",[e._v("leader = ((time - first) / step) % nodes\n")])])]),o("blockquote",[o("p",[e._v("leader")])]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("Current leader node.\n")])])]),o("blockquote",[o("p",[e._v("time")])]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("Current time (UNIX).\n")])])]),o("blockquote",[o("p",[e._v("first")])]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("First block generation time (UNIX).\n")])])]),o("blockquote",[o("p",[e._v("step")])]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("Number of seconds in the block generation interval.\n")])])]),o("blockquote",[o("p",[e._v("nodes")])]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("Total number of honor nodes.\n")])])]),o("h3",{attrs:{id:"generation-of-new-blocks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#generation-of-new-blocks"}},[e._v("#")]),e._v(" Generation of new blocks")]),e._v(" "),o("p",[e._v("New blocks are generated by a "),o("a",{attrs:{href:"#leader-node"}},[e._v("leader node")]),e._v(" of the current time interval. At each time interval, the leader role is passed to the next honor node from the list of honor nodes.")]),e._v(" "),o("p",[o("img",{attrs:{src:"/block-generation.png",alt:"avatar"}})]),e._v(" "),o("p",[e._v("a) Steps for Generation of new blocks")]),e._v(" "),o("p",[e._v("Main steps for generating a new block are as follows:")]),e._v(" "),o("ol",[o("li",[o("p",[e._v("Collects all new transactions from the transaction queue of the node;")])]),e._v(" "),o("li",[o("p",[e._v("Executes transactions one by one. Invalid or inexecutable transactions are rejected;")])]),e._v(" "),o("li",[o("p",[e._v("Checks if the "),o("RouterLink",{attrs:{to:"/reference/platform-parameters.html#configure-the-generation-of-blocks"}},[e._v("block generation limits")]),e._v(" is in compliance;")],1)]),e._v(" "),o("li",[o("p",[e._v("Generates a block with valid transactions and signs it with the private key of the honor node through the ECDSA algorithm;")])]),e._v(" "),o("li",[o("p",[e._v("Sends this block to other honor nodes.")])])]),e._v(" "),o("p",[e._v("b) Verification of new blocks")]),e._v(" "),o("p",[e._v("Steps for verifying new blocks on other honor nodes:")]),e._v(" "),o("p",[e._v("1.Receive a new block and verify:")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("– whether the new block was generated by the leader node of a current interval;\n\n– whether there are no other blocks generated by the leader node of a current interval;\n\n– whether the new block is properly signed. \n")])])]),o("ol",{attrs:{start:"2"}},[o("li",[o("p",[e._v("Execute transactions from the block one by one. Check whether the transactions are executed successfully and within the "),o("RouterLink",{attrs:{to:"/reference/platform-parameters.html#configure-the-generation-of-blocks"}},[e._v("block generation limits")]),e._v(" .")],1)]),e._v(" "),o("li",[o("p",[e._v("Add or reject the block, depending on the previous step:")]),e._v(" "),o("p",[e._v("– If block validation is successful, add the new block to the blockchain of the current node;")]),e._v(" "),o("p",[e._v("– If block validation failed, reject the block and send a "),o("strong",[e._v("bad block")]),e._v(" transaction;")]),e._v(" "),o("p",[e._v("– If the honor node that created this invalid block continues to generate bad blocks, it can be banned or excluded from the list of honor nodes.")])])]),e._v(" "),o("h3",{attrs:{id:"forks"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#forks"}},[e._v("#")]),e._v(" Forks")]),e._v(" "),o("p",[e._v("A "),o("strong",[e._v("fork")]),e._v(" is an alternative version of the blockchain, which contains one or more blocks that were generated independently from the rest of the blockchain.")]),e._v(" "),o("p",[e._v("Forks usually occur when a part of the network becomes desynchronized. Factors that are probably result in forks are high network latency, intentional or unintentional time limits violation, time desynchronization at nodes. If network nodes have a significant geographic distribution, block generation interval must be increased.")]),e._v(" "),o("p",[e._v("Forks are resolved by following the longest blockchain rule. When two blockchain versions are detected, honor nodes rollback the shorter one and accept the longer one.")]),e._v(" "),o("p",[o("img",{attrs:{src:"/block-fork-resolution.png",alt:"avatar"}})])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/102.93011a96.js b/assets/js/102.cd09eeac.js similarity index 99% rename from assets/js/102.93011a96.js rename to assets/js/102.cd09eeac.js index bab117b..3aa3f61 100644 --- a/assets/js/102.93011a96.js +++ b/assets/js/102.cd09eeac.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{482:function(e,t,a){"use strict";a.r(t);var s=a(51),n=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"tutorial-for-application-development"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tutorial-for-application-development"}},[e._v("#")]),e._v(" Tutorial for application development")]),e._v(" "),a("p",[e._v("In this section, we will show you how to develop a simple application on the IBAX Network.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-goal"}},[e._v("The Goal")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-1-the-environment"}},[e._v("Part 1: The Environment")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-2-contract"}},[e._v("Part 2: Contract")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#creator-account"}},[e._v("Creator account")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-application"}},[e._v("New application")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-database-table"}},[e._v("New database table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-contract"}},[e._v("New contract")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contract-code"}},[e._v("Contract code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#create-a-contract"}},[e._v("Create a contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("Contract name")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#conditions"}},[e._v("Conditions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#action"}},[e._v("Action")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#full-contract-code"}},[e._v("Full contract code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#save-and-run"}},[e._v("Save and run")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-3-page"}},[e._v("Part 3: Page")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#new-field"}},[e._v("New field")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#update-the-contract"}},[e._v("Update the contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page"}},[e._v("Page")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#designer-views"}},[e._v("Designer views")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#developer-view"}},[e._v("Developer view")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fetch-data-from-the-database-table"}},[e._v("Fetch data from the database table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#save-the-page"}},[e._v("Save the page")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-4-application"}},[e._v("Part 4: Application")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#menu"}},[e._v("Menu")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#add-a-menu-item"}},[e._v("Add a menu item")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#test-the-new-menu-item"}},[e._v("Test the new menu item")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#send-a-message"}},[e._v("Send a message")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#form"}},[e._v("Form")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#form-navigation"}},[e._v("Form navigation")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#navigation-buttons"}},[e._v("Navigation buttons")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#variables"}},[e._v("Variables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#entry-count"}},[e._v("Entry count")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-offset"}},[e._v("Table offset")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#button-code"}},[e._v("Button code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-refreshing"}},[e._v("Page refreshing")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#conclusions"}},[e._v("Conclusions")])])]),e._v(" "),a("h2",{attrs:{id:"the-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-goal"}},[e._v("#")]),e._v(" The Goal")]),e._v(" "),a("p",[e._v("The application begins with simple functions but grows in complexity as the tutorial progresses.")]),e._v(" "),a("p",[e._v("In the final version of the application, some simple messages (strings) are stored in a database table, which contains the timestamps and account identifiers of senders. Users can view the messages list and add a new message from the application page which can be accessed from the menu of the ecosystem.")]),e._v(" "),a("h2",{attrs:{id:"part-1-the-environment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-1-the-environment"}},[e._v("#")]),e._v(" Part 1: The Environment")]),e._v(" "),a("p",[a("strong",[e._v("Weaver")])]),e._v(" "),a("p",[e._v("As the only client of IBAX, Weaver provides functions for all users and ecosystem roles. With it, application developers can develop and test their applications, ecosystem administrators can manage their ecosystems, while users can interact with the ecosystems.")]),e._v(" "),a("p",[e._v("In this tutorial, you are going to code contracts, page templates and perform all other actions in Weaver. Weaver also provides a way to restore, save and execute contract codes, manage data structures (database tables), assign access permissions and create applications.")]),e._v(" "),a("p",[e._v("Each node has its own Weaver instance.")]),e._v(" "),a("h2",{attrs:{id:"part-2-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-2-contract"}},[e._v("#")]),e._v(" Part 2: Contract")]),e._v(" "),a("p",[e._v('Your first simple application is "Hello, World!".')]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("In this application, strings will be stored in a database table, and there is not a user page.")])]),e._v(" "),a("h3",{attrs:{id:"creator-account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creator-account"}},[e._v("#")]),e._v(" Creator account")]),e._v(" "),a("p",[e._v('Accounts with the Developer role will be assigned the "root" privileges of the ecosystem. By default, this role can access all actions. In a new ecosystem, the creator account will be assigned the Admin role, which you must use it to introduce major changes to the ecosystem, such as creating new applications and database tables.')]),e._v(" "),a("p",[e._v("Log in to the ecosystem using the creator account.")]),e._v(" "),a("h3",{attrs:{id:"new-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-application"}},[e._v("#")]),e._v(" New application")]),e._v(" "),a("p",[e._v("Once you logged in as the ecosystem creator, you can create a new application.")]),e._v(" "),a("p",[e._v("Create a new application:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Go to the Developer tab;")])]),e._v(" "),a("li",[a("p",[e._v("Select Application in the menu at the left;")])]),e._v(" "),a("li",[a("p",[e._v("Select New at the application page;")])]),e._v(" "),a("li",[a("p",[e._v("Specify the application name in the Name field;")])]),e._v(" "),a("li",[a("p",[e._v("Set Conditions to "),a("code",[e._v("true")]),e._v(";")])])]),e._v(" "),a("p",[a("code",[e._v("true")]),e._v(" means anyone can make changes to the application;")]),e._v(" "),a("p",[e._v("Another option is "),a("code",[e._v('ContractConditions("MainCondition")')]),e._v(", which means no one can make changes to the application except for the creator.")]),e._v(" "),a("ol",{attrs:{start:"6"}},[a("li",[e._v("Your application will be displayed in the applications list, click the Name field of a specific application to activate it.")])]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("You can access relevant resources by clicking an application in the Developer tab, no impact on the ecosystem. No matter which one you choose, all ecosystem applications are still available.")])]),e._v(" "),a("h3",{attrs:{id:"new-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-database-table"}},[e._v("#")]),e._v(" New database table")]),e._v(" "),a("p",[e._v("To store the data, create a database table for the application in Weaver.")]),e._v(" "),a("p",[e._v("Create a data table:")]),e._v(" "),a("ol",[a("li",[e._v("In the Developer tab, select Application - Name > Database table;")])]),e._v(" "),a("p",[e._v("All database tables in relation to the application selected will be displayed here. If the list is empty, then, no database tables have been created for your application yet.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click New;")])]),e._v(" "),a("p",[e._v("Weaver will show you the page to create a new database table.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Specify the name in the Name field;")])]),e._v(" "),a("p",[e._v("In this tutorial, the name of the database table will be "),a("code",[e._v("apptable")]),e._v(".")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Add the "),a("code",[e._v("message")]),e._v(" column, set its type as "),a("code",[e._v("Text")]),e._v(";")])]),e._v(" "),a("p",[e._v("This table must have two columns: "),a("code",[e._v("id")]),e._v(" (predefine) and "),a("code",[e._v("message")]),e._v(". You are going to add more columns later.")]),e._v(" "),a("ol",{attrs:{start:"5"}},[a("li",[e._v("With respect to the read and write permissions, set each field to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("p",[e._v("This will allow anyone to insert, update entries, add columns and read entry data on the database table;")]),e._v(" "),a("p",[e._v("As an option, you may reserve the read and write permissions to the creator account. In this case, set this field to "),a("code",[e._v('ContractConditions("MainCondition")')]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"new-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-contract"}},[e._v("#")]),e._v(" New contract")]),e._v(" "),a("h4",{attrs:{id:"contract-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-code"}},[e._v("#")]),e._v(" Contract code")]),e._v(" "),a("p",[e._v("Each contract has three parts. For more details, please see: "),a("RouterLink",{attrs:{to:"/ja/topics/script.html#contract-structure"}},[e._v("Contract structure")]),e._v("。")],1),e._v(" "),a("h4",{attrs:{id:"create-a-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-contract"}},[e._v("#")]),e._v(" Create a contract")]),e._v(" "),a("ol",[a("li",[e._v("In the Developer tab, select Application - Name > Contract;")])]),e._v(" "),a("p",[e._v("All contracts in relation to the application will be displayed here. The list is empty for new applications.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click New;")])]),e._v(" "),a("p",[e._v("A new contract template will be displayed in the editor.")]),e._v(" "),a("p",[e._v("An empty contract template is shown as below:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("contract ... {\n data {\n\n }\n conditions {\n\n }\n action {\n\n }\n}\n")])])]),a("h4",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" Contract name")]),e._v(" "),a("p",[e._v("First, please specify the contract name.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" contract AppContract {\n\n }\n")])])]),a("h4",{attrs:{id:"data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[e._v("#")]),e._v(" Data")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("data")]),e._v(" section.")]),e._v(" "),a("p",[e._v("In the following example, "),a("code",[e._v("Message")]),e._v(" refers to the variable name, while "),a("code",[e._v("string")]),e._v(" the variable type.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" data {\n Message string\n }\n")])])]),a("h4",{attrs:{id:"conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conditions"}},[e._v("#")]),e._v(" Conditions")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("conditions")]),e._v(" section. A simple verification condition is to avoid empty strings. If the length of "),a("code",[e._v("Message")]),e._v(" is "),a("code",[e._v("0")]),e._v(", a predefined warning message will be triggered when implementing the contract.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n}\n')])])]),a("h4",{attrs:{id:"action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#action"}},[e._v("#")]),e._v(" Action")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("action")]),e._v(" section. A simple action is to write "),a("code",[e._v("Message")]),e._v(" into the data table.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' action {\n DBInsert("apptable", {message: $Message})\n }\n')])])]),a("h4",{attrs:{id:"full-contract-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-contract-code"}},[e._v("#")]),e._v(" Full contract code")]),e._v(" "),a("p",[e._v("The full contract code is shown below.")]),e._v(" "),a("p",[e._v("All contracts in IBAX will be constructed like this, including the "),a("code",[e._v("data")]),e._v(", "),a("code",[e._v("conditions")]),e._v(" and "),a("code",[e._v("action")]),e._v(" sections.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('contract AppContract {\n data {\n Message string\n }\n conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n }\n action {\n DBInsert("apptable", {message: $Message})\n }\n}\n')])])]),a("h4",{attrs:{id:"save-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-and-run"}},[e._v("#")]),e._v(" Save and run")]),e._v(" "),a("p",[e._v("Now, we are preparing to test the contract:")]),e._v(" "),a("ol",[a("li",[e._v("Click Save in the editor's menu;")])]),e._v(" "),a("p",[e._v("This will update the contract code, and the updated version will be available to all network nodes.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click Run in the editor's menu;")])]),e._v(" "),a("p",[e._v("This will display the Run the Contract page.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("In the Run the Contract page, fill in the input parameters of the contract;")])]),e._v(" "),a("p",[e._v("As this contract has one parameter "),a("code",[e._v("Message")]),e._v(", set "),a("code",[e._v("Message")]),e._v(" at the Key field and "),a("code",[e._v("Hello, World")]),e._v(" at the Value field.")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Click Run.")])]),e._v(" "),a("p",[e._v("The result will be displayed at the right.")]),e._v(" "),a("p",[e._v("If successfully added some strings, then, the result will contain the block ID and result code to introduce the change of transactions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "block": "31",\n "result": null\n}\n')])])]),a("h2",{attrs:{id:"part-3-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-3-page"}},[e._v("#")]),e._v(" Part 3: Page")]),e._v(" "),a("p",[e._v("When the contract becomes effective, it is time to extend it to something useful. In this part, you are going to implement the UI and other functions.")]),e._v(" "),a("p",[e._v("Note")]),e._v(" "),a("p",[e._v("In this application, strings will be stored in a database table, like entries in a log. Each string will have an author and timestamp.")]),e._v(" "),a("p",[e._v("Users can view the list of strings stored at the application page, which is shown as a simple form then.")]),e._v(" "),a("h3",{attrs:{id:"new-field"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-field"}},[e._v("#")]),e._v(" New field")]),e._v(" "),a("p",[e._v("As with the previous, edit the database table at the Developer tab > Application - Name > Database table page;")]),e._v(" "),a("p",[e._v("Add the following fields into "),a("code",[e._v("apptable")]),e._v(":")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("author")]),e._v(" , field type "),a("code",[e._v("Number")]),e._v(", set Change to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("p",[e._v("This field will store the identifier of the author account.")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("timestamp")]),e._v(" , field type "),a("code",[e._v("Date/Time")]),e._v(", set Change to "),a("code",[e._v("true")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"update-the-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-the-contract"}},[e._v("#")]),e._v(" Update the contract")]),e._v(" "),a("p",[e._v("We will update the contract code to handle the author ID and timestamp.")]),e._v(" "),a("p",[e._v("The author ID is the account ID of the ecosystem. The timestamp is the date and time executing the contract in Unix time format.")]),e._v(" "),a("p",[e._v("As both values are provided by the "),a("RouterLink",{attrs:{to:"/ja/topics/script.html#variables"}},[e._v("Predefined variables")]),e._v(" and no need to input or verify the predefined variables, they can only be updated in the action part.")],1),e._v(" "),a("p",[e._v("Update the contract to write the author ID and timestamp into the database table when adding a message, among which the author ID is defined by "),a("code",[e._v("$key_id")]),e._v(", while the timestamp by "),a("code",[e._v("$time")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('action {\n DBInsert("apptable", {message: $Message, author: $key_id, timestamp: $time})\n}\n')])])]),a("h3",{attrs:{id:"page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page"}},[e._v("#")]),e._v(" Page")]),e._v(" "),a("p",[e._v("For the application page, it is a simple page where displays the messages stored in the database table.")]),e._v(" "),a("p",[e._v("Like all other resources, you can create the UI page in Weaver:")]),e._v(" "),a("p",[e._v("1.Navigate to the Developer tab, click Application - Name > Page;")]),e._v(" "),a("p",[e._v("2.Click New;\nThe visual designer will be opened in a new tab.")]),e._v(" "),a("h4",{attrs:{id:"designer-views"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#designer-views"}},[e._v("#")]),e._v(" Designer views")]),e._v(" "),a("p",[e._v("The default page is empty. You can use the predefine structure to quickly fill in the page.")]),e._v(" "),a("p",[e._v("Create a basic table:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("In the view selector at the right, click Designer;\nThe view will be switched to the visual designer.")])]),e._v(" "),a("li",[a("p",[e._v("In the menu at the left, select Table With Header and drag it on to the page.\nA table with multiple elements will be displayed on the page.")])])]),e._v(" "),a("h4",{attrs:{id:"developer-view"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#developer-view"}},[e._v("#")]),e._v(" Developer view")]),e._v(" "),a("p",[e._v("As the user page of IBAX is coded with a "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html"}},[e._v("Template Language")]),e._v(", please switch to the Developer view when writing the page code.")],1),e._v(" "),a("p",[e._v("Switch to the Developer view.")]),e._v(" "),a("ol",[a("li",[e._v("In the view selector at the right, click Developer.")])]),e._v(" "),a("p",[e._v("The view will be switched to the editor with a tab holding the page code.")]),e._v(" "),a("h4",{attrs:{id:"fetch-data-from-the-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-data-from-the-database-table"}},[e._v("#")]),e._v(" Fetch data from the database table")]),e._v(" "),a("p",[e._v("So far, nothing done with the page template. In the next, we will update the code to allow the page to display data from "),a("code",[e._v("apptable")]),e._v(".")]),e._v(" "),a("ol",[a("li",[e._v("To request data from the database table with the "),a("RouterLink",{attrs:{to:"/ja/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function;")],1)]),e._v(" "),a("p",[e._v("In the following example, this function call is used to fetch data from "),a("code",[e._v("apptable")]),e._v(". The data will be put it in the source "),a("code",[e._v("src_table")]),e._v(" and sorted by the timestamp field. "),a("code",[e._v("src_table")]),e._v(" will be later used as the data source for the page in table view.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n')])])]),a("ol",{attrs:{start:"2"}},[a("li",[e._v("To display the data from "),a("code",[e._v("src_table")]),e._v(", specify it as the data source and the header in the "),a("code",[e._v("Table")]),e._v(" function.")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n')])])]),a("ol",{attrs:{start:"3"}},[a("li",[e._v("In the view selector at the right, click Preview to check whether the data is displayed correctly.")])]),e._v(" "),a("h4",{attrs:{id:"full-page-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-page-code"}},[e._v("#")]),e._v(" Full page code")]),e._v(" "),a("p",[e._v("The following is the full page code for this part. This basic page will be expanded later.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n\nDiv(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n Button(Class: btn btn-primary, Contract: ContractName, Body: More)\n }\n}\n\n')])])]),a("h4",{attrs:{id:"save-the-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-the-page"}},[e._v("#")]),e._v(" Save the page")]),e._v(" "),a("p",[e._v("Click Save to save the page:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Specify "),a("code",[e._v("AppPage")]),e._v(" or any other name for the page in the Page Name field;")])]),e._v(" "),a("li",[a("p",[e._v("Select "),a("code",[e._v("default_menu")]),e._v(" in the Menu;")])]),e._v(" "),a("li",[a("p",[e._v("Set Conditions to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Click OK.")])])]),e._v(" "),a("h2",{attrs:{id:"part-4-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-4-application"}},[e._v("#")]),e._v(" Part 4: Application")]),e._v(" "),a("p",[e._v("In the previous sections, you created a contract, a table to store data, and a basic UI page to display that data.")]),e._v(" "),a("p",[e._v("In this part, you are going to finalize the application to make its appearance and actions are similar to an actual one.")]),e._v(" "),a("h3",{attrs:{id:"menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#menu"}},[e._v("#")]),e._v(" Menu")]),e._v(" "),a("p",[e._v("The page needs to be linked to a menu, for example, "),a("code",[e._v("default_page")]),e._v(" displayed on the Home tab is linked to the default ecosystem menu "),a("code",[e._v("default_menu")]),e._v(".")]),e._v(" "),a("p",[e._v("As this application tutorial is very simple (only having one page), there is no need to create a separate menu for it. The new menu item in the default menu is sufficient.")]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("You can define the page menu by editing the page properties at the Developer tab > Application - Name > Page. For example, if your app has multiple pages, you may need to create a menu to navigate between these pages and assign it to all pages of the app.")])]),e._v(" "),a("h4",{attrs:{id:"add-a-menu-item"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-a-menu-item"}},[e._v("#")]),e._v(" Add a menu item")]),e._v(" "),a("p",[e._v("Like all other resources, menus can be created and edited in Weaver:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Navigate to the Developer tab > Menu;")])]),e._v(" "),a("li",[a("p",[e._v("Click the Name of the "),a("code",[e._v("default_menu")]),e._v(" entry;")])])]),e._v(" "),a("p",[e._v("A new tab will be opened in the editor.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Add a new menu item to the end of the template, which will be linked to open the application page and its icon comes from the "),a("a",{attrs:{href:"https://fontawesome.com/icons",target:"_blank",rel:"noopener noreferrer"}},[e._v("FontAwesome"),a("OutboundLink")],1),e._v(" icon set.")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' MenuItem(Title:Messages, Page:AppPage, Icon:"fa fa-envelope")\n')])])]),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Click Save.")])]),e._v(" "),a("h4",{attrs:{id:"test-the-new-menu-item"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#test-the-new-menu-item"}},[e._v("#")]),e._v(" Test the new menu item")]),e._v(" "),a("p",[e._v("Check whether the new menu item is valid:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Open the Home tab;")])]),e._v(" "),a("li",[a("p",[e._v("Click Refresh in the menu;")]),e._v(" "),a("p",[e._v("An entry with a header of Messages will appear;")])]),e._v(" "),a("li",[a("p",[e._v("Click Messages.")]),e._v(" "),a("p",[e._v("The application page will be opened.")])])]),e._v(" "),a("h3",{attrs:{id:"send-a-message"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-a-message"}},[e._v("#")]),e._v(" Send a message")]),e._v(" "),a("p",[e._v("The buttons in Logicor can be used to implement contracts and open pages, depending on the parameters.")]),e._v(" "),a("p",[e._v("The "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html#button"}},[e._v("Button")]),e._v(" function has two contract parameters:")],1),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("Contract")])]),e._v(" "),a("p",[e._v("Name of the contract activated.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("Params")])]),e._v(" "),a("p",[e._v("Input parameters of the contract.")])])]),e._v(" "),a("h4",{attrs:{id:"form"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),a("p",[e._v("To send data to the contract, add a form on the application page, which must have an input field for a message and a button to activate the contract AppContract.")]),e._v(" "),a("p",[e._v("The following is an example of this type of form. It is nested in its own "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html#div"}},[e._v("Div")]),e._v(". Putting it after the Div element that contains the form view, which defines that the "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html#input"}},[e._v("Input")]),e._v(" field has a predefine name "),a("code",[e._v("message_input")]),e._v(". The button uses this name to send the value of "),a("code",[e._v("Message")]),e._v(" to the contract. Finally, the "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html#calling-contracts"}},[e._v("Val")]),e._v(" function is used to get the value of the input field.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)")\n }\n}\n')])])]),a("p",[e._v("You may notice that when testing this new feature by sending a message, the form does not refresh. This will be introduced in "),a("a",{attrs:{href:"#page-refreshing"}},[e._v("page refresh")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"form-navigation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#form-navigation"}},[e._v("#")]),e._v(" Form navigation")]),e._v(" "),a("p",[e._v("Under the default view, the form on the page can only display 25 entries on the first page. Hence, you can add some simple buttons to navigate users to all form entries.")]),e._v(" "),a("h4",{attrs:{id:"navigation-buttons"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#navigation-buttons"}},[e._v("#")]),e._v(" Navigation buttons")]),e._v(" "),a("p",[e._v("There will be two navigation buttons, and each of them could reload the application page and pass the parameters to it.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The Previous button will display the first 25 entries. If there are no other entries, the button will not be displayed;")])]),e._v(" "),a("li",[a("p",[e._v("The Next button will display the next 25 entries. If there are no other entries, the button will not be displayed.")])])]),e._v(" "),a("h4",{attrs:{id:"variables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#variables"}},[e._v("#")]),e._v(" Variables")]),e._v(" "),a("p",[e._v("The navigation buttons require two variables to store the table view states:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("#table_view_offset#")])])]),e._v(" "),a("p",[e._v("This variable stores the offset of current table view.")]),e._v(" "),a("p",[e._v("The navigation buttons will pass it as a parameter when the page is reloaded.")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("#record_count#")])])]),e._v(" "),a("p",[e._v("This variable stores the total number of entries in the table.")]),e._v(" "),a("p",[e._v("The value will be calculated.")]),e._v(" "),a("h4",{attrs:{id:"entry-count"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#entry-count"}},[e._v("#")]),e._v(" Entry count")]),e._v(" "),a("p",[e._v("To count "),a("code",[e._v("#record_count#")]),e._v(", please modify the existing "),a("RouterLink",{attrs:{to:"/ja/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function call. The variable specified in the "),a("code",[e._v(".count()")]),e._v(" call will store the entry count.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count)\n')])])]),a("h4",{attrs:{id:"table-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-offset"}},[e._v("#")]),e._v(" Table offset")]),e._v(" "),a("p",[e._v("The table view offset must be passed to the page when the page is opened. If "),a("code",[e._v("#table_view_offset#")]),e._v(" does not get a value, set it to 0.")]),e._v(" "),a("p",[e._v("Add the following code to the top of the page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("If(GetVar(table_view_offset)){\n\n}.Else{\n SetVar(table_view_offset, 0)\n}\n")])])]),a("p",[e._v("Modify the "),a("RouterLink",{attrs:{to:"/ja/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function call again. This time it must use the new table view offset.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n')])])]),a("h4",{attrs:{id:"button-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#button-code"}},[e._v("#")]),e._v(" Button code")]),e._v(" "),a("p",[e._v("Find the "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html#div"}},[e._v("Div")]),e._v(" function call that defines the footer: "),a("code",[e._v("Div(Class:panel-footer text-right)")]),e._v(". Add the button code into it.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Div(Class: panel-footer text-right) {\n}\n")])])]),a("p",[e._v("The "),a("em",[e._v("Previous")]),e._v(" button will only appear if there is at least one Next to return. When adding a button, the new table view offset "),a("code",[e._v("offset_previous")]),e._v(" of the page will be calculated. The parameters are passed to "),a("code",[e._v("PageParams")]),e._v(" of the reopened page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n}\n')])])]),a("p",[e._v("The Next button will only be displayed when the total number of records is greater than the number displayed on the page. When a button is added, the new table view offset "),a("code",[e._v("offset_next")]),e._v(" of the page will be calculated. The parameters are passed to "),a("code",[e._v("PageParams")]),e._v(" of the reopened page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n}\n')])])]),a("p",[e._v("After adding these buttons, save the page and test it from the Home > Messages menu item.")]),e._v(" "),a("h4",{attrs:{id:"page-refreshing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-refreshing"}},[e._v("#")]),e._v(" Page refreshing")]),e._v(" "),a("p",[e._v("The last function to be implemented is to automatically update the table on the page. When users send a new message, it must be displayed in the table.")]),e._v(" "),a("p",[e._v("In addition to implementing the contract, you may also use the Send button to reopen the current page to achieve the same. "),a("code",[e._v("#table_view_offset#")]),e._v(" must be passed to the page without any change.")]),e._v(" "),a("p",[e._v("Add "),a("code",[e._v("Page")]),e._v(" and "),a("code",[e._v("PageParams")]),e._v(" to the Send button, the code is as follows:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n')])])]),a("h3",{attrs:{id:"full-page-code-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-page-code-2"}},[e._v("#")]),e._v(" Full page code")]),e._v(" "),a("p",[e._v("This part describes many changes to the application page. The following is the full code of the application page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(GetVar(table_view_offset)){\n}.Else{\n SetVar(table_view_offset, 0)\n}\nDBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n Div(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n }\n If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n }\n }\n }\n Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n }\n}\n')])])]),a("h2",{attrs:{id:"conclusions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conclusions"}},[e._v("#")]),e._v(" Conclusions")]),e._v(" "),a("p",[e._v("Instead of expounding other important topics for application developers, such as layout styles, access permissions management and interaction between applications and resources, this tutorial introduces how to create a basic application for an ecosystem. For more information on these advanced topics, see other relevant documents.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{483:function(e,t,a){"use strict";a.r(t);var s=a(51),n=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"tutorial-for-application-development"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tutorial-for-application-development"}},[e._v("#")]),e._v(" Tutorial for application development")]),e._v(" "),a("p",[e._v("In this section, we will show you how to develop a simple application on the IBAX Network.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-goal"}},[e._v("The Goal")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-1-the-environment"}},[e._v("Part 1: The Environment")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-2-contract"}},[e._v("Part 2: Contract")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#creator-account"}},[e._v("Creator account")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-application"}},[e._v("New application")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-database-table"}},[e._v("New database table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-contract"}},[e._v("New contract")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contract-code"}},[e._v("Contract code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#create-a-contract"}},[e._v("Create a contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("Contract name")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#conditions"}},[e._v("Conditions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#action"}},[e._v("Action")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#full-contract-code"}},[e._v("Full contract code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#save-and-run"}},[e._v("Save and run")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-3-page"}},[e._v("Part 3: Page")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#new-field"}},[e._v("New field")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#update-the-contract"}},[e._v("Update the contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page"}},[e._v("Page")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#designer-views"}},[e._v("Designer views")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#developer-view"}},[e._v("Developer view")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fetch-data-from-the-database-table"}},[e._v("Fetch data from the database table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#save-the-page"}},[e._v("Save the page")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-4-application"}},[e._v("Part 4: Application")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#menu"}},[e._v("Menu")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#add-a-menu-item"}},[e._v("Add a menu item")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#test-the-new-menu-item"}},[e._v("Test the new menu item")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#send-a-message"}},[e._v("Send a message")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#form"}},[e._v("Form")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#form-navigation"}},[e._v("Form navigation")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#navigation-buttons"}},[e._v("Navigation buttons")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#variables"}},[e._v("Variables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#entry-count"}},[e._v("Entry count")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-offset"}},[e._v("Table offset")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#button-code"}},[e._v("Button code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-refreshing"}},[e._v("Page refreshing")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#conclusions"}},[e._v("Conclusions")])])]),e._v(" "),a("h2",{attrs:{id:"the-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-goal"}},[e._v("#")]),e._v(" The Goal")]),e._v(" "),a("p",[e._v("The application begins with simple functions but grows in complexity as the tutorial progresses.")]),e._v(" "),a("p",[e._v("In the final version of the application, some simple messages (strings) are stored in a database table, which contains the timestamps and account identifiers of senders. Users can view the messages list and add a new message from the application page which can be accessed from the menu of the ecosystem.")]),e._v(" "),a("h2",{attrs:{id:"part-1-the-environment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-1-the-environment"}},[e._v("#")]),e._v(" Part 1: The Environment")]),e._v(" "),a("p",[a("strong",[e._v("Weaver")])]),e._v(" "),a("p",[e._v("As the only client of IBAX, Weaver provides functions for all users and ecosystem roles. With it, application developers can develop and test their applications, ecosystem administrators can manage their ecosystems, while users can interact with the ecosystems.")]),e._v(" "),a("p",[e._v("In this tutorial, you are going to code contracts, page templates and perform all other actions in Weaver. Weaver also provides a way to restore, save and execute contract codes, manage data structures (database tables), assign access permissions and create applications.")]),e._v(" "),a("p",[e._v("Each node has its own Weaver instance.")]),e._v(" "),a("h2",{attrs:{id:"part-2-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-2-contract"}},[e._v("#")]),e._v(" Part 2: Contract")]),e._v(" "),a("p",[e._v('Your first simple application is "Hello, World!".')]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("In this application, strings will be stored in a database table, and there is not a user page.")])]),e._v(" "),a("h3",{attrs:{id:"creator-account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creator-account"}},[e._v("#")]),e._v(" Creator account")]),e._v(" "),a("p",[e._v('Accounts with the Developer role will be assigned the "root" privileges of the ecosystem. By default, this role can access all actions. In a new ecosystem, the creator account will be assigned the Admin role, which you must use it to introduce major changes to the ecosystem, such as creating new applications and database tables.')]),e._v(" "),a("p",[e._v("Log in to the ecosystem using the creator account.")]),e._v(" "),a("h3",{attrs:{id:"new-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-application"}},[e._v("#")]),e._v(" New application")]),e._v(" "),a("p",[e._v("Once you logged in as the ecosystem creator, you can create a new application.")]),e._v(" "),a("p",[e._v("Create a new application:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Go to the Developer tab;")])]),e._v(" "),a("li",[a("p",[e._v("Select Application in the menu at the left;")])]),e._v(" "),a("li",[a("p",[e._v("Select New at the application page;")])]),e._v(" "),a("li",[a("p",[e._v("Specify the application name in the Name field;")])]),e._v(" "),a("li",[a("p",[e._v("Set Conditions to "),a("code",[e._v("true")]),e._v(";")])])]),e._v(" "),a("p",[a("code",[e._v("true")]),e._v(" means anyone can make changes to the application;")]),e._v(" "),a("p",[e._v("Another option is "),a("code",[e._v('ContractConditions("MainCondition")')]),e._v(", which means no one can make changes to the application except for the creator.")]),e._v(" "),a("ol",{attrs:{start:"6"}},[a("li",[e._v("Your application will be displayed in the applications list, click the Name field of a specific application to activate it.")])]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("You can access relevant resources by clicking an application in the Developer tab, no impact on the ecosystem. No matter which one you choose, all ecosystem applications are still available.")])]),e._v(" "),a("h3",{attrs:{id:"new-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-database-table"}},[e._v("#")]),e._v(" New database table")]),e._v(" "),a("p",[e._v("To store the data, create a database table for the application in Weaver.")]),e._v(" "),a("p",[e._v("Create a data table:")]),e._v(" "),a("ol",[a("li",[e._v("In the Developer tab, select Application - Name > Database table;")])]),e._v(" "),a("p",[e._v("All database tables in relation to the application selected will be displayed here. If the list is empty, then, no database tables have been created for your application yet.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click New;")])]),e._v(" "),a("p",[e._v("Weaver will show you the page to create a new database table.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Specify the name in the Name field;")])]),e._v(" "),a("p",[e._v("In this tutorial, the name of the database table will be "),a("code",[e._v("apptable")]),e._v(".")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Add the "),a("code",[e._v("message")]),e._v(" column, set its type as "),a("code",[e._v("Text")]),e._v(";")])]),e._v(" "),a("p",[e._v("This table must have two columns: "),a("code",[e._v("id")]),e._v(" (predefine) and "),a("code",[e._v("message")]),e._v(". You are going to add more columns later.")]),e._v(" "),a("ol",{attrs:{start:"5"}},[a("li",[e._v("With respect to the read and write permissions, set each field to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("p",[e._v("This will allow anyone to insert, update entries, add columns and read entry data on the database table;")]),e._v(" "),a("p",[e._v("As an option, you may reserve the read and write permissions to the creator account. In this case, set this field to "),a("code",[e._v('ContractConditions("MainCondition")')]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"new-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-contract"}},[e._v("#")]),e._v(" New contract")]),e._v(" "),a("h4",{attrs:{id:"contract-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-code"}},[e._v("#")]),e._v(" Contract code")]),e._v(" "),a("p",[e._v("Each contract has three parts. For more details, please see: "),a("RouterLink",{attrs:{to:"/ja/topics/script.html#contract-structure"}},[e._v("Contract structure")]),e._v("。")],1),e._v(" "),a("h4",{attrs:{id:"create-a-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-contract"}},[e._v("#")]),e._v(" Create a contract")]),e._v(" "),a("ol",[a("li",[e._v("In the Developer tab, select Application - Name > Contract;")])]),e._v(" "),a("p",[e._v("All contracts in relation to the application will be displayed here. The list is empty for new applications.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click New;")])]),e._v(" "),a("p",[e._v("A new contract template will be displayed in the editor.")]),e._v(" "),a("p",[e._v("An empty contract template is shown as below:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("contract ... {\n data {\n\n }\n conditions {\n\n }\n action {\n\n }\n}\n")])])]),a("h4",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" Contract name")]),e._v(" "),a("p",[e._v("First, please specify the contract name.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" contract AppContract {\n\n }\n")])])]),a("h4",{attrs:{id:"data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[e._v("#")]),e._v(" Data")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("data")]),e._v(" section.")]),e._v(" "),a("p",[e._v("In the following example, "),a("code",[e._v("Message")]),e._v(" refers to the variable name, while "),a("code",[e._v("string")]),e._v(" the variable type.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" data {\n Message string\n }\n")])])]),a("h4",{attrs:{id:"conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conditions"}},[e._v("#")]),e._v(" Conditions")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("conditions")]),e._v(" section. A simple verification condition is to avoid empty strings. If the length of "),a("code",[e._v("Message")]),e._v(" is "),a("code",[e._v("0")]),e._v(", a predefined warning message will be triggered when implementing the contract.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n}\n')])])]),a("h4",{attrs:{id:"action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#action"}},[e._v("#")]),e._v(" Action")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("action")]),e._v(" section. A simple action is to write "),a("code",[e._v("Message")]),e._v(" into the data table.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' action {\n DBInsert("apptable", {message: $Message})\n }\n')])])]),a("h4",{attrs:{id:"full-contract-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-contract-code"}},[e._v("#")]),e._v(" Full contract code")]),e._v(" "),a("p",[e._v("The full contract code is shown below.")]),e._v(" "),a("p",[e._v("All contracts in IBAX will be constructed like this, including the "),a("code",[e._v("data")]),e._v(", "),a("code",[e._v("conditions")]),e._v(" and "),a("code",[e._v("action")]),e._v(" sections.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('contract AppContract {\n data {\n Message string\n }\n conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n }\n action {\n DBInsert("apptable", {message: $Message})\n }\n}\n')])])]),a("h4",{attrs:{id:"save-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-and-run"}},[e._v("#")]),e._v(" Save and run")]),e._v(" "),a("p",[e._v("Now, we are preparing to test the contract:")]),e._v(" "),a("ol",[a("li",[e._v("Click Save in the editor's menu;")])]),e._v(" "),a("p",[e._v("This will update the contract code, and the updated version will be available to all network nodes.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click Run in the editor's menu;")])]),e._v(" "),a("p",[e._v("This will display the Run the Contract page.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("In the Run the Contract page, fill in the input parameters of the contract;")])]),e._v(" "),a("p",[e._v("As this contract has one parameter "),a("code",[e._v("Message")]),e._v(", set "),a("code",[e._v("Message")]),e._v(" at the Key field and "),a("code",[e._v("Hello, World")]),e._v(" at the Value field.")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Click Run.")])]),e._v(" "),a("p",[e._v("The result will be displayed at the right.")]),e._v(" "),a("p",[e._v("If successfully added some strings, then, the result will contain the block ID and result code to introduce the change of transactions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "block": "31",\n "result": null\n}\n')])])]),a("h2",{attrs:{id:"part-3-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-3-page"}},[e._v("#")]),e._v(" Part 3: Page")]),e._v(" "),a("p",[e._v("When the contract becomes effective, it is time to extend it to something useful. In this part, you are going to implement the UI and other functions.")]),e._v(" "),a("p",[e._v("Note")]),e._v(" "),a("p",[e._v("In this application, strings will be stored in a database table, like entries in a log. Each string will have an author and timestamp.")]),e._v(" "),a("p",[e._v("Users can view the list of strings stored at the application page, which is shown as a simple form then.")]),e._v(" "),a("h3",{attrs:{id:"new-field"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-field"}},[e._v("#")]),e._v(" New field")]),e._v(" "),a("p",[e._v("As with the previous, edit the database table at the Developer tab > Application - Name > Database table page;")]),e._v(" "),a("p",[e._v("Add the following fields into "),a("code",[e._v("apptable")]),e._v(":")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("author")]),e._v(" , field type "),a("code",[e._v("Number")]),e._v(", set Change to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("p",[e._v("This field will store the identifier of the author account.")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("timestamp")]),e._v(" , field type "),a("code",[e._v("Date/Time")]),e._v(", set Change to "),a("code",[e._v("true")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"update-the-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-the-contract"}},[e._v("#")]),e._v(" Update the contract")]),e._v(" "),a("p",[e._v("We will update the contract code to handle the author ID and timestamp.")]),e._v(" "),a("p",[e._v("The author ID is the account ID of the ecosystem. The timestamp is the date and time executing the contract in Unix time format.")]),e._v(" "),a("p",[e._v("As both values are provided by the "),a("RouterLink",{attrs:{to:"/ja/topics/script.html#variables"}},[e._v("Predefined variables")]),e._v(" and no need to input or verify the predefined variables, they can only be updated in the action part.")],1),e._v(" "),a("p",[e._v("Update the contract to write the author ID and timestamp into the database table when adding a message, among which the author ID is defined by "),a("code",[e._v("$key_id")]),e._v(", while the timestamp by "),a("code",[e._v("$time")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('action {\n DBInsert("apptable", {message: $Message, author: $key_id, timestamp: $time})\n}\n')])])]),a("h3",{attrs:{id:"page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page"}},[e._v("#")]),e._v(" Page")]),e._v(" "),a("p",[e._v("For the application page, it is a simple page where displays the messages stored in the database table.")]),e._v(" "),a("p",[e._v("Like all other resources, you can create the UI page in Weaver:")]),e._v(" "),a("p",[e._v("1.Navigate to the Developer tab, click Application - Name > Page;")]),e._v(" "),a("p",[e._v("2.Click New;\nThe visual designer will be opened in a new tab.")]),e._v(" "),a("h4",{attrs:{id:"designer-views"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#designer-views"}},[e._v("#")]),e._v(" Designer views")]),e._v(" "),a("p",[e._v("The default page is empty. You can use the predefine structure to quickly fill in the page.")]),e._v(" "),a("p",[e._v("Create a basic table:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("In the view selector at the right, click Designer;\nThe view will be switched to the visual designer.")])]),e._v(" "),a("li",[a("p",[e._v("In the menu at the left, select Table With Header and drag it on to the page.\nA table with multiple elements will be displayed on the page.")])])]),e._v(" "),a("h4",{attrs:{id:"developer-view"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#developer-view"}},[e._v("#")]),e._v(" Developer view")]),e._v(" "),a("p",[e._v("As the user page of IBAX is coded with a "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html"}},[e._v("Template Language")]),e._v(", please switch to the Developer view when writing the page code.")],1),e._v(" "),a("p",[e._v("Switch to the Developer view.")]),e._v(" "),a("ol",[a("li",[e._v("In the view selector at the right, click Developer.")])]),e._v(" "),a("p",[e._v("The view will be switched to the editor with a tab holding the page code.")]),e._v(" "),a("h4",{attrs:{id:"fetch-data-from-the-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-data-from-the-database-table"}},[e._v("#")]),e._v(" Fetch data from the database table")]),e._v(" "),a("p",[e._v("So far, nothing done with the page template. In the next, we will update the code to allow the page to display data from "),a("code",[e._v("apptable")]),e._v(".")]),e._v(" "),a("ol",[a("li",[e._v("To request data from the database table with the "),a("RouterLink",{attrs:{to:"/ja/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function;")],1)]),e._v(" "),a("p",[e._v("In the following example, this function call is used to fetch data from "),a("code",[e._v("apptable")]),e._v(". The data will be put it in the source "),a("code",[e._v("src_table")]),e._v(" and sorted by the timestamp field. "),a("code",[e._v("src_table")]),e._v(" will be later used as the data source for the page in table view.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n')])])]),a("ol",{attrs:{start:"2"}},[a("li",[e._v("To display the data from "),a("code",[e._v("src_table")]),e._v(", specify it as the data source and the header in the "),a("code",[e._v("Table")]),e._v(" function.")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n')])])]),a("ol",{attrs:{start:"3"}},[a("li",[e._v("In the view selector at the right, click Preview to check whether the data is displayed correctly.")])]),e._v(" "),a("h4",{attrs:{id:"full-page-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-page-code"}},[e._v("#")]),e._v(" Full page code")]),e._v(" "),a("p",[e._v("The following is the full page code for this part. This basic page will be expanded later.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n\nDiv(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n Button(Class: btn btn-primary, Contract: ContractName, Body: More)\n }\n}\n\n')])])]),a("h4",{attrs:{id:"save-the-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-the-page"}},[e._v("#")]),e._v(" Save the page")]),e._v(" "),a("p",[e._v("Click Save to save the page:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Specify "),a("code",[e._v("AppPage")]),e._v(" or any other name for the page in the Page Name field;")])]),e._v(" "),a("li",[a("p",[e._v("Select "),a("code",[e._v("default_menu")]),e._v(" in the Menu;")])]),e._v(" "),a("li",[a("p",[e._v("Set Conditions to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Click OK.")])])]),e._v(" "),a("h2",{attrs:{id:"part-4-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-4-application"}},[e._v("#")]),e._v(" Part 4: Application")]),e._v(" "),a("p",[e._v("In the previous sections, you created a contract, a table to store data, and a basic UI page to display that data.")]),e._v(" "),a("p",[e._v("In this part, you are going to finalize the application to make its appearance and actions are similar to an actual one.")]),e._v(" "),a("h3",{attrs:{id:"menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#menu"}},[e._v("#")]),e._v(" Menu")]),e._v(" "),a("p",[e._v("The page needs to be linked to a menu, for example, "),a("code",[e._v("default_page")]),e._v(" displayed on the Home tab is linked to the default ecosystem menu "),a("code",[e._v("default_menu")]),e._v(".")]),e._v(" "),a("p",[e._v("As this application tutorial is very simple (only having one page), there is no need to create a separate menu for it. The new menu item in the default menu is sufficient.")]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("You can define the page menu by editing the page properties at the Developer tab > Application - Name > Page. For example, if your app has multiple pages, you may need to create a menu to navigate between these pages and assign it to all pages of the app.")])]),e._v(" "),a("h4",{attrs:{id:"add-a-menu-item"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-a-menu-item"}},[e._v("#")]),e._v(" Add a menu item")]),e._v(" "),a("p",[e._v("Like all other resources, menus can be created and edited in Weaver:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Navigate to the Developer tab > Menu;")])]),e._v(" "),a("li",[a("p",[e._v("Click the Name of the "),a("code",[e._v("default_menu")]),e._v(" entry;")])])]),e._v(" "),a("p",[e._v("A new tab will be opened in the editor.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Add a new menu item to the end of the template, which will be linked to open the application page and its icon comes from the "),a("a",{attrs:{href:"https://fontawesome.com/icons",target:"_blank",rel:"noopener noreferrer"}},[e._v("FontAwesome"),a("OutboundLink")],1),e._v(" icon set.")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' MenuItem(Title:Messages, Page:AppPage, Icon:"fa fa-envelope")\n')])])]),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Click Save.")])]),e._v(" "),a("h4",{attrs:{id:"test-the-new-menu-item"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#test-the-new-menu-item"}},[e._v("#")]),e._v(" Test the new menu item")]),e._v(" "),a("p",[e._v("Check whether the new menu item is valid:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Open the Home tab;")])]),e._v(" "),a("li",[a("p",[e._v("Click Refresh in the menu;")]),e._v(" "),a("p",[e._v("An entry with a header of Messages will appear;")])]),e._v(" "),a("li",[a("p",[e._v("Click Messages.")]),e._v(" "),a("p",[e._v("The application page will be opened.")])])]),e._v(" "),a("h3",{attrs:{id:"send-a-message"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-a-message"}},[e._v("#")]),e._v(" Send a message")]),e._v(" "),a("p",[e._v("The buttons in Logicor can be used to implement contracts and open pages, depending on the parameters.")]),e._v(" "),a("p",[e._v("The "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html#button"}},[e._v("Button")]),e._v(" function has two contract parameters:")],1),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("Contract")])]),e._v(" "),a("p",[e._v("Name of the contract activated.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("Params")])]),e._v(" "),a("p",[e._v("Input parameters of the contract.")])])]),e._v(" "),a("h4",{attrs:{id:"form"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),a("p",[e._v("To send data to the contract, add a form on the application page, which must have an input field for a message and a button to activate the contract AppContract.")]),e._v(" "),a("p",[e._v("The following is an example of this type of form. It is nested in its own "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html#div"}},[e._v("Div")]),e._v(". Putting it after the Div element that contains the form view, which defines that the "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html#input"}},[e._v("Input")]),e._v(" field has a predefine name "),a("code",[e._v("message_input")]),e._v(". The button uses this name to send the value of "),a("code",[e._v("Message")]),e._v(" to the contract. Finally, the "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html#calling-contracts"}},[e._v("Val")]),e._v(" function is used to get the value of the input field.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)")\n }\n}\n')])])]),a("p",[e._v("You may notice that when testing this new feature by sending a message, the form does not refresh. This will be introduced in "),a("a",{attrs:{href:"#page-refreshing"}},[e._v("page refresh")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"form-navigation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#form-navigation"}},[e._v("#")]),e._v(" Form navigation")]),e._v(" "),a("p",[e._v("Under the default view, the form on the page can only display 25 entries on the first page. Hence, you can add some simple buttons to navigate users to all form entries.")]),e._v(" "),a("h4",{attrs:{id:"navigation-buttons"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#navigation-buttons"}},[e._v("#")]),e._v(" Navigation buttons")]),e._v(" "),a("p",[e._v("There will be two navigation buttons, and each of them could reload the application page and pass the parameters to it.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The Previous button will display the first 25 entries. If there are no other entries, the button will not be displayed;")])]),e._v(" "),a("li",[a("p",[e._v("The Next button will display the next 25 entries. If there are no other entries, the button will not be displayed.")])])]),e._v(" "),a("h4",{attrs:{id:"variables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#variables"}},[e._v("#")]),e._v(" Variables")]),e._v(" "),a("p",[e._v("The navigation buttons require two variables to store the table view states:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("#table_view_offset#")])])]),e._v(" "),a("p",[e._v("This variable stores the offset of current table view.")]),e._v(" "),a("p",[e._v("The navigation buttons will pass it as a parameter when the page is reloaded.")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("#record_count#")])])]),e._v(" "),a("p",[e._v("This variable stores the total number of entries in the table.")]),e._v(" "),a("p",[e._v("The value will be calculated.")]),e._v(" "),a("h4",{attrs:{id:"entry-count"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#entry-count"}},[e._v("#")]),e._v(" Entry count")]),e._v(" "),a("p",[e._v("To count "),a("code",[e._v("#record_count#")]),e._v(", please modify the existing "),a("RouterLink",{attrs:{to:"/ja/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function call. The variable specified in the "),a("code",[e._v(".count()")]),e._v(" call will store the entry count.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count)\n')])])]),a("h4",{attrs:{id:"table-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-offset"}},[e._v("#")]),e._v(" Table offset")]),e._v(" "),a("p",[e._v("The table view offset must be passed to the page when the page is opened. If "),a("code",[e._v("#table_view_offset#")]),e._v(" does not get a value, set it to 0.")]),e._v(" "),a("p",[e._v("Add the following code to the top of the page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("If(GetVar(table_view_offset)){\n\n}.Else{\n SetVar(table_view_offset, 0)\n}\n")])])]),a("p",[e._v("Modify the "),a("RouterLink",{attrs:{to:"/ja/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function call again. This time it must use the new table view offset.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n')])])]),a("h4",{attrs:{id:"button-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#button-code"}},[e._v("#")]),e._v(" Button code")]),e._v(" "),a("p",[e._v("Find the "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html#div"}},[e._v("Div")]),e._v(" function call that defines the footer: "),a("code",[e._v("Div(Class:panel-footer text-right)")]),e._v(". Add the button code into it.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Div(Class: panel-footer text-right) {\n}\n")])])]),a("p",[e._v("The "),a("em",[e._v("Previous")]),e._v(" button will only appear if there is at least one Next to return. When adding a button, the new table view offset "),a("code",[e._v("offset_previous")]),e._v(" of the page will be calculated. The parameters are passed to "),a("code",[e._v("PageParams")]),e._v(" of the reopened page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n}\n')])])]),a("p",[e._v("The Next button will only be displayed when the total number of records is greater than the number displayed on the page. When a button is added, the new table view offset "),a("code",[e._v("offset_next")]),e._v(" of the page will be calculated. The parameters are passed to "),a("code",[e._v("PageParams")]),e._v(" of the reopened page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n}\n')])])]),a("p",[e._v("After adding these buttons, save the page and test it from the Home > Messages menu item.")]),e._v(" "),a("h4",{attrs:{id:"page-refreshing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-refreshing"}},[e._v("#")]),e._v(" Page refreshing")]),e._v(" "),a("p",[e._v("The last function to be implemented is to automatically update the table on the page. When users send a new message, it must be displayed in the table.")]),e._v(" "),a("p",[e._v("In addition to implementing the contract, you may also use the Send button to reopen the current page to achieve the same. "),a("code",[e._v("#table_view_offset#")]),e._v(" must be passed to the page without any change.")]),e._v(" "),a("p",[e._v("Add "),a("code",[e._v("Page")]),e._v(" and "),a("code",[e._v("PageParams")]),e._v(" to the Send button, the code is as follows:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n')])])]),a("h3",{attrs:{id:"full-page-code-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-page-code-2"}},[e._v("#")]),e._v(" Full page code")]),e._v(" "),a("p",[e._v("This part describes many changes to the application page. The following is the full code of the application page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(GetVar(table_view_offset)){\n}.Else{\n SetVar(table_view_offset, 0)\n}\nDBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n Div(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n }\n If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n }\n }\n }\n Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n }\n}\n')])])]),a("h2",{attrs:{id:"conclusions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conclusions"}},[e._v("#")]),e._v(" Conclusions")]),e._v(" "),a("p",[e._v("Instead of expounding other important topics for application developers, such as layout styles, access permissions management and interaction between applications and resources, this tutorial introduces how to create a basic application for an ecosystem. For more information on these advanced topics, see other relevant documents.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/103.7288a5c6.js b/assets/js/103.16fa40de.js similarity index 99% rename from assets/js/103.7288a5c6.js rename to assets/js/103.16fa40de.js index f4f68e6..db6311f 100644 --- a/assets/js/103.7288a5c6.js +++ b/assets/js/103.16fa40de.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{484:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/ja/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/ja/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/ja/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/ja/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/ja/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/ja/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/ja/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/ja/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{482:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/ja/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/ja/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/ja/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/ja/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/ja/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/ja/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/ja/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/ja/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/ja/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/104.8f885d74.js b/assets/js/104.8698471e.js similarity index 99% rename from assets/js/104.8f885d74.js rename to assets/js/104.8698471e.js index 20385c3..adf15d8 100644 --- a/assets/js/104.8f885d74.js +++ b/assets/js/104.8698471e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{486:function(e,t,a){"use strict";a.r(t);var s=a(51),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[e._v("#")]),e._v(" RESTful API v2")]),e._v(" "),a("p",[e._v("Weaver\nAll functions provided, including authentication, ecosystem data reception, error handling, database table manipulation, page and contract execution are available through\nIBAX Blockchain Platform's REST API is available.")]),e._v(" "),a("p",[e._v("By using the REST API, developers can access any of the platform's features without using Weaver.")]),e._v(" "),a("p",[e._v("API command calls are executed by addressing "),a("code",[e._v("/api/v2/command/[param]")]),e._v(", where "),a("code",[e._v("command")]),e._v("\nis the command name and "),a("code",[e._v("param")]),e._v(" is the additional parameter. The request parameters must be specified using the\n"),a("code",[e._v("Content-Type: x-www-form-urlencoded")]),e._v("\nThe format is sent. The server response result is in JSON format.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-response-handling"}},[e._v("Error response handling")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-list"}},[e._v("Error list")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#request-type"}},[e._v("Request Type")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#authentication-interface"}},[e._v("Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[e._v("getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#login"}},[e._v("login")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#server-side-command-interface"}},[e._v("Server Side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#version"}},[e._v("version")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-request-function-interface"}},[e._v("Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#balance"}},[e._v("balance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blocks"}},[e._v("blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#keyinfo"}},[e._v("keyinfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#wallethistory"}},[e._v("walletHistory")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#get-metrics-interface"}},[e._v("Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-honornodes"}},[e._v("metrics/honornodes")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-interface"}},[e._v("Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ecosystemname"}},[e._v("ecosystemname")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[e._v("appparams/{appID}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparams"}},[e._v("ecosystemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-name"}},[e._v("table/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-column-id"}},[e._v("row/{name}/{column}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#systemparams"}},[e._v("systemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-function-interface"}},[e._v("Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sendtx"}},[e._v("sendTX")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[e._v("txstatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[e._v("txinfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content"}},[e._v("content")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[e._v("maxblockid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[e._v("block/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[e._v("updnotificator")])])])])]),e._v(" "),a("h2",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Return status in case of successful request execution\n"),a("code",[e._v("200")]),e._v(". If an error occurs, in addition to the error status, a JSON object with the following fields will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("error")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error identifier.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("msg")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error text message.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")])]),e._v(" "),a("blockquote",[a("p",[e._v("An array of additional parameters that can be placed in the error message.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('400 (Bad request)\nContent-Type: application/json\n{\n "err": "E_INVALIDWALLET",\n "msg": "Wallet 1234-5678-9012-3444-3488 is not valid",\n "params": ["1234-5678-9012-3444-3488"]\n}\n')])])]),a("h3",{attrs:{id:"error-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-list"}},[e._v("#")]),e._v(" Error list")]),e._v(" "),a("blockquote",[a("p",[e._v("E_CONTRACT")])]),e._v(" "),a("p",[e._v("No "),a("code",[e._v("%s")]),e._v(" contract exists")]),e._v(" "),a("blockquote",[a("p",[e._v("E_DBNIL")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database is empty\n")])])]),a("blockquote",[a("p",[e._v("E_DELETEDKEY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address is frozen\n")])])]),a("blockquote",[a("p",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Ecosystem `%d` does not exist\n")])])]),a("blockquote",[a("p",[e._v("E_EMPTYPUBLIC")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Invalid account public key\n")])])]),a("blockquote",[a("p",[e._v("E_KEYNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address not found\n")])])]),a("blockquote",[a("p",[e._v("E_HASHWRONG")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect hash\n")])])]),a("blockquote",[a("p",[e._v("E_HASHNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Hash not found\n")])])]),a("blockquote",[a("p",[e._v("E_HEAVYPAGE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Too much page loading\n")])])]),a("blockquote",[a("p",[e._v("E_INVALIDWALLET")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Wallet address `%s` Invalid\n")])])]),a("blockquote",[a("p",[e._v("E_LIMITTXSIZE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The transaction size has exceeded the limit\n")])])]),a("blockquote",[a("p",[e._v("E_NOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Page or menu content not found\n")])])]),a("blockquote",[a("p",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Parameters not found\n")])])]),a("blockquote",[a("p",[e._v("E_PERMISSION")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("No permission\n")])])]),a("blockquote",[a("p",[e._v("E_QUERY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database query error\n")])])]),a("blockquote",[a("p",[e._v("E_RECOVERED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("API panic error occurs.\n\nIf a panic error occurs, an error is returned.\n\nThis error means that you have encountered a bug that needs to be found and fixed.\n")])])]),a("blockquote",[a("p",[e._v("E_SERVER")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Server error.\n\nReturn if there is an error in the golang library function. The \\*msg\\* field contains the error text message.\n\n**E_SERVER** may appear in response to any command Error. \nIf it occurs due to an incorrect input parameter, it can be changed to a related error. In another case, this error reports an invalid operation or incorrect system configuration, which requires a more detailed investigation report.\n")])])]),a("blockquote",[a("p",[e._v("E_SIGNATURE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect signature\n")])])]),a("blockquote",[a("p",[e._v("E_STATELOGIN")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("`%s` is not a member of the ecosystem `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Data sheet `%s` not found\n")])])]),a("blockquote",[a("p",[e._v("E_TOKENEXPIRED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The session has expired `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_UNAUTHORIZED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unauthorized.\n\nIn case no login is performed or the session expires, \nexcept for `getuid, login` Any command other than **E_UNAUTHORIZED** returns an error.\n")])])]),a("blockquote",[a("p",[e._v("E_UNKNOWNUID")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unknown UID\n")])])]),a("blockquote",[a("p",[e._v("E_UPDATING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Nodes are updating the blockchain\n")])])]),a("blockquote",[a("p",[e._v("E_STOPPING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Node is stopped\n")])])]),a("blockquote",[a("p",[e._v("E_NOTIMPLEMENTED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Not yet achieved\n")])])]),a("blockquote",[a("p",[e._v("E_BANNED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("This account address is prohibited in `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_CHECKROLE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Access denied\n\nCLB Unavailable Interface\n")])])]),a("hr"),e._v(" "),a("blockquote",[a("p",[e._v("Interface requests for which the CLB node is not available.")])]),e._v(" "),a("ul",[a("li",[e._v("metrics")]),e._v(" "),a("li",[e._v("txinfo")]),e._v(" "),a("li",[e._v("txinfoMultiple")]),e._v(" "),a("li",[e._v("appparam")]),e._v(" "),a("li",[e._v("appparams")]),e._v(" "),a("li",[e._v("appcontent")]),e._v(" "),a("li",[e._v("history")]),e._v(" "),a("li",[e._v("balance")]),e._v(" "),a("li",[e._v("block")]),e._v(" "),a("li",[e._v("maxblockid")]),e._v(" "),a("li",[e._v("blocks")]),e._v(" "),a("li",[e._v("detailed_blocks")]),e._v(" "),a("li",[e._v("ecosystemparams")]),e._v(" "),a("li",[e._v("systemparams")]),e._v(" "),a("li",[e._v("ecosystems")]),e._v(" "),a("li",[e._v("ecosystemparam")]),e._v(" "),a("li",[e._v("ecosystemname")]),e._v(" "),a("li",[e._v("walletHistory")]),e._v(" "),a("li",[e._v("tx_record")])]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request Type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("application/x-www-form-urlencoded")])]),e._v(" "),a("h2",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://jwt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("JWT token"),a("OutboundLink")],1),e._v("\nUsed for authentication. The JWT token must be placed in each request header after it is received: "),a("code",[e._v("Authorization: Bearer TOKEN_HERE")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[e._v("#")]),e._v(" getuid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ returns a unique value, signs it with the private key, and then uses\nThe "),a("a",{attrs:{href:"#login"}},[e._v("login")]),e._v(" command sends it back to the server.")]),e._v(" "),a("p",[e._v("Generate a temporary JWT token that needs to be passed to "),a("strong",[e._v("Authorization")]),e._v(" when calling "),a("strong",[e._v("login")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/getuid\n")])])]),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("uid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Signature number.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("The temporary token passed during login.")]),e._v(" "),a("p",[e._v("The life cycle of a temporary token is 5 seconds.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("cryptoer")])]),e._v(" "),a("blockquote",[a("p",[e._v("Elliptic curve algorithm.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hasher")])]),e._v(" "),a("blockquote",[a("p",[e._v("hash algorithm.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-1"}},[e._v("#")]),e._v(" Response Example 1")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "uid": "4999317241855959593",\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....... .I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"\n "network_id": "4717243765193692211"\n}\n')])])]),a("p",[e._v("In the case that no authorization is required (the request contains "),a("strong",[e._v("Authorization")]),e._v("), the following message will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("expire")])]),e._v(" "),a("blockquote",[a("p",[e._v("Expiration time.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-2"}},[e._v("#")]),e._v(" Response Example 2")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "expire": "2159h59m49.4310543s",\n "ecosystem_id": "1",\n "key_id": "-654321",\n "address": "1196-...... -3496",\n "network_id": "1"\n}\n')])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[e._v("#")]),e._v(" login")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/ User authentication.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("getuid")]),e._v(" should be called first\ncommand in order to receive the unique value and sign it. getuid's temporary JWT token needs to be passed in the request header.")]),e._v(" "),a("p",[e._v("If the request is successful, the token received in the response is contained in "),a("strong",[e._v("Authorization")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/login\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")]),e._v(" "),a("p",[e._v("If not specified, defaults to the first ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[expire]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Lifecycle of the JWT token, in seconds, default is 28800.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[pubkey]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal account public key.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[key_id]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("signature")])]),e._v(" "),a("blockquote",[a("p",[e._v("The uid signature received via getuid.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("JWT token.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account Address ID")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("account")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("notify_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Notification ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isnode")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isowner")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the creator of the ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("clb")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the logged-in ecosystem is CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role list: "),a("code",[e._v("[{Role ID,Role Name}]")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-3"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.....30l665h3v7lH85rs5jgk0",\n "ecosystem_id": "1",\n "key_id": "-54321",\n "account": "1285-... -7743-4282",\n "notify_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..... _JTFfheD0K4CfMbvVNpOJVMNDPx25zIDGir9g3ZZM0w",\n "timestamp": "1451309883",\n "roles": [\n {\n "role_id": 1,\n "role_name": "Developer"\n }\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")])]),e._v(" "),a("h2",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" Server Side command interface")]),e._v(" "),a("h3",{attrs:{id:"version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[e._v("#")]),e._v(" version")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current server version.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/version\n")])])]),a("h4",{attrs:{id:"response-example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-4"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n"1.3.0 branch.main commit.790..757 time.2021-08-23-08:20:19(UTC)"\n')])])]),a("h2",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[e._v("#")]),e._v(" balance")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Requests the balance of the account address in the current ecosystem.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/balance/{wallet}\n")])])]),a("ul",[a("li",[a("p",[e._v("*wallet")]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(". Look up the address in the ecosystem where the user is currently logged in.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default eco1")]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem id.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("amount")])]),e._v(" "),a("blockquote",[a("p",[e._v("The minimum unit of contract account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("money")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("utxo")])]),e._v(" "),a("blockquote",[a("p",[e._v("UTXO account balance.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-5"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "amount": "877450000000000",\n "money": "877.45",\n "total": "877450000000000",\n "utxo": "0"\n} \n')])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[e._v("#")]),e._v(" blocks")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing additional information related to the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-5"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET \n/api/v2/blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information for each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("contract_name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("params")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of contract parameters.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("For the first block, it is the account address of the first block that signed the transaction.")])]),e._v(" "),a("blockquote",[a("p",[e._v("For all other blocks, is the address of the account that signed the transaction.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-6"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "1":\n [{"hash": "O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"detailed-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detailed-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-6"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/detailed_blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("blockhead")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block header contains the following fields.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("block_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block height.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for the block.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("node_position")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("The location of the node that generated the block in the honor node list.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("version")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block structure version.")])])])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block Hashing.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("node_position")])])]),e._v(" "),a("p",[e._v("the location of the node that generated the block in the honor node list.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("time")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("tx_count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of transactions within the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("size")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block size.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("rollback_hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("merkle_root")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block deals with the Merkle tree.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bin_data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("trading")])])]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information about each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trading hash.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("contract_name")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract name.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("params")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract parameters.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for this transaction.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("type")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction type.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("size")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trade Size.")])])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-7"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"1":\n {"header":\n {"block_id":1,\n "time":1551069320,\n "ecosystem_id":0,\n "key_id":-118432674655542910,\n "node_position":0,\n "version":1},\n "hash":"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI=",\n "ecosystem_id":0,\n "node_position":0,\n "key_id":-118432674655542910,\n "time":1551069320,\n "tx_count":1,\n "size": "1.69KiB",\n "rollbacks_hash":"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k=",\n "mrkl_root":"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg==",\n "bin_data":null,\n "sys_update":false,\n "gen_block":false,\n "stop_count":0,\n "transactions":[\n {\n "hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":0,\n "time":0,\n "type":0,\n "size": "300.00B"\n }\n ]}\n}\n')])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystems with roles registered to the specified address.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-7"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{key_id}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("The request is queried in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-6"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of roles with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-8"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"data-id-data-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-id-data-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matching the data in the binary watch, field, and records, this request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-8"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{id}/data/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-7"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-9"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\n{\n "name": "NFT Miner",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "data": [\n {\n "Type": "contracts",\n "Name": "NewNFTMiner",\n },\n ...\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matches the data in the specified table, field, and records, the request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-9"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{table}/id/{column}/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("table")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name, only one")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-8"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-10"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\nContent-Disposition: attachment\n\nSetVar(this_page, @1voting_list).(this_table, @1votings)\nInclude(@1pager_header)\n\nSetTitle("$@1voting_list$")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: "$@1votings_list_desc$"))\nAddToolButton(Title: $@1templates_list$, Page: @1voting_templates_list, Icon: icon-pin)\nAddToolButton(Title: $@1create$, Page: @1voting_create, Icon: icon-plus).Popup(60, $@1new_voting$)\n\n')])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo-2"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to a list of ecosystems, which contains the role of registered the specified address.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-10"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{address}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, you can specify "),a("code",[e._v("int64, uint64, xxxx -...-xxxx")]),e._v(".")]),e._v(" "),a("p",[e._v("This request is query in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-9"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecological system name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("Activities with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-11"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"wallethistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallethistory"}},[e._v("#")]),e._v(" walletHistory")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the current account transaction history record, find it according to the ID of the ID")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-11"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("searchType")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find Type (Income: Turn into Outcom: Turn out all: All, default).")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[page]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find the number of pages, the first page default, min: 1")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 20 articles. min: 1, MAX: 500")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/walletHistory?searchType=all&page=1&limit=10\n")])])]),a("h4",{attrs:{id:"response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-10"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("page")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of current page.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("limit")])]),e._v(" "),a("blockquote",[a("p",[e._v("Currently find the number of bars.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("sender_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Send key_id")])])]),e._v(" "),a("li",[a("em",[e._v("sender_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Send the account address")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept key_id")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept the account address")])])]),e._v(" "),a("li",[a("em",[e._v("amount")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])]),e._v(" "),a("li",[a("em",[e._v("comment")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading remarks")])])]),e._v(" "),a("li",[a("em",[e._v("block_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Block height")])])]),e._v(" "),a("li",[a("em",[e._v("tx_hash")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading hash")])])]),e._v(" "),a("li",[a("em",[e._v("created_at")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction creation time, millisecond time stamp")])])]),e._v(" "),a("li",[a("em",[e._v("money")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-12"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "page": 1,\n "limit": 10,\n "total": 617,\n "list": [\n {\n "id": 650,\n "sender_id": 666081971617879...,\n "sender_add": "0666-0819-7161-xxxx-5186",\n "recipient_id": 666081971617879...,\n "recipient_add": "0666-0819-7161-xxxx-5186",\n "amount": "242250000",\n "comment": "taxes for execution of @1Export contract",\n "block_id": 209,\n "tx_hash": "a213bc767d710a223856d83515d53518075b56fb9e9c063bce8a256c20ff0775",\n "created_at": 1666001092090,\n "money": "0.00024225"\n }\n ...\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"listwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#listwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-12"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/listWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-11"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-13"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"nodelistwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nodelistwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the specified data table. You can specify columns to be returned. The type in the data table is "),a("strong",[e._v("BYTEA")]),e._v(" Do hexadecimal encoding processing")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-13"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/nodelistWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-12"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-14"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("h3",{attrs:{id:"metrics-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-keys"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystem 1 account addresses.")]),e._v(" "),a("h4",{attrs:{id:"request-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-14"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/keys\n")])])]),a("h4",{attrs:{id:"response-example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-15"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of blocks.")]),e._v(" "),a("h4",{attrs:{id:"request-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-15"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/blocks\n")])])]),a("h4",{attrs:{id:"response-example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-16"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-transactions"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the total number of transactions.")]),e._v(" "),a("h4",{attrs:{id:"request-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-16"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/transactions\n")])])]),a("h4",{attrs:{id:"response-example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-17"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-ecosystems"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystems.")]),e._v(" "),a("h4",{attrs:{id:"request-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-17"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/ecosystems\n")])])]),a("h4",{attrs:{id:"response-example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-18"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-honornodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-honornodes"}},[e._v("#")]),e._v(" metrics/honornodes")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of honor nodes.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/honornodes\n")])])]),a("h4",{attrs:{id:"response-example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-19"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h2",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("h3",{attrs:{id:"ecosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[e._v("#")]),e._v(" ecosystemname")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the name of the ecosystem by its identifier.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemname?id=1\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-20"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "ecosystem_name": "platform_ecosystem"\n}\n')])])]),a("h4",{attrs:{id:"error-response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-13"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparams-appid"}},[e._v("appparams/{appid}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of application parameters in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-18"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparams/{appid}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[appid]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID; if not specified, the current ecosystem parameter will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of received parameters.")]),e._v(" "),a("p",[e._v("You can specify a comma-separated list of parameter names, for example:"),a("code",[e._v("/api/v2/appparams/1?names=name,mypar")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-13"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")]),e._v(", the name of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("value")]),e._v(", the value of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("conditions")]),e._v(", change the permissions of the parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-21"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "mypar",\n "value": "My value",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-14"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the parameter "),a("strong",[e._v("{appid}")]),e._v(" of the application "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem\nThe information related to the")]),e._v(" "),a("h4",{attrs:{id:"request-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-19"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparam/{appid}/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("appid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID (optional parameter).")]),e._v(" "),a("p",[e._v("Returns the current ecosystem by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-14"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-22"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "10",\n "name": "par",\n "value": "My value",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-15"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM, E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[e._v("#")]),e._v(" ecosystemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystem parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-20"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparams/[?ecosystem=... &names=...]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID. if not specified, the current ecosystem ID will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("List of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example: "),a("code",[e._v("/api/v2/ecosystemparams/?names=name,currency,logo")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-15"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter value.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change permissions for parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-23"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "currency",\n "value": "MY",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-16"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the parameter "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-21"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparam/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The default is to return the current ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-16"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-24"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "name": "currency",\n "value": "MYCUR",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-17"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of data tables for the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-22"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 100, maximum 1000.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/tables?limit=... &offset=...\n")])])]),a("h4",{attrs:{id:"response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-17"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("The total number of entries in the data table.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name without prefix.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of entries in the data table.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-25"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "100"\n "list": [{ \n "name": "accounts",\n "count": "10",\n }, \n { \n "name": "citizens",\n "count": "5",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"table-name"}},[e._v("table/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the current ecosystem request data table.")]),e._v(" "),a("h4",{attrs:{id:"request-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-23"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[name]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/table/{table_name}\n")])])]),a("p",[e._v("Returns the following field information.")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("insert")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to add new entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("new_column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Add field permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("update")])]),e._v(" "),a("blockquote",[a("p",[e._v("Change entry permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("columns")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of field-related information.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("type")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field data type.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("perm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permissions for the field value.")])])])])])]),e._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/\nReturns a list of the specified data table entries in the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-24"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/list/mytable?columns=name\n")])])]),a("h4",{attrs:{id:"response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-18"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-26"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "John",\n }, \n { \n "id": "2",\n "name": "Mark",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the "),a("em",[e._v("sections")]),e._v(" of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("h4",{attrs:{id:"request-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-25"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[lang]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("This field specifies the multilingual resource code or localization, e.g., "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g., "),a("em",[e._v("en-US")]),e._v(", then the multilingual resource group in\nSearch in "),a("em",[e._v("en")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/sections\n")])])]),a("h4",{attrs:{id:"response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-19"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("sections")]),e._v(" Total number of table entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains information about all columns in the actions table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-27"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "2"\n "list": [{\n "id": "1",\n "title": "Development",\n "urlpage": "develop",\n ...\n },\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-18"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-id-columns-span"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns-span"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]< /span>")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the entry for the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-26"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/row/mytable/10?columns=name\n")])])]),a("h4",{attrs:{id:"response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-20"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of received column values")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-28"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "values": {\n "id": "10",\n "name": "John",\n }\n} \n')])])]),a("h4",{attrs:{id:"error-response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-19"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-column-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-column-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-colorn-id"}},[e._v("row/{name}/{column}/{id} ")])]),e._v(" "),a("p",[e._v("[Authorization] (#authorization)")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-27"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Name *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[e._v("*colorn *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data list name.")])])]),e._v(" "),a("li",[a("p",[e._v("*ID *")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[e._v("\\ [columns ] * [omitempty] (#omitempty)")]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request lists is separated by commas. If it is not specified, all columns will be returned. In all cases, the ID column will be returned.")])])])])])]),e._v(" "),a("p",[a("code",[e._v("`default GET /API/V2/ROW/MyTable/name/John? Columns = name")]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-21"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Value *")]),e._v(" "),a("blockquote",[a("p",[e._v("Array of receiving column values\nForecast")]),e._v(" "),a("ul",[a("li",[e._v("*ID *")])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Strip ID.")])])]),e._v(" "),a("ul",[a("li",[e._v("-The sequence of the request column.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-29"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("p",[a("code",[e._v('`default 200 (OK) Content-type: Application/JSON {{ "Values": { "ID": "10", "name": "John", } }')]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"error-response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-20"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[e._v("#")]),e._v(" systemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of platform parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-28"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/systemparams/[?names=...]\n")])])]),a("ul",[a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("*\\[names\\]* [Omitempty](#omitempty)\n\nA list of request parameters, separated by commas. For example\n `/api/v2/systemparams/?names=max_columns,max_indexes`.\n")])])]),a("h4",{attrs:{id:"response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-22"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter values.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-30"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "max_columns",\n "value": "100",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n { \n "name": "max_indexes",\n "value": "1",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-21"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the change record for the entry in the specified data table in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-29"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/history?name=contracts&id=5\n")])])]),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("p",[e._v("Data Table Name.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("h4",{attrs:{id:"response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-23"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("list")])])]),e._v(" "),a("p",[e._v("Each element of the array contains a change record for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"response-example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-31"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [\n {\n "name": "default_page",\n "value": "P(class, Default Ecosystem Page)"\n },\n {\n "menu": "default_menu"\n }\n ]\n}\n')])])]),a("h3",{attrs:{id:"interface-page-menu-snippet-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current ecosystem in the specified data table (pages, menu or snippet) "),a("em",[e._v("name")]),e._v("\nThe entry for the field.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/interface/page/default_page\n/api/v2/interface/menu/default_menu\n/api/v2/interface/snippet/welcome\n")])])]),a("h4",{attrs:{id:"request-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-30"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the name of the entry in the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-24"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("other")])]),e._v(" "),a("blockquote",[a("p",[e._v("Other columns of the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-32"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "1",\n "name": "default_page",\n "value": "P(Page content)",\n "default_menu": "default_menu",\n "validate_count": 1\n} \n')])])]),a("h4",{attrs:{id:"error-response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-22"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_QUERY")]),e._v(", "),a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of contracts in the current ecosystem, with the ability to set offsets and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-31"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contracts\n")])])]),a("h4",{attrs:{id:"response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-25"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract contents.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("wallet_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The account address to which the contract is tied.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("address")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("ecosystem_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("app_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The application ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the contract.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("token_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ID of the ecosystem where the pass is used to pay the contract fee.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-33"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "MainCondition",\n "token_id": "1", \n "wallet_id": "0", \n "value": "contract MainCondition {\nconditions {\n if(EcosysParam(`founder_account`)! =$key_id)\n {\n warning `Sorry, you dont have access to this action.`\n }\n }\n}",\n"address": "0000-0000-0000-0000-0000-0000",\n"conditions": "ContractConditions(`MainCondition`)" \n }, \n...\n ]\n} \n')])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified contract. The default is to query the contract in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-32"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contract/mycontract\n")])])]),a("h4",{attrs:{id:"response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-26"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID in VM.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("state")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the contract.")])])]),e._v(" "),a("li",[a("p",[e._v("*walletid")]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account to which the contract is tied.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tokenid")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the pass that is used to pay for the contract.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tableid")])]),e._v(" "),a("p",[e._v("ID of the entry in the > "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("fields")])])]),e._v(" "),a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("> The array contains structural information for each parameter of the contract **data** section.\n>\n> > - *name*\n> >\n> > > Parameter name.\n> >\n> > - \n> >\n> > *type*\n> >\n> > Parameter type.\n> >\n> > - *optional*\n> >\n> > > Parameter options, \\`true\\` means optional parameters, \\`false\\` means mandatory parameters.\n")])])]),a("h4",{attrs:{id:"response-example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-34"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "fields" : [\n {"name": "amount", "type": "int", "optional": false},\n {"name": "name", "type": "string", "optional": true}\n ],\n "id": 150,\n "name":"@1mycontract",\n "tableid" : 10,\n} \n')])])]),a("h4",{attrs:{id:"error-response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-23"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_CONTRACT")])]),e._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[e._v("#")]),e._v(" sendTX")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReceives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an Error Response.")]),e._v(" "),a("h4",{attrs:{id:"request-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-33"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tx_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction content, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/sendTx\n\nHeaders:\nContent-Type: multipart/form-data\n\nParameters:\ntx1 - Transaction 1\ntxN - Trading N\n")])])]),a("h4",{attrs:{id:"response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-27"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hashes")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash arrays.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("tx1")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading 1 hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("txN")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading N's hash.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-35"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hashes": {\n "tx1": "67afbc435634..... ",\n "txN": "89ce4498eaf7..... ",\n}\n')])])]),a("h4",{attrs:{id:"error-response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-24"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_LIMITTXSIZE")]),e._v(","),a("em",[e._v("E_BANNED")])]),e._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[e._v("#")]),e._v(" txstatus")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReturns the block ID and error message for the specified transaction hash. If the return values for the block ID and error text message are null, then the transaction is not yet contained in the block.")]),e._v(" "),a("h4",{attrs:{id:"request-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-34"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON list of transaction hashes.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/txstatus/\n")])])]),a("h4",{attrs:{id:"response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-28"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("blockid")])])]),e._v(" "),a("p",[e._v("If the transaction execution succeeds, the block ID is returned; if the transaction execution fails, the")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")]),e._v(" for [0]{.title-ref}.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("result")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("errmsg")])])]),e._v(" "),a("p",[e._v("Returns an error text message if the execution of the transaction fails.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-36"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n {\n "hash1": {\n "blockid": "3123",\n "result": "",\n },\n "hash2": {\n "blockid": "3124",\n "result": "",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-25"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG, E_HASHNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. Also returns the contract name and its associated parameters, if optional parameters are specified.")]),e._v(" "),a("h4",{attrs:{id:"request-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-35"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1\n")])])]),a("h4",{attrs:{id:"response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-29"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("blockid")])]),e._v(" "),a("blockquote",[a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("confirm")])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("data")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-37"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "blockid": "9",\n "confirm": 11,\n "data": {\n "block": "9",\n "contract": "@1NewContract",\n "params": {\n "ApplicationId": 1,\n "Conditions": "true",\n "Value": "contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t\\t}"\n }\n }\n}\n')])])]),a("h4",{attrs:{id:"error-response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-26"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[e._v("#")]),e._v(" txinfoMultiple")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns the transaction-related information for the specified hash.")]),e._v(" "),a("h4",{attrs:{id:"request-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-36"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hashes")])])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of transaction hashes.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('data: {"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfoMultiple\n")])])]),a("h4",{attrs:{id:"response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-30"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")])])])]),e._v(" "),a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[a("em",[e._v("confirm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-38"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n { \n "hash1": {\n "blockid": "3123",\n "confirm": "5",\n },\n "hash2": {\n "blockid": "3124",\n "confirm": "3",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-27"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"request-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-37"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, then search in the first ecosystem page by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/page/validators_count/@2page_name\n")])])]),a("h4",{attrs:{id:"response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-31"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("validate_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the number of nodes to be validated for the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-39"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-28"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a tree of code JSON objects for the specified page or menu name, which is the result of processing by the template engine.")]),e._v(" "),a("h4",{attrs:{id:"request-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-38"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name or menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current ecosystem page or menu by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/page/default\n")])])]),a("h4",{attrs:{id:"response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-32"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("menu")]),e._v(" || "),a("em",[e._v("title")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The name of the menu to which the page belongs when requesting it.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("menutree")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The page's menu JSON object tree when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("title")]),e._v("--head for the menu "),a("em",[e._v("content/menu/...")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/menu/...")]),e._v(" Menu title when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page or menu JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-40"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-29"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v('Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.\nRequest """""""')]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current eco-page by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-33"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/source/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree of the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-41"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-30"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page cannot be found.")]),e._v(" "),a("p",[e._v("This request does not require login authorization. To receive the correct hash when making requests to other nodes, you must also pass\n"),a("em",[e._v("ecosystem,keyID,roleID,isMobile")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-39"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/hash/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the page with the ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("keyID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roleID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isMobile")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter identification of the mobile platform.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-34"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-42"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n} \n')])])]),a("h4",{attrs:{id:"error-response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-31"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")])]),e._v(" "),a("h3",{attrs:{id:"content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content"}},[e._v("#")]),e._v(" content")]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" is specified as\n"),a("code",[e._v("true or 1")]),e._v(", then this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-40"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("template")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page code.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[source]")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("true or 1")]),e._v(" is specified, the JSON object tree does not perform any functions and receives data.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content\n")])])]),a("h4",{attrs:{id:"response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-35"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-43"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-32"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[e._v("#")]),e._v(" maxblockid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the highest block ID on the current node.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-41"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/maxblockid\n")])])]),a("h4",{attrs:{id:"response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-36"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("max_block_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The highest block ID on the current node.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-44"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "max_block_id" : 341,\n}\n')])])]),a("h4",{attrs:{id:"error-response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-33"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"block-id"}},[e._v("block/{id}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified block ID.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-42"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/block/32\n")])])]),a("h4",{attrs:{id:"response-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-37"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("time")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tx_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of transactions in the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("rollbacks_hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("node_position")])]),e._v(" "),a("blockquote",[a("p",[e._v("The position of the block in the honor node list.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-45"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek=",\n "key_id": -118432674655542910,\n "time": 1551145365,\n "tx_count": 3,\n "rollbacks_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",\n "node_position": 0,\n} \n')])])]),a("h4",{attrs:{id:"error-response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-34"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the avatar of the user in the "),a("em",[e._v("member")]),e._v(" table (available without login).")]),e._v(" "),a("h4",{attrs:{id:"request-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-43"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("member")])]),e._v(" "),a("blockquote",[a("p",[e._v("The user's account address. (xxxx-... -xxxx)")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/avatar/1/1234-2134-... -4321\n")])])]),a("h4",{attrs:{id:"response-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-38"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The request header "),a("em",[e._v("Content-Type")]),e._v(" is the image type and the image data is returned in the response body.")]),e._v(" "),a("h4",{attrs:{id:"response-example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-46"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("200 (OK)\nContent-Type: image/png \n")])])]),a("h4",{attrs:{id:"error-response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-35"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")]),e._v(" "),a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the host address and port of centrifugo.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-44"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/config/centrifugo\n")])])]),a("h4",{attrs:{id:"response-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-39"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Response result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-36"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[e._v("#")]),e._v(" updnotificator")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/")]),e._v(" "),a("p",[e._v("(Discarded)")]),e._v(" "),a("p",[e._v("Sends all messages that have not yet been sent to the centrifugo notification service. Sends only messages for the specified ecosystem and members.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-45"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Member's account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/updnotificator\n")])])]),a("h4",{attrs:{id:"response-example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-47"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "result": true\n} \n')])])]),a("h3",{attrs:{id:"special-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-instructions"}},[e._v("#")]),e._v(" Special instructions")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("If the field has an omitempty attribute, it means that the field is an optional parameter")]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("If the interface with Authorization tag, that this interface requires login authorization, add Authorization to the request header, example.")]),e._v(" "),a("p",[e._v('key = Authorization\nvalue = "Bearer + '),a("a",{attrs:{href:"#login"}},[e._v("login token")]),e._v('"')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Authorization Bearer eyJhbGciOiJI..... kBZgGIlPhfXNZJ73RiZtM\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{485:function(e,t,a){"use strict";a.r(t);var s=a(51),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[e._v("#")]),e._v(" RESTful API v2")]),e._v(" "),a("p",[e._v("Weaver\nAll functions provided, including authentication, ecosystem data reception, error handling, database table manipulation, page and contract execution are available through\nIBAX Blockchain Platform's REST API is available.")]),e._v(" "),a("p",[e._v("By using the REST API, developers can access any of the platform's features without using Weaver.")]),e._v(" "),a("p",[e._v("API command calls are executed by addressing "),a("code",[e._v("/api/v2/command/[param]")]),e._v(", where "),a("code",[e._v("command")]),e._v("\nis the command name and "),a("code",[e._v("param")]),e._v(" is the additional parameter. The request parameters must be specified using the\n"),a("code",[e._v("Content-Type: x-www-form-urlencoded")]),e._v("\nThe format is sent. The server response result is in JSON format.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-response-handling"}},[e._v("Error response handling")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-list"}},[e._v("Error list")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#request-type"}},[e._v("Request Type")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#authentication-interface"}},[e._v("Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[e._v("getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#login"}},[e._v("login")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#server-side-command-interface"}},[e._v("Server Side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#version"}},[e._v("version")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-request-function-interface"}},[e._v("Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#balance"}},[e._v("balance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blocks"}},[e._v("blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#keyinfo"}},[e._v("keyinfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#wallethistory"}},[e._v("walletHistory")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#get-metrics-interface"}},[e._v("Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-honornodes"}},[e._v("metrics/honornodes")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-interface"}},[e._v("Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ecosystemname"}},[e._v("ecosystemname")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[e._v("appparams/{appID}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparams"}},[e._v("ecosystemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-name"}},[e._v("table/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-column-id"}},[e._v("row/{name}/{column}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#systemparams"}},[e._v("systemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-function-interface"}},[e._v("Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sendtx"}},[e._v("sendTX")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[e._v("txstatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[e._v("txinfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content"}},[e._v("content")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[e._v("maxblockid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[e._v("block/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[e._v("updnotificator")])])])])]),e._v(" "),a("h2",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Return status in case of successful request execution\n"),a("code",[e._v("200")]),e._v(". If an error occurs, in addition to the error status, a JSON object with the following fields will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("error")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error identifier.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("msg")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error text message.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")])]),e._v(" "),a("blockquote",[a("p",[e._v("An array of additional parameters that can be placed in the error message.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('400 (Bad request)\nContent-Type: application/json\n{\n "err": "E_INVALIDWALLET",\n "msg": "Wallet 1234-5678-9012-3444-3488 is not valid",\n "params": ["1234-5678-9012-3444-3488"]\n}\n')])])]),a("h3",{attrs:{id:"error-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-list"}},[e._v("#")]),e._v(" Error list")]),e._v(" "),a("blockquote",[a("p",[e._v("E_CONTRACT")])]),e._v(" "),a("p",[e._v("No "),a("code",[e._v("%s")]),e._v(" contract exists")]),e._v(" "),a("blockquote",[a("p",[e._v("E_DBNIL")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database is empty\n")])])]),a("blockquote",[a("p",[e._v("E_DELETEDKEY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address is frozen\n")])])]),a("blockquote",[a("p",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Ecosystem `%d` does not exist\n")])])]),a("blockquote",[a("p",[e._v("E_EMPTYPUBLIC")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Invalid account public key\n")])])]),a("blockquote",[a("p",[e._v("E_KEYNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address not found\n")])])]),a("blockquote",[a("p",[e._v("E_HASHWRONG")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect hash\n")])])]),a("blockquote",[a("p",[e._v("E_HASHNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Hash not found\n")])])]),a("blockquote",[a("p",[e._v("E_HEAVYPAGE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Too much page loading\n")])])]),a("blockquote",[a("p",[e._v("E_INVALIDWALLET")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Wallet address `%s` Invalid\n")])])]),a("blockquote",[a("p",[e._v("E_LIMITTXSIZE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The transaction size has exceeded the limit\n")])])]),a("blockquote",[a("p",[e._v("E_NOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Page or menu content not found\n")])])]),a("blockquote",[a("p",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Parameters not found\n")])])]),a("blockquote",[a("p",[e._v("E_PERMISSION")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("No permission\n")])])]),a("blockquote",[a("p",[e._v("E_QUERY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database query error\n")])])]),a("blockquote",[a("p",[e._v("E_RECOVERED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("API panic error occurs.\n\nIf a panic error occurs, an error is returned.\n\nThis error means that you have encountered a bug that needs to be found and fixed.\n")])])]),a("blockquote",[a("p",[e._v("E_SERVER")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Server error.\n\nReturn if there is an error in the golang library function. The \\*msg\\* field contains the error text message.\n\n**E_SERVER** may appear in response to any command Error. \nIf it occurs due to an incorrect input parameter, it can be changed to a related error. In another case, this error reports an invalid operation or incorrect system configuration, which requires a more detailed investigation report.\n")])])]),a("blockquote",[a("p",[e._v("E_SIGNATURE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect signature\n")])])]),a("blockquote",[a("p",[e._v("E_STATELOGIN")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("`%s` is not a member of the ecosystem `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Data sheet `%s` not found\n")])])]),a("blockquote",[a("p",[e._v("E_TOKENEXPIRED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The session has expired `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_UNAUTHORIZED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unauthorized.\n\nIn case no login is performed or the session expires, \nexcept for `getuid, login` Any command other than **E_UNAUTHORIZED** returns an error.\n")])])]),a("blockquote",[a("p",[e._v("E_UNKNOWNUID")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unknown UID\n")])])]),a("blockquote",[a("p",[e._v("E_UPDATING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Nodes are updating the blockchain\n")])])]),a("blockquote",[a("p",[e._v("E_STOPPING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Node is stopped\n")])])]),a("blockquote",[a("p",[e._v("E_NOTIMPLEMENTED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Not yet achieved\n")])])]),a("blockquote",[a("p",[e._v("E_BANNED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("This account address is prohibited in `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_CHECKROLE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Access denied\n\nCLB Unavailable Interface\n")])])]),a("hr"),e._v(" "),a("blockquote",[a("p",[e._v("Interface requests for which the CLB node is not available.")])]),e._v(" "),a("ul",[a("li",[e._v("metrics")]),e._v(" "),a("li",[e._v("txinfo")]),e._v(" "),a("li",[e._v("txinfoMultiple")]),e._v(" "),a("li",[e._v("appparam")]),e._v(" "),a("li",[e._v("appparams")]),e._v(" "),a("li",[e._v("appcontent")]),e._v(" "),a("li",[e._v("history")]),e._v(" "),a("li",[e._v("balance")]),e._v(" "),a("li",[e._v("block")]),e._v(" "),a("li",[e._v("maxblockid")]),e._v(" "),a("li",[e._v("blocks")]),e._v(" "),a("li",[e._v("detailed_blocks")]),e._v(" "),a("li",[e._v("ecosystemparams")]),e._v(" "),a("li",[e._v("systemparams")]),e._v(" "),a("li",[e._v("ecosystems")]),e._v(" "),a("li",[e._v("ecosystemparam")]),e._v(" "),a("li",[e._v("ecosystemname")]),e._v(" "),a("li",[e._v("walletHistory")]),e._v(" "),a("li",[e._v("tx_record")])]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request Type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("application/x-www-form-urlencoded")])]),e._v(" "),a("h2",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://jwt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("JWT token"),a("OutboundLink")],1),e._v("\nUsed for authentication. The JWT token must be placed in each request header after it is received: "),a("code",[e._v("Authorization: Bearer TOKEN_HERE")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[e._v("#")]),e._v(" getuid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ returns a unique value, signs it with the private key, and then uses\nThe "),a("a",{attrs:{href:"#login"}},[e._v("login")]),e._v(" command sends it back to the server.")]),e._v(" "),a("p",[e._v("Generate a temporary JWT token that needs to be passed to "),a("strong",[e._v("Authorization")]),e._v(" when calling "),a("strong",[e._v("login")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/getuid\n")])])]),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("uid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Signature number.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("The temporary token passed during login.")]),e._v(" "),a("p",[e._v("The life cycle of a temporary token is 5 seconds.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("cryptoer")])]),e._v(" "),a("blockquote",[a("p",[e._v("Elliptic curve algorithm.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hasher")])]),e._v(" "),a("blockquote",[a("p",[e._v("hash algorithm.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-1"}},[e._v("#")]),e._v(" Response Example 1")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "uid": "4999317241855959593",\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....... .I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"\n "network_id": "4717243765193692211"\n}\n')])])]),a("p",[e._v("In the case that no authorization is required (the request contains "),a("strong",[e._v("Authorization")]),e._v("), the following message will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("expire")])]),e._v(" "),a("blockquote",[a("p",[e._v("Expiration time.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-2"}},[e._v("#")]),e._v(" Response Example 2")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "expire": "2159h59m49.4310543s",\n "ecosystem_id": "1",\n "key_id": "-654321",\n "address": "1196-...... -3496",\n "network_id": "1"\n}\n')])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[e._v("#")]),e._v(" login")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/ User authentication.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("getuid")]),e._v(" should be called first\ncommand in order to receive the unique value and sign it. getuid's temporary JWT token needs to be passed in the request header.")]),e._v(" "),a("p",[e._v("If the request is successful, the token received in the response is contained in "),a("strong",[e._v("Authorization")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/login\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")]),e._v(" "),a("p",[e._v("If not specified, defaults to the first ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[expire]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Lifecycle of the JWT token, in seconds, default is 28800.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[pubkey]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal account public key.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[key_id]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("signature")])]),e._v(" "),a("blockquote",[a("p",[e._v("The uid signature received via getuid.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("JWT token.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account Address ID")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("account")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("notify_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Notification ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isnode")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isowner")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the creator of the ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("clb")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the logged-in ecosystem is CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role list: "),a("code",[e._v("[{Role ID,Role Name}]")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-3"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.....30l665h3v7lH85rs5jgk0",\n "ecosystem_id": "1",\n "key_id": "-54321",\n "account": "1285-... -7743-4282",\n "notify_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..... _JTFfheD0K4CfMbvVNpOJVMNDPx25zIDGir9g3ZZM0w",\n "timestamp": "1451309883",\n "roles": [\n {\n "role_id": 1,\n "role_name": "Developer"\n }\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")])]),e._v(" "),a("h2",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" Server Side command interface")]),e._v(" "),a("h3",{attrs:{id:"version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[e._v("#")]),e._v(" version")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current server version.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/version\n")])])]),a("h4",{attrs:{id:"response-example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-4"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n"1.3.0 branch.main commit.790..757 time.2021-08-23-08:20:19(UTC)"\n')])])]),a("h2",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[e._v("#")]),e._v(" balance")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Requests the balance of the account address in the current ecosystem.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/balance/{wallet}\n")])])]),a("ul",[a("li",[a("p",[e._v("*wallet")]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(". Look up the address in the ecosystem where the user is currently logged in.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default eco1")]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem id.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("amount")])]),e._v(" "),a("blockquote",[a("p",[e._v("The minimum unit of contract account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("money")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("utxo")])]),e._v(" "),a("blockquote",[a("p",[e._v("UTXO account balance.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-5"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "amount": "877450000000000",\n "money": "877.45",\n "total": "877450000000000",\n "utxo": "0"\n} \n')])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[e._v("#")]),e._v(" blocks")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing additional information related to the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-5"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET \n/api/v2/blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information for each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("contract_name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("params")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of contract parameters.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("For the first block, it is the account address of the first block that signed the transaction.")])]),e._v(" "),a("blockquote",[a("p",[e._v("For all other blocks, is the address of the account that signed the transaction.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-6"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "1":\n [{"hash": "O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"detailed-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detailed-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-6"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/detailed_blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("blockhead")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block header contains the following fields.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("block_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block height.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for the block.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("node_position")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("The location of the node that generated the block in the honor node list.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("version")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block structure version.")])])])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block Hashing.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("node_position")])])]),e._v(" "),a("p",[e._v("the location of the node that generated the block in the honor node list.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("time")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("tx_count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of transactions within the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("size")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block size.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("rollback_hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("merkle_root")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block deals with the Merkle tree.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bin_data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("trading")])])]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information about each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trading hash.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("contract_name")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract name.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("params")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract parameters.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for this transaction.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("type")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction type.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("size")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trade Size.")])])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-7"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"1":\n {"header":\n {"block_id":1,\n "time":1551069320,\n "ecosystem_id":0,\n "key_id":-118432674655542910,\n "node_position":0,\n "version":1},\n "hash":"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI=",\n "ecosystem_id":0,\n "node_position":0,\n "key_id":-118432674655542910,\n "time":1551069320,\n "tx_count":1,\n "size": "1.69KiB",\n "rollbacks_hash":"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k=",\n "mrkl_root":"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg==",\n "bin_data":null,\n "sys_update":false,\n "gen_block":false,\n "stop_count":0,\n "transactions":[\n {\n "hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":0,\n "time":0,\n "type":0,\n "size": "300.00B"\n }\n ]}\n}\n')])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystems with roles registered to the specified address.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-7"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{key_id}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("The request is queried in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-6"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of roles with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-8"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"data-id-data-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-id-data-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matching the data in the binary watch, field, and records, this request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-8"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{id}/data/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-7"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-9"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\n{\n "name": "NFT Miner",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "data": [\n {\n "Type": "contracts",\n "Name": "NewNFTMiner",\n },\n ...\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matches the data in the specified table, field, and records, the request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-9"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{table}/id/{column}/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("table")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name, only one")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-8"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-10"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\nContent-Disposition: attachment\n\nSetVar(this_page, @1voting_list).(this_table, @1votings)\nInclude(@1pager_header)\n\nSetTitle("$@1voting_list$")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: "$@1votings_list_desc$"))\nAddToolButton(Title: $@1templates_list$, Page: @1voting_templates_list, Icon: icon-pin)\nAddToolButton(Title: $@1create$, Page: @1voting_create, Icon: icon-plus).Popup(60, $@1new_voting$)\n\n')])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo-2"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to a list of ecosystems, which contains the role of registered the specified address.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-10"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{address}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, you can specify "),a("code",[e._v("int64, uint64, xxxx -...-xxxx")]),e._v(".")]),e._v(" "),a("p",[e._v("This request is query in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-9"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecological system name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("Activities with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-11"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"wallethistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallethistory"}},[e._v("#")]),e._v(" walletHistory")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the current account transaction history record, find it according to the ID of the ID")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-11"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("searchType")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find Type (Income: Turn into Outcom: Turn out all: All, default).")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[page]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find the number of pages, the first page default, min: 1")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 20 articles. min: 1, MAX: 500")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/walletHistory?searchType=all&page=1&limit=10\n")])])]),a("h4",{attrs:{id:"response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-10"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("page")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of current page.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("limit")])]),e._v(" "),a("blockquote",[a("p",[e._v("Currently find the number of bars.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("sender_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Send key_id")])])]),e._v(" "),a("li",[a("em",[e._v("sender_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Send the account address")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept key_id")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept the account address")])])]),e._v(" "),a("li",[a("em",[e._v("amount")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])]),e._v(" "),a("li",[a("em",[e._v("comment")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading remarks")])])]),e._v(" "),a("li",[a("em",[e._v("block_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Block height")])])]),e._v(" "),a("li",[a("em",[e._v("tx_hash")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading hash")])])]),e._v(" "),a("li",[a("em",[e._v("created_at")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction creation time, millisecond time stamp")])])]),e._v(" "),a("li",[a("em",[e._v("money")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-12"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "page": 1,\n "limit": 10,\n "total": 617,\n "list": [\n {\n "id": 650,\n "sender_id": 666081971617879...,\n "sender_add": "0666-0819-7161-xxxx-5186",\n "recipient_id": 666081971617879...,\n "recipient_add": "0666-0819-7161-xxxx-5186",\n "amount": "242250000",\n "comment": "taxes for execution of @1Export contract",\n "block_id": 209,\n "tx_hash": "a213bc767d710a223856d83515d53518075b56fb9e9c063bce8a256c20ff0775",\n "created_at": 1666001092090,\n "money": "0.00024225"\n }\n ...\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"listwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#listwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-12"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/listWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-11"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-13"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"nodelistwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nodelistwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the specified data table. You can specify columns to be returned. The type in the data table is "),a("strong",[e._v("BYTEA")]),e._v(" Do hexadecimal encoding processing")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-13"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/nodelistWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-12"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-14"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("h3",{attrs:{id:"metrics-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-keys"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystem 1 account addresses.")]),e._v(" "),a("h4",{attrs:{id:"request-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-14"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/keys\n")])])]),a("h4",{attrs:{id:"response-example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-15"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of blocks.")]),e._v(" "),a("h4",{attrs:{id:"request-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-15"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/blocks\n")])])]),a("h4",{attrs:{id:"response-example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-16"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-transactions"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the total number of transactions.")]),e._v(" "),a("h4",{attrs:{id:"request-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-16"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/transactions\n")])])]),a("h4",{attrs:{id:"response-example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-17"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-ecosystems"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystems.")]),e._v(" "),a("h4",{attrs:{id:"request-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-17"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/ecosystems\n")])])]),a("h4",{attrs:{id:"response-example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-18"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-honornodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-honornodes"}},[e._v("#")]),e._v(" metrics/honornodes")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of honor nodes.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/honornodes\n")])])]),a("h4",{attrs:{id:"response-example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-19"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h2",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("h3",{attrs:{id:"ecosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[e._v("#")]),e._v(" ecosystemname")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the name of the ecosystem by its identifier.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemname?id=1\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-20"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "ecosystem_name": "platform_ecosystem"\n}\n')])])]),a("h4",{attrs:{id:"error-response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-13"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparams-appid"}},[e._v("appparams/{appid}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of application parameters in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-18"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparams/{appid}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[appid]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID; if not specified, the current ecosystem parameter will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of received parameters.")]),e._v(" "),a("p",[e._v("You can specify a comma-separated list of parameter names, for example:"),a("code",[e._v("/api/v2/appparams/1?names=name,mypar")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-13"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")]),e._v(", the name of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("value")]),e._v(", the value of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("conditions")]),e._v(", change the permissions of the parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-21"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "mypar",\n "value": "My value",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-14"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the parameter "),a("strong",[e._v("{appid}")]),e._v(" of the application "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem\nThe information related to the")]),e._v(" "),a("h4",{attrs:{id:"request-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-19"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparam/{appid}/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("appid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID (optional parameter).")]),e._v(" "),a("p",[e._v("Returns the current ecosystem by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-14"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-22"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "10",\n "name": "par",\n "value": "My value",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-15"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM, E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[e._v("#")]),e._v(" ecosystemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystem parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-20"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparams/[?ecosystem=... &names=...]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID. if not specified, the current ecosystem ID will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("List of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example: "),a("code",[e._v("/api/v2/ecosystemparams/?names=name,currency,logo")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-15"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter value.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change permissions for parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-23"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "currency",\n "value": "MY",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-16"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the parameter "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-21"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparam/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The default is to return the current ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-16"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-24"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "name": "currency",\n "value": "MYCUR",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-17"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of data tables for the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-22"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 100, maximum 1000.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/tables?limit=... &offset=...\n")])])]),a("h4",{attrs:{id:"response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-17"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("The total number of entries in the data table.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name without prefix.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of entries in the data table.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-25"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "100"\n "list": [{ \n "name": "accounts",\n "count": "10",\n }, \n { \n "name": "citizens",\n "count": "5",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"table-name"}},[e._v("table/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the current ecosystem request data table.")]),e._v(" "),a("h4",{attrs:{id:"request-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-23"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[name]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/table/{table_name}\n")])])]),a("p",[e._v("Returns the following field information.")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("insert")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to add new entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("new_column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Add field permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("update")])]),e._v(" "),a("blockquote",[a("p",[e._v("Change entry permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("columns")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of field-related information.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("type")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field data type.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("perm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permissions for the field value.")])])])])])]),e._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/\nReturns a list of the specified data table entries in the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-24"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/list/mytable?columns=name\n")])])]),a("h4",{attrs:{id:"response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-18"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-26"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "John",\n }, \n { \n "id": "2",\n "name": "Mark",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the "),a("em",[e._v("sections")]),e._v(" of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("h4",{attrs:{id:"request-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-25"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[lang]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("This field specifies the multilingual resource code or localization, e.g., "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g., "),a("em",[e._v("en-US")]),e._v(", then the multilingual resource group in\nSearch in "),a("em",[e._v("en")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/sections\n")])])]),a("h4",{attrs:{id:"response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-19"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("sections")]),e._v(" Total number of table entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains information about all columns in the actions table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-27"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "2"\n "list": [{\n "id": "1",\n "title": "Development",\n "urlpage": "develop",\n ...\n },\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-18"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-id-columns-span"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns-span"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]< /span>")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the entry for the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-26"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/row/mytable/10?columns=name\n")])])]),a("h4",{attrs:{id:"response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-20"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of received column values")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-28"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "values": {\n "id": "10",\n "name": "John",\n }\n} \n')])])]),a("h4",{attrs:{id:"error-response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-19"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-column-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-column-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-colorn-id"}},[e._v("row/{name}/{column}/{id} ")])]),e._v(" "),a("p",[e._v("[Authorization] (#authorization)")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-27"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Name *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[e._v("*colorn *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data list name.")])])]),e._v(" "),a("li",[a("p",[e._v("*ID *")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[e._v("\\ [columns ] * [omitempty] (#omitempty)")]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request lists is separated by commas. If it is not specified, all columns will be returned. In all cases, the ID column will be returned.")])])])])])]),e._v(" "),a("p",[a("code",[e._v("`default GET /API/V2/ROW/MyTable/name/John? Columns = name")]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-21"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Value *")]),e._v(" "),a("blockquote",[a("p",[e._v("Array of receiving column values\nForecast")]),e._v(" "),a("ul",[a("li",[e._v("*ID *")])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Strip ID.")])])]),e._v(" "),a("ul",[a("li",[e._v("-The sequence of the request column.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-29"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("p",[a("code",[e._v('`default 200 (OK) Content-type: Application/JSON {{ "Values": { "ID": "10", "name": "John", } }')]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"error-response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-20"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[e._v("#")]),e._v(" systemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of platform parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-28"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/systemparams/[?names=...]\n")])])]),a("ul",[a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("*\\[names\\]* [Omitempty](#omitempty)\n\nA list of request parameters, separated by commas. For example\n `/api/v2/systemparams/?names=max_columns,max_indexes`.\n")])])]),a("h4",{attrs:{id:"response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-22"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter values.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-30"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "max_columns",\n "value": "100",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n { \n "name": "max_indexes",\n "value": "1",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-21"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the change record for the entry in the specified data table in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-29"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/history?name=contracts&id=5\n")])])]),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("p",[e._v("Data Table Name.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("h4",{attrs:{id:"response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-23"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("list")])])]),e._v(" "),a("p",[e._v("Each element of the array contains a change record for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"response-example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-31"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [\n {\n "name": "default_page",\n "value": "P(class, Default Ecosystem Page)"\n },\n {\n "menu": "default_menu"\n }\n ]\n}\n')])])]),a("h3",{attrs:{id:"interface-page-menu-snippet-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current ecosystem in the specified data table (pages, menu or snippet) "),a("em",[e._v("name")]),e._v("\nThe entry for the field.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/interface/page/default_page\n/api/v2/interface/menu/default_menu\n/api/v2/interface/snippet/welcome\n")])])]),a("h4",{attrs:{id:"request-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-30"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the name of the entry in the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-24"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("other")])]),e._v(" "),a("blockquote",[a("p",[e._v("Other columns of the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-32"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "1",\n "name": "default_page",\n "value": "P(Page content)",\n "default_menu": "default_menu",\n "validate_count": 1\n} \n')])])]),a("h4",{attrs:{id:"error-response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-22"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_QUERY")]),e._v(", "),a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of contracts in the current ecosystem, with the ability to set offsets and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-31"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contracts\n")])])]),a("h4",{attrs:{id:"response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-25"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract contents.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("wallet_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The account address to which the contract is tied.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("address")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("ecosystem_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("app_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The application ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the contract.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("token_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ID of the ecosystem where the pass is used to pay the contract fee.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-33"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "MainCondition",\n "token_id": "1", \n "wallet_id": "0", \n "value": "contract MainCondition {\nconditions {\n if(EcosysParam(`founder_account`)! =$key_id)\n {\n warning `Sorry, you dont have access to this action.`\n }\n }\n}",\n"address": "0000-0000-0000-0000-0000-0000",\n"conditions": "ContractConditions(`MainCondition`)" \n }, \n...\n ]\n} \n')])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified contract. The default is to query the contract in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-32"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contract/mycontract\n")])])]),a("h4",{attrs:{id:"response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-26"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID in VM.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("state")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the contract.")])])]),e._v(" "),a("li",[a("p",[e._v("*walletid")]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account to which the contract is tied.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tokenid")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the pass that is used to pay for the contract.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tableid")])]),e._v(" "),a("p",[e._v("ID of the entry in the > "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("fields")])])]),e._v(" "),a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("> The array contains structural information for each parameter of the contract **data** section.\n>\n> > - *name*\n> >\n> > > Parameter name.\n> >\n> > - \n> >\n> > *type*\n> >\n> > Parameter type.\n> >\n> > - *optional*\n> >\n> > > Parameter options, \\`true\\` means optional parameters, \\`false\\` means mandatory parameters.\n")])])]),a("h4",{attrs:{id:"response-example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-34"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "fields" : [\n {"name": "amount", "type": "int", "optional": false},\n {"name": "name", "type": "string", "optional": true}\n ],\n "id": 150,\n "name":"@1mycontract",\n "tableid" : 10,\n} \n')])])]),a("h4",{attrs:{id:"error-response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-23"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_CONTRACT")])]),e._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[e._v("#")]),e._v(" sendTX")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReceives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an Error Response.")]),e._v(" "),a("h4",{attrs:{id:"request-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-33"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tx_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction content, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/sendTx\n\nHeaders:\nContent-Type: multipart/form-data\n\nParameters:\ntx1 - Transaction 1\ntxN - Trading N\n")])])]),a("h4",{attrs:{id:"response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-27"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hashes")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash arrays.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("tx1")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading 1 hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("txN")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading N's hash.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-35"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hashes": {\n "tx1": "67afbc435634..... ",\n "txN": "89ce4498eaf7..... ",\n}\n')])])]),a("h4",{attrs:{id:"error-response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-24"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_LIMITTXSIZE")]),e._v(","),a("em",[e._v("E_BANNED")])]),e._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[e._v("#")]),e._v(" txstatus")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReturns the block ID and error message for the specified transaction hash. If the return values for the block ID and error text message are null, then the transaction is not yet contained in the block.")]),e._v(" "),a("h4",{attrs:{id:"request-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-34"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON list of transaction hashes.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/txstatus/\n")])])]),a("h4",{attrs:{id:"response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-28"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("blockid")])])]),e._v(" "),a("p",[e._v("If the transaction execution succeeds, the block ID is returned; if the transaction execution fails, the")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")]),e._v(" for [0]{.title-ref}.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("result")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("errmsg")])])]),e._v(" "),a("p",[e._v("Returns an error text message if the execution of the transaction fails.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-36"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n {\n "hash1": {\n "blockid": "3123",\n "result": "",\n },\n "hash2": {\n "blockid": "3124",\n "result": "",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-25"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG, E_HASHNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. Also returns the contract name and its associated parameters, if optional parameters are specified.")]),e._v(" "),a("h4",{attrs:{id:"request-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-35"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1\n")])])]),a("h4",{attrs:{id:"response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-29"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("blockid")])]),e._v(" "),a("blockquote",[a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("confirm")])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("data")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-37"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "blockid": "9",\n "confirm": 11,\n "data": {\n "block": "9",\n "contract": "@1NewContract",\n "params": {\n "ApplicationId": 1,\n "Conditions": "true",\n "Value": "contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t\\t}"\n }\n }\n}\n')])])]),a("h4",{attrs:{id:"error-response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-26"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[e._v("#")]),e._v(" txinfoMultiple")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns the transaction-related information for the specified hash.")]),e._v(" "),a("h4",{attrs:{id:"request-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-36"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hashes")])])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of transaction hashes.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('data: {"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfoMultiple\n")])])]),a("h4",{attrs:{id:"response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-30"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")])])])]),e._v(" "),a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[a("em",[e._v("confirm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-38"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n { \n "hash1": {\n "blockid": "3123",\n "confirm": "5",\n },\n "hash2": {\n "blockid": "3124",\n "confirm": "3",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-27"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"request-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-37"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, then search in the first ecosystem page by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/page/validators_count/@2page_name\n")])])]),a("h4",{attrs:{id:"response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-31"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("validate_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the number of nodes to be validated for the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-39"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-28"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a tree of code JSON objects for the specified page or menu name, which is the result of processing by the template engine.")]),e._v(" "),a("h4",{attrs:{id:"request-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-38"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name or menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current ecosystem page or menu by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/page/default\n")])])]),a("h4",{attrs:{id:"response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-32"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("menu")]),e._v(" || "),a("em",[e._v("title")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The name of the menu to which the page belongs when requesting it.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("menutree")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The page's menu JSON object tree when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("title")]),e._v("--head for the menu "),a("em",[e._v("content/menu/...")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/menu/...")]),e._v(" Menu title when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page or menu JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-40"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-29"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v('Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.\nRequest """""""')]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current eco-page by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-33"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/source/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree of the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-41"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-30"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page cannot be found.")]),e._v(" "),a("p",[e._v("This request does not require login authorization. To receive the correct hash when making requests to other nodes, you must also pass\n"),a("em",[e._v("ecosystem,keyID,roleID,isMobile")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-39"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/hash/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the page with the ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("keyID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roleID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isMobile")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter identification of the mobile platform.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-34"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-42"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n} \n')])])]),a("h4",{attrs:{id:"error-response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-31"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")])]),e._v(" "),a("h3",{attrs:{id:"content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content"}},[e._v("#")]),e._v(" content")]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" is specified as\n"),a("code",[e._v("true or 1")]),e._v(", then this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-40"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("template")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page code.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[source]")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("true or 1")]),e._v(" is specified, the JSON object tree does not perform any functions and receives data.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content\n")])])]),a("h4",{attrs:{id:"response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-35"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-43"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-32"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[e._v("#")]),e._v(" maxblockid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the highest block ID on the current node.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-41"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/maxblockid\n")])])]),a("h4",{attrs:{id:"response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-36"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("max_block_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The highest block ID on the current node.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-44"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "max_block_id" : 341,\n}\n')])])]),a("h4",{attrs:{id:"error-response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-33"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"block-id"}},[e._v("block/{id}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified block ID.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-42"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/block/32\n")])])]),a("h4",{attrs:{id:"response-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-37"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("time")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tx_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of transactions in the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("rollbacks_hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("node_position")])]),e._v(" "),a("blockquote",[a("p",[e._v("The position of the block in the honor node list.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-45"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek=",\n "key_id": -118432674655542910,\n "time": 1551145365,\n "tx_count": 3,\n "rollbacks_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",\n "node_position": 0,\n} \n')])])]),a("h4",{attrs:{id:"error-response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-34"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the avatar of the user in the "),a("em",[e._v("member")]),e._v(" table (available without login).")]),e._v(" "),a("h4",{attrs:{id:"request-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-43"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("member")])]),e._v(" "),a("blockquote",[a("p",[e._v("The user's account address. (xxxx-... -xxxx)")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/avatar/1/1234-2134-... -4321\n")])])]),a("h4",{attrs:{id:"response-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-38"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The request header "),a("em",[e._v("Content-Type")]),e._v(" is the image type and the image data is returned in the response body.")]),e._v(" "),a("h4",{attrs:{id:"response-example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-46"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("200 (OK)\nContent-Type: image/png \n")])])]),a("h4",{attrs:{id:"error-response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-35"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")]),e._v(" "),a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the host address and port of centrifugo.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-44"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/config/centrifugo\n")])])]),a("h4",{attrs:{id:"response-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-39"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Response result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-36"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[e._v("#")]),e._v(" updnotificator")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/")]),e._v(" "),a("p",[e._v("(Discarded)")]),e._v(" "),a("p",[e._v("Sends all messages that have not yet been sent to the centrifugo notification service. Sends only messages for the specified ecosystem and members.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-45"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Member's account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/updnotificator\n")])])]),a("h4",{attrs:{id:"response-example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-47"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "result": true\n} \n')])])]),a("h3",{attrs:{id:"special-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-instructions"}},[e._v("#")]),e._v(" Special instructions")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("If the field has an omitempty attribute, it means that the field is an optional parameter")]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("If the interface with Authorization tag, that this interface requires login authorization, add Authorization to the request header, example.")]),e._v(" "),a("p",[e._v('key = Authorization\nvalue = "Bearer + '),a("a",{attrs:{href:"#login"}},[e._v("login token")]),e._v('"')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Authorization Bearer eyJhbGciOiJI..... kBZgGIlPhfXNZJ73RiZtM\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/105.6b3019b7.js b/assets/js/105.2db9a241.js similarity index 98% rename from assets/js/105.6b3019b7.js rename to assets/js/105.2db9a241.js index f4e0cfc..8062f01 100644 --- a/assets/js/105.6b3019b7.js +++ b/assets/js/105.2db9a241.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{483:function(e,t,n){"use strict";n.r(t);var o=n(51),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration-file"}},[e._v("#")]),e._v(" Server Configuration File")]),e._v(" "),n("p",[e._v("In this section, we will introduce parameters in the server configuration file.")]),e._v(" "),n("h2",{attrs:{id:"introduction-to-the-server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#introduction-to-the-server-configuration-file"}},[e._v("#")]),e._v(" Introduction to the server configuration file")]),e._v(" "),n("p",[e._v("The server configuration file defines the node configuration of IBAX.")]),e._v(" "),n("h2",{attrs:{id:"location"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),n("p",[e._v("This file is located in the working directory of the server and is named "),n("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"sections"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sections"}},[e._v("#")]),e._v(" Sections")]),e._v(" "),n("p",[e._v("The configuration file consists the following sections:")]),e._v(" "),n("blockquote",[n("p",[e._v("general section")])]),e._v(" "),n("p",[e._v("It defines the working directory DataDir, the first block directory FirstBlockPath and other parameters.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TCPServer]")])]),e._v(" "),n("p",[e._v("It defines the TCP service parameters.")]),e._v(" "),n("p",[e._v("TCPServer is used for the network interaction between nodes.")]),e._v(" "),n("blockquote",[n("p",[e._v("[HTTP]")])]),e._v(" "),n("p",[e._v("It defines the HTTP service parameters.")]),e._v(" "),n("p",[e._v("HTTPServer provides RESTful APIs.")]),e._v(" "),n("blockquote",[n("p",[e._v("[DB]")])]),e._v(" "),n("p",[e._v("It defines parameters of the PostgreSQL node database.")]),e._v(" "),n("blockquote",[n("p",[e._v("[StatsD]")])]),e._v(" "),n("p",[e._v("It defines parameters of the node operation indicator collector StatsD.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Centrifugo]")])]),e._v(" "),n("p",[e._v("It defines parameters of the notification service Centrifugo.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Log]")])]),e._v(" "),n("p",[e._v("It defines parameters of the log service Log.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TokenMovement]")])]),e._v(" "),n("p",[e._v("It defines parameters of the token circulation service TokenMovement.")]),e._v(" "),n("h2",{attrs:{id:"an-example-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#an-example-configuration-file"}},[e._v("#")]),e._v(" An example configuration file")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{484:function(e,t,n){"use strict";n.r(t);var o=n(51),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration-file"}},[e._v("#")]),e._v(" Server Configuration File")]),e._v(" "),n("p",[e._v("In this section, we will introduce parameters in the server configuration file.")]),e._v(" "),n("h2",{attrs:{id:"introduction-to-the-server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#introduction-to-the-server-configuration-file"}},[e._v("#")]),e._v(" Introduction to the server configuration file")]),e._v(" "),n("p",[e._v("The server configuration file defines the node configuration of IBAX.")]),e._v(" "),n("h2",{attrs:{id:"location"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),n("p",[e._v("This file is located in the working directory of the server and is named "),n("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"sections"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sections"}},[e._v("#")]),e._v(" Sections")]),e._v(" "),n("p",[e._v("The configuration file consists the following sections:")]),e._v(" "),n("blockquote",[n("p",[e._v("general section")])]),e._v(" "),n("p",[e._v("It defines the working directory DataDir, the first block directory FirstBlockPath and other parameters.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TCPServer]")])]),e._v(" "),n("p",[e._v("It defines the TCP service parameters.")]),e._v(" "),n("p",[e._v("TCPServer is used for the network interaction between nodes.")]),e._v(" "),n("blockquote",[n("p",[e._v("[HTTP]")])]),e._v(" "),n("p",[e._v("It defines the HTTP service parameters.")]),e._v(" "),n("p",[e._v("HTTPServer provides RESTful APIs.")]),e._v(" "),n("blockquote",[n("p",[e._v("[DB]")])]),e._v(" "),n("p",[e._v("It defines parameters of the PostgreSQL node database.")]),e._v(" "),n("blockquote",[n("p",[e._v("[StatsD]")])]),e._v(" "),n("p",[e._v("It defines parameters of the node operation indicator collector StatsD.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Centrifugo]")])]),e._v(" "),n("p",[e._v("It defines parameters of the notification service Centrifugo.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Log]")])]),e._v(" "),n("p",[e._v("It defines parameters of the log service Log.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TokenMovement]")])]),e._v(" "),n("p",[e._v("It defines parameters of the token circulation service TokenMovement.")]),e._v(" "),n("h2",{attrs:{id:"an-example-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#an-example-configuration-file"}},[e._v("#")]),e._v(" An example configuration file")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/106.2ddf3989.js b/assets/js/106.d34f9773.js similarity index 98% rename from assets/js/106.2ddf3989.js rename to assets/js/106.d34f9773.js index 78a0d9f..98d5eda 100644 --- a/assets/js/106.2ddf3989.js +++ b/assets/js/106.d34f9773.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{485:function(e,s,t){"use strict";t.r(s);var a=t(51),o=Object(a.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"synchronized-monitoring-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#synchronized-monitoring-tool"}},[e._v("#")]),e._v(" Synchronized Monitoring Tool")]),e._v(" "),t("p",[e._v("Desync_monitor is a special tool that can be used to verify whether the database on the specified node has been synchronized.")]),e._v(" "),t("p",[e._v("The tool can be used as a daemon or can be started to perform a one-time check.")]),e._v(" "),t("p",[e._v("The operating principle of the tool is based on the following:")]),e._v(" "),t("p",[e._v("1.Each block contains the hash of all changes of all transactions, request the specified node to provide its last block ID;\n2.Then request a block with this ID from all nodes and compare the above hashes;\n3.If the hashes are different, a synchronization error message will be sent to the email address specified in the command.")]),e._v(" "),t("h2",{attrs:{id:"location"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),t("p",[e._v("The tool is located in the "),t("code",[e._v("tools/desync_monitor/")]),e._v(" directory.")]),e._v(" "),t("h2",{attrs:{id:"command-prompt-flags"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#command-prompt-flags"}},[e._v("#")]),e._v(" Command prompt flags")]),e._v(" "),t("p",[e._v("The following flags can be used from the command prompt:")]),e._v(" "),t("ul",[t("li",[e._v("confPath - Path of the configuration file. The default file name is "),t("code",[e._v("config.toml")]),e._v(";")]),e._v(" "),t("li",[e._v("nodesList - Node list of the requested block, separated by commas. The default is "),t("code",[e._v("127.0.0.1:7079")]),e._v(";")]),e._v(" "),t("li",[e._v("daemonMode - Started as a daemon and should be used when authentication is required every N seconds. This flag is set to "),t("code",[e._v("false")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("queryingPeriod - If the tool is started as a daemon, this parameter sets the time interval (in seconds) between checks, "),t("code",[e._v("1")]),e._v(" second by default.")]),e._v(" "),t("li",[e._v("alertMessageTo – The email address to which synchronization warning errors will be sent.\n"),t("ul",[t("li",[e._v("alertMessageSubj - Message subject in the warning message, the "),t("code",[e._v("node synchronization")]),e._v(" problem by default;")]),e._v(" "),t("li",[e._v("alertMessageFrom - Address where the message was sent.")]),e._v(" "),t("li",[e._v("smtpHost - SMTP server host, used to send emails, the "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPort - SMTP server port, used to send email messages, "),t("code",[e._v("25")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpUsername - SMTP server username, "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPassword - SMTP server password, "),t("code",[e._v('""')]),e._v(" by default.")])])])]),e._v(" "),t("h2",{attrs:{id:"configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuration"}},[e._v("#")]),e._v(" Configuration")]),e._v(" "),t("p",[e._v("The tool uses a configuration file in toml format.")]),e._v(" "),t("p",[e._v("By default, it will look for the config.toml file in the folder where to start up the binary file.")]),e._v(" "),t("p",[e._v("The file path can be changed with the configPath flag.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('nodes_list = ["http://127.0.0.1:7079", "http://127.0.0.1:7002"]\n\n[daemon]\ndaemon = false\nquerying_period = 1\n\n[alert_message]\nto = ""\nsubject = "problem with xxx nodes"\nfrom = ""\n\n[smtp]\nhost = ""\nport = 25\nusername = ""\npassword = ""\n')])])]),t("h3",{attrs:{id:"nodes-list"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nodes-list"}},[e._v("#")]),e._v(" nodes_list")]),e._v(" "),t("ul",[t("li",[e._v("nodes_list - List of nodes (hosts) requesting information.")])]),e._v(" "),t("h3",{attrs:{id:"daemon"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" [daemon]")]),e._v(" "),t("p",[e._v("Configuration of the daemon mode.")]),e._v(" "),t("ul",[t("li",[e._v("daemon_mode – A tool works as a daemon and performs synchronization checks.")]),e._v(" "),t("li",[e._v("querying_period - Time interval between synchronization checks.")])]),e._v(" "),t("h3",{attrs:{id:"alert-message"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#alert-message"}},[e._v("#")]),e._v(" [alert_message]")]),e._v(" "),t("p",[e._v("Warning message parameters.")]),e._v(" "),t("ul",[t("li",[e._v("to - recipient's e-mail of synchronization error warning messages;")]),e._v(" "),t("li",[e._v("subject - message subject;")]),e._v(" "),t("li",[e._v("from - sender's e-mail.")])]),e._v(" "),t("h3",{attrs:{id:"smtp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#smtp"}},[e._v("#")]),e._v(" [smtp]")]),e._v(" "),t("p",[e._v("Simple Mail Transfer Protocol (SMTP) server parameters, used to send synchronization error messages.")]),e._v(" "),t("ul",[t("li",[e._v("host – SMTP server hose;")]),e._v(" "),t("li",[e._v("port –SMTP server port;")]),e._v(" "),t("li",[e._v("username – SMTP server user name;")]),e._v(" "),t("li",[e._v("password –SMTP server password;")])])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{486:function(e,s,t){"use strict";t.r(s);var a=t(51),o=Object(a.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"synchronized-monitoring-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#synchronized-monitoring-tool"}},[e._v("#")]),e._v(" Synchronized Monitoring Tool")]),e._v(" "),t("p",[e._v("Desync_monitor is a special tool that can be used to verify whether the database on the specified node has been synchronized.")]),e._v(" "),t("p",[e._v("The tool can be used as a daemon or can be started to perform a one-time check.")]),e._v(" "),t("p",[e._v("The operating principle of the tool is based on the following:")]),e._v(" "),t("p",[e._v("1.Each block contains the hash of all changes of all transactions, request the specified node to provide its last block ID;\n2.Then request a block with this ID from all nodes and compare the above hashes;\n3.If the hashes are different, a synchronization error message will be sent to the email address specified in the command.")]),e._v(" "),t("h2",{attrs:{id:"location"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),t("p",[e._v("The tool is located in the "),t("code",[e._v("tools/desync_monitor/")]),e._v(" directory.")]),e._v(" "),t("h2",{attrs:{id:"command-prompt-flags"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#command-prompt-flags"}},[e._v("#")]),e._v(" Command prompt flags")]),e._v(" "),t("p",[e._v("The following flags can be used from the command prompt:")]),e._v(" "),t("ul",[t("li",[e._v("confPath - Path of the configuration file. The default file name is "),t("code",[e._v("config.toml")]),e._v(";")]),e._v(" "),t("li",[e._v("nodesList - Node list of the requested block, separated by commas. The default is "),t("code",[e._v("127.0.0.1:7079")]),e._v(";")]),e._v(" "),t("li",[e._v("daemonMode - Started as a daemon and should be used when authentication is required every N seconds. This flag is set to "),t("code",[e._v("false")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("queryingPeriod - If the tool is started as a daemon, this parameter sets the time interval (in seconds) between checks, "),t("code",[e._v("1")]),e._v(" second by default.")]),e._v(" "),t("li",[e._v("alertMessageTo – The email address to which synchronization warning errors will be sent.\n"),t("ul",[t("li",[e._v("alertMessageSubj - Message subject in the warning message, the "),t("code",[e._v("node synchronization")]),e._v(" problem by default;")]),e._v(" "),t("li",[e._v("alertMessageFrom - Address where the message was sent.")]),e._v(" "),t("li",[e._v("smtpHost - SMTP server host, used to send emails, the "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPort - SMTP server port, used to send email messages, "),t("code",[e._v("25")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpUsername - SMTP server username, "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPassword - SMTP server password, "),t("code",[e._v('""')]),e._v(" by default.")])])])]),e._v(" "),t("h2",{attrs:{id:"configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuration"}},[e._v("#")]),e._v(" Configuration")]),e._v(" "),t("p",[e._v("The tool uses a configuration file in toml format.")]),e._v(" "),t("p",[e._v("By default, it will look for the config.toml file in the folder where to start up the binary file.")]),e._v(" "),t("p",[e._v("The file path can be changed with the configPath flag.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('nodes_list = ["http://127.0.0.1:7079", "http://127.0.0.1:7002"]\n\n[daemon]\ndaemon = false\nquerying_period = 1\n\n[alert_message]\nto = ""\nsubject = "problem with xxx nodes"\nfrom = ""\n\n[smtp]\nhost = ""\nport = 25\nusername = ""\npassword = ""\n')])])]),t("h3",{attrs:{id:"nodes-list"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nodes-list"}},[e._v("#")]),e._v(" nodes_list")]),e._v(" "),t("ul",[t("li",[e._v("nodes_list - List of nodes (hosts) requesting information.")])]),e._v(" "),t("h3",{attrs:{id:"daemon"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" [daemon]")]),e._v(" "),t("p",[e._v("Configuration of the daemon mode.")]),e._v(" "),t("ul",[t("li",[e._v("daemon_mode – A tool works as a daemon and performs synchronization checks.")]),e._v(" "),t("li",[e._v("querying_period - Time interval between synchronization checks.")])]),e._v(" "),t("h3",{attrs:{id:"alert-message"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#alert-message"}},[e._v("#")]),e._v(" [alert_message]")]),e._v(" "),t("p",[e._v("Warning message parameters.")]),e._v(" "),t("ul",[t("li",[e._v("to - recipient's e-mail of synchronization error warning messages;")]),e._v(" "),t("li",[e._v("subject - message subject;")]),e._v(" "),t("li",[e._v("from - sender's e-mail.")])]),e._v(" "),t("h3",{attrs:{id:"smtp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#smtp"}},[e._v("#")]),e._v(" [smtp]")]),e._v(" "),t("p",[e._v("Simple Mail Transfer Protocol (SMTP) server parameters, used to send synchronization error messages.")]),e._v(" "),t("ul",[t("li",[e._v("host – SMTP server hose;")]),e._v(" "),t("li",[e._v("port –SMTP server port;")]),e._v(" "),t("li",[e._v("username – SMTP server user name;")]),e._v(" "),t("li",[e._v("password –SMTP server password;")])])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/108.2ad33fac.js b/assets/js/108.95e66204.js similarity index 99% rename from assets/js/108.2ad33fac.js rename to assets/js/108.95e66204.js index efc255a..87a523f 100644 --- a/assets/js/108.2ad33fac.js +++ b/assets/js/108.95e66204.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{489:function(e,t,a){"use strict";a.r(t);var r=a(51),c=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#platform-parameters"}},[e._v("#")]),e._v(" Platform Parameters")]),e._v(" "),a("p",[e._v("These are parameters to configure IBAX. They are applicable to the blockchain network and all ecosystems within it.")]),e._v(" "),a("h2",{attrs:{id:"location-to-store-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#location-to-store-platform-parameters"}},[e._v("#")]),e._v(" Location to store platform parameters")]),e._v(" "),a("p",[e._v("Platform parameters are stored in the "),a("code",[e._v("system parameters")]),e._v(" table.")]),e._v(" "),a("p",[e._v("This table is located in the first (default) ecosystem created on the blockchain network.")]),e._v(" "),a("h2",{attrs:{id:"change-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#change-of-platform-parameters"}},[e._v("#")]),e._v(" Change of platform parameters")]),e._v(" "),a("p",[e._v("Change of platform parameters can only be made through voting. You can only use the UpdateSysParam contract to change any platform parameter, which is managed by definitions in the legal system of the platform.")]),e._v(" "),a("h2",{attrs:{id:"configure-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-platform-parameters"}},[e._v("#")]),e._v(" Configure platform parameters")]),e._v(" "),a("h3",{attrs:{id:"configure-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-blockchain-network"}},[e._v("#")]),e._v(" Configure the blockchain network")]),e._v(" "),a("p",[e._v("Nodes:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])])]),e._v(" "),a("p",[e._v("Node bans:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])])]),e._v(" "),a("h3",{attrs:{id:"configure-a-new-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-a-new-ecosystem"}},[e._v("#")]),e._v(" Configure a new ecosystem")]),e._v(" "),a("p",[e._v("Default page and menu:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])])]),e._v(" "),a("p",[e._v("Default contract:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-database"}},[e._v("#")]),e._v(" Configure the database")]),e._v(" "),a("p",[e._v("Table limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-generation-of-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("#")]),e._v(" Configure the generation of blocks")]),e._v(" "),a("p",[e._v("Time limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])])]),e._v(" "),a("p",[e._v("Transaction limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])])]),e._v(" "),a("p",[e._v("Size limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])])]),e._v(" "),a("p",[e._v("Fuel limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])])]),e._v(" "),a("p",[e._v("Block rollback limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-fuel-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-fuel-tokens"}},[e._v("#")]),e._v(" Configure the fuel tokens")]),e._v(" "),a("p",[e._v("Rewards and commissions:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])])]),e._v(" "),a("p",[e._v("Fuel rate conversion:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])])]),e._v(" "),a("p",[e._v("Transaction size and data price:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])])]),e._v(" "),a("p",[e._v("Price for new elements:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])])]),e._v(" "),a("p",[e._v("Price for operations:\n")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#platform-parameters"}},[e._v("Platform Parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#location-to-store-platform-parameters"}},[e._v("Location to store platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#change-of-platform-parameters"}},[e._v("Change of platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-platform-parameters"}},[e._v("Configure platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#configure-the-blockchain-network"}},[e._v("Configure the blockchain network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-a-new-ecosystem"}},[e._v("Configure a new ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-database"}},[e._v("Configure the database")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("Configure the generation of blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-fuel-tokens"}},[e._v("Configure the fuel tokens")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#depreciated"}},[e._v("Depreciated")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#details-of-platform-parameters"}},[e._v("Details of platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-address-to-id"}},[e._v("price exec address to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-bind-wallet"}},[e._v("price exec bind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-column-condition"}},[e._v("price exec column condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-compile-contract"}},[e._v("price exec compile contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contains"}},[e._v("price exec contains")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-id"}},[e._v("price exec contract by id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-name"}},[e._v("price exec contract by name")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contracts-list"}},[e._v("price exec contracts list")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-column"}},[e._v("price exec create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-ecosystem"}},[e._v("price exec create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-table"}},[e._v("price exec create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-ecosys-param"}},[e._v("price exec ecosys param")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval"}},[e._v("price exec eval")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval-condition"}},[e._v("price exec eval condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-flush-contract"}},[e._v("price exec flush contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-has-prefix"}},[e._v("price exec has prefix")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-id-to-address"}},[e._v("price exec id to address")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-is-object"}},[e._v("price exec is object")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-join"}},[e._v("price exec join")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-json-to-map"}},[e._v("price exec json to map")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-len"}},[e._v("price exec len")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-column"}},[e._v("price exec perm column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-table"}},[e._v("price exec perm table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-pub-to-id"}},[e._v("price exec pub to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-replace"}},[e._v("price exec replace")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sha256"}},[e._v("price exec sha256")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-size"}},[e._v("price exec size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-substr"}},[e._v("price exec substr")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-fuel"}},[e._v("price exec sys fuel")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-int"}},[e._v("price exec sys param int")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-string"}},[e._v("price exec sys param string")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-table-conditions"}},[e._v("price exec table conditions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-unbind-wallet"}},[e._v("price exec unbind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-update-lang"}},[e._v("price exec update lang")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-validate-condition"}},[e._v("price exec validate condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])])])])])]),e._v(" "),a("h3",{attrs:{id:"depreciated"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#depreciated"}},[e._v("#")]),e._v(" Depreciated")]),e._v(" "),a("p",[e._v("Depreciated parameters:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])])]),e._v(" "),a("h2",{attrs:{id:"details-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#details-of-platform-parameters"}},[e._v("#")]),e._v(" Details of platform parameters")]),e._v(" "),a("h3",{attrs:{id:"block-reward"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-reward"}},[e._v("#")]),e._v(" block reward")]),e._v(" "),a("p",[e._v("The number of IBXC tokens granted to the honor node that generates the block.")]),e._v(" "),a("p",[e._v("The account that receives the reward is specified in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-url"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-url"}},[e._v("#")]),e._v(" blockchain url")]),e._v(" "),a("p",[e._v("Depreciated.")]),e._v(" "),a("h3",{attrs:{id:"commission-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-size"}},[e._v("#")]),e._v(" commission size")]),e._v(" "),a("p",[e._v("Percentage of the commission.")]),e._v(" "),a("p",[e._v("The amount of the commission is calculated as a percentage of the total cost of implement the contract. The unit of the commission token is IBXC.")]),e._v(" "),a("p",[e._v("The commission will be transferred to the account address specified in the commission_wallet parameter.")]),e._v(" "),a("h3",{attrs:{id:"commission-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-wallet"}},[e._v("#")]),e._v(" commission wallet")]),e._v(" "),a("p",[e._v("The account address to receive the commission.")]),e._v(" "),a("p",[e._v("The amount of commission is specified by the commission_size parameter.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-contract"}},[e._v("#")]),e._v(" default ecosystem contract")]),e._v(" "),a("p",[e._v("The source code of the default contract in the new ecosystem.")]),e._v(" "),a("p",[e._v("This contract provides access to the ecosystem creator.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-menu"}},[e._v("#")]),e._v(" default ecosystem menu")]),e._v(" "),a("p",[e._v("The source code of the default menu of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-page"}},[e._v("#")]),e._v(" default ecosystem page")]),e._v(" "),a("p",[e._v("The source code of the default page of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"fuel-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fuel-rate"}},[e._v("#")]),e._v(" fuel rate")]),e._v(" "),a("p",[e._v("The exchange rates of different ecosystem tokens by fuel unit.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[["ecosystem_id", "token_to_fuel_rate"], ["ecosystem_id2", "token_to_fuel_rate2"], ...]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("ecosystem_id")])]),e._v(" "),a("p",[e._v("Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("token_to_fuel_rate")])]),e._v(" "),a("p",[e._v("Exchange rate of the token by fuel unit.")])])]),e._v(" "),a("p",[e._v("For example:")]),e._v(" "),a("p",[a("code",[e._v('[["1","1000000000000"], ["2", "1000"]]')])]),e._v(" "),a("p",[e._v("One token of Ecosystem 1 is exchanged for 1,000,000,000,000 fuel units. One token of Ecosystem 2 is exchanged for 1,000 fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-create-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-rate"}},[e._v("#")]),e._v(" price create rate")]),e._v(" "),a("p",[e._v("The fuel rate of a new element.")]),e._v(" "),a("h3",{attrs:{id:"full-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-nodes"}},[e._v("#")]),e._v(" full nodes")]),e._v(" "),a("p",[e._v("The list of honor nodes of the blockchain network.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[{"api_address":"https://apihost1:port1","public_key":"nodepub1","tcp_address":"tcphost1:port2"},{"api_address":"https://apihost2:port1","public_key":"nodepub2","tcp_address":"tcphost2:port2"}]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("tcp_address")])]),e._v(" "),a("p",[e._v("TCP address and port of the node host.\nTransactions and new blocks will be sent to this host address, which can also be used to obtain the complete blockchain from the first block.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("api_address")])]),e._v(" "),a("p",[e._v("API address and port of the node host.\nThrough the API address, you can access any function of the platform without using Weaver. See details in RESTful API.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("public_key")])]),e._v(" "),a("p",[e._v("Public key of the node, which is used to verify the block signature.")])])]),e._v(" "),a("h3",{attrs:{id:"gap-between-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gap-between-blocks"}},[e._v("#")]),e._v(" gap between blocks")]),e._v(" "),a("p",[e._v("The time interval (in seconds) of generating two blocks on a node.")]),e._v(" "),a("p",[e._v("All nodes in the network use it to determine when to generate a new block. If the current node does not generate a new block within this time period, the turn passes to the next node in the list of honor nodes.")]),e._v(" "),a("p",[e._v("The minimum value of this parameter is "),a("code",[e._v("1")]),e._v(" second.")]),e._v(" "),a("h3",{attrs:{id:"incorrect-blocks-per-day"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#incorrect-blocks-per-day"}},[e._v("#")]),e._v(" incorrect blocks per day")]),e._v(" "),a("p",[e._v("The number of bad blocks that a node is allowed to generate per day before being banned.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive the same number of bad blocks from a node, the node will be banned from the network within a time period specified in "),a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"max-block-generation-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-generation-time"}},[e._v("#")]),e._v(" max block generation time")]),e._v(" "),a("p",[e._v("The maximum time for generating a block, in milliseconds. If a block is not successfully generated within this time period, a timeout error will be reported.")]),e._v(" "),a("h3",{attrs:{id:"max-block-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-size"}},[e._v("#")]),e._v(" max block size")]),e._v(" "),a("p",[e._v("The maximum size of a block, in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-columns"}},[e._v("#")]),e._v(" max columns")]),e._v(" "),a("p",[e._v("The maximum number of fields in a single table.")]),e._v(" "),a("p",[e._v("However, it does not include the predefined "),a("code",[e._v("id")]),e._v(" column.")]),e._v(" "),a("h3",{attrs:{id:"max-forsign-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-forsign-size"}},[e._v("#")]),e._v(" max forsign size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction signature in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-block"}},[e._v("#")]),e._v(" max fuel block")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-tx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-tx"}},[e._v("#")]),e._v(" max fuel tx")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single transaction.")]),e._v(" "),a("h3",{attrs:{id:"max-indexes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-indexes"}},[e._v("#")]),e._v(" max indexes")]),e._v(" "),a("p",[e._v("The maximum number of primary key fields in a single table.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block"}},[e._v("#")]),e._v(" max tx block")]),e._v(" "),a("p",[e._v("The maximum number of transactions in a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block-per-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block-per-user"}},[e._v("#")]),e._v(" max tx block per user")]),e._v(" "),a("p",[e._v("The maximum number of transactions of an account in a block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-size"}},[e._v("#")]),e._v(" max tx size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction in bytes.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time"}},[e._v("#")]),e._v(" node ban time")]),e._v(" "),a("p",[e._v("The global ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive bad blocks from a node up to the number of "),a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")]),e._v(", the node will be banned in the network for this time period.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time-local"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time-local"}},[e._v("#")]),e._v(" node ban time local")]),e._v(" "),a("p",[e._v("The local ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When a node receives an incorrect block from another node, it will locally ban the sender's node during this time period.")]),e._v(" "),a("h3",{attrs:{id:"number-of-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#number-of-nodes"}},[e._v("#")]),e._v(" number of nodes")]),e._v(" "),a("p",[e._v("The maximum number of honor nodes in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"price-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-ecosystem"}},[e._v("#")]),e._v(" price create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single ecosystem.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewEcosystem")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-application"}},[e._v("#")]),e._v(" price create application")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single application.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewApplication")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-table"}},[e._v("#")]),e._v(" price create table")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewTable")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-column"}},[e._v("#")]),e._v(" price create column")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table field.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewColumn")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-contract"}},[e._v("#")]),e._v(" price create contract")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single contract.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewContract")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-menu"}},[e._v("#")]),e._v(" price create menu")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single menu.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewMenu")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-page"}},[e._v("#")]),e._v(" price create page")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single page.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewPage")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-address-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-address-to-id"}},[e._v("#")]),e._v(" price exec address to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("AddressToId()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-bind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-bind-wallet"}},[e._v("#")]),e._v(" price exec bind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Activate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-column-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-column-condition"}},[e._v("#")]),e._v(" price exec column condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ColumnCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-compile-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-compile-contract"}},[e._v("#")]),e._v(" price exec compile contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CompileContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contains"}},[e._v("#")]),e._v(" price exec contains")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Contains()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-id"}},[e._v("#")]),e._v(" price exec contract by id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("GetContractById()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-name"}},[e._v("#")]),e._v(" price exec contract by name")]),e._v(" "),a("p",[e._v("The fuel fee of calling the GetContractByName() function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contracts-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contracts-list"}},[e._v("#")]),e._v(" price exec contracts list")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ContractsList()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-column"}},[e._v("#")]),e._v(" price exec create column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-ecosystem"}},[e._v("#")]),e._v(" price exec create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateEcosystem()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-table"}},[e._v("#")]),e._v(" price exec create table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-ecosys-param"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-ecosys-param"}},[e._v("#")]),e._v(" price exec ecosys param")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EcosysParam()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval"}},[e._v("#")]),e._v(" price exec eval")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Eval()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval-condition"}},[e._v("#")]),e._v(" price exec eval condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EvalCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-flush-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-flush-contract"}},[e._v("#")]),e._v(" price exec flush contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("FlushContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-has-prefix"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-has-prefix"}},[e._v("#")]),e._v(" price exec has prefix")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("HasPrefix()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-id-to-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-id-to-address"}},[e._v("#")]),e._v(" price exec id to address")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IdToAddress()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-is-object"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-is-object"}},[e._v("#")]),e._v(" price exec is object")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IsObject()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-join"}},[e._v("#")]),e._v(" price exec join")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Join()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-json-to-map"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-json-to-map"}},[e._v("#")]),e._v(" price exec json to map")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("JSONToMap()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-len"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-len"}},[e._v("#")]),e._v(" price exec len")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Len()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-column"}},[e._v("#")]),e._v(" price exec perm column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-table"}},[e._v("#")]),e._v(" price exec perm table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-pub-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-pub-to-id"}},[e._v("#")]),e._v(" price exec pub to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PubToID()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-replace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-replace"}},[e._v("#")]),e._v(" price exec replace")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Replace()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sha256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sha256"}},[e._v("#")]),e._v(" price exec sha256")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Sha256()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-size"}},[e._v("#")]),e._v(" price exec size")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Size()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-substr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-substr"}},[e._v("#")]),e._v(" price exec substr")]),e._v(" "),a("p",[e._v("The fuel fee of calling "),a("code",[e._v("theSubstr()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-fuel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-fuel"}},[e._v("#")]),e._v(" price exec sys fuel")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysFuel()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-int"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-int"}},[e._v("#")]),e._v(" price exec sys param int")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamInt()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-string"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-string"}},[e._v("#")]),e._v(" price exec sys param string")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamString()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-table-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-table-conditions"}},[e._v("#")]),e._v(" price exec table conditions")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("TableConditions()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-unbind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-unbind-wallet"}},[e._v("#")]),e._v(" price exec unbind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Deactivate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-update-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-update-lang"}},[e._v("#")]),e._v(" price exec update lang")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("UpdateLang()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-validate-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-validate-condition"}},[e._v("#")]),e._v(" price exec validate condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ValidateCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-data"}},[e._v("#")]),e._v(" price tx data")]),e._v(" "),a("p",[e._v("The fuel fee for every 1024 bytes of a transaction, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-size-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-size-wallet"}},[e._v("#")]),e._v(" price tx size wallet")]),e._v(" "),a("p",[e._v("The fee by transaction size, its unit is the IBXC token.")]),e._v(" "),a("p",[e._v("Except the ecosystem 1, a block space usage fee will be incurred proportionally when implementing a contract in other ecosystems, and its rate is "),a("em",[e._v("price tx size wallet")]),e._v(" IBXC tokens per megabyte.")]),e._v(" "),a("h3",{attrs:{id:"rollback-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-blocks"}},[e._v("#")]),e._v(" rollback blocks")]),e._v(" "),a("p",[e._v("Maximum number of blocks that can be rolled back when detecting a fork in the blockchain.")])])}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{488:function(e,t,a){"use strict";a.r(t);var r=a(51),c=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#platform-parameters"}},[e._v("#")]),e._v(" Platform Parameters")]),e._v(" "),a("p",[e._v("These are parameters to configure IBAX. They are applicable to the blockchain network and all ecosystems within it.")]),e._v(" "),a("h2",{attrs:{id:"location-to-store-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#location-to-store-platform-parameters"}},[e._v("#")]),e._v(" Location to store platform parameters")]),e._v(" "),a("p",[e._v("Platform parameters are stored in the "),a("code",[e._v("system parameters")]),e._v(" table.")]),e._v(" "),a("p",[e._v("This table is located in the first (default) ecosystem created on the blockchain network.")]),e._v(" "),a("h2",{attrs:{id:"change-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#change-of-platform-parameters"}},[e._v("#")]),e._v(" Change of platform parameters")]),e._v(" "),a("p",[e._v("Change of platform parameters can only be made through voting. You can only use the UpdateSysParam contract to change any platform parameter, which is managed by definitions in the legal system of the platform.")]),e._v(" "),a("h2",{attrs:{id:"configure-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-platform-parameters"}},[e._v("#")]),e._v(" Configure platform parameters")]),e._v(" "),a("h3",{attrs:{id:"configure-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-blockchain-network"}},[e._v("#")]),e._v(" Configure the blockchain network")]),e._v(" "),a("p",[e._v("Nodes:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])])]),e._v(" "),a("p",[e._v("Node bans:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])])]),e._v(" "),a("h3",{attrs:{id:"configure-a-new-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-a-new-ecosystem"}},[e._v("#")]),e._v(" Configure a new ecosystem")]),e._v(" "),a("p",[e._v("Default page and menu:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])])]),e._v(" "),a("p",[e._v("Default contract:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-database"}},[e._v("#")]),e._v(" Configure the database")]),e._v(" "),a("p",[e._v("Table limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-generation-of-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("#")]),e._v(" Configure the generation of blocks")]),e._v(" "),a("p",[e._v("Time limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])])]),e._v(" "),a("p",[e._v("Transaction limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])])]),e._v(" "),a("p",[e._v("Size limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])])]),e._v(" "),a("p",[e._v("Fuel limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])])]),e._v(" "),a("p",[e._v("Block rollback limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-fuel-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-fuel-tokens"}},[e._v("#")]),e._v(" Configure the fuel tokens")]),e._v(" "),a("p",[e._v("Rewards and commissions:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])])]),e._v(" "),a("p",[e._v("Fuel rate conversion:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])])]),e._v(" "),a("p",[e._v("Transaction size and data price:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])])]),e._v(" "),a("p",[e._v("Price for new elements:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])])]),e._v(" "),a("p",[e._v("Price for operations:\n")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#platform-parameters"}},[e._v("Platform Parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#location-to-store-platform-parameters"}},[e._v("Location to store platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#change-of-platform-parameters"}},[e._v("Change of platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-platform-parameters"}},[e._v("Configure platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#configure-the-blockchain-network"}},[e._v("Configure the blockchain network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-a-new-ecosystem"}},[e._v("Configure a new ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-database"}},[e._v("Configure the database")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("Configure the generation of blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-fuel-tokens"}},[e._v("Configure the fuel tokens")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#depreciated"}},[e._v("Depreciated")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#details-of-platform-parameters"}},[e._v("Details of platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-address-to-id"}},[e._v("price exec address to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-bind-wallet"}},[e._v("price exec bind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-column-condition"}},[e._v("price exec column condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-compile-contract"}},[e._v("price exec compile contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contains"}},[e._v("price exec contains")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-id"}},[e._v("price exec contract by id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-name"}},[e._v("price exec contract by name")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contracts-list"}},[e._v("price exec contracts list")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-column"}},[e._v("price exec create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-ecosystem"}},[e._v("price exec create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-table"}},[e._v("price exec create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-ecosys-param"}},[e._v("price exec ecosys param")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval"}},[e._v("price exec eval")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval-condition"}},[e._v("price exec eval condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-flush-contract"}},[e._v("price exec flush contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-has-prefix"}},[e._v("price exec has prefix")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-id-to-address"}},[e._v("price exec id to address")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-is-object"}},[e._v("price exec is object")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-join"}},[e._v("price exec join")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-json-to-map"}},[e._v("price exec json to map")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-len"}},[e._v("price exec len")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-column"}},[e._v("price exec perm column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-table"}},[e._v("price exec perm table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-pub-to-id"}},[e._v("price exec pub to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-replace"}},[e._v("price exec replace")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sha256"}},[e._v("price exec sha256")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-size"}},[e._v("price exec size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-substr"}},[e._v("price exec substr")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-fuel"}},[e._v("price exec sys fuel")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-int"}},[e._v("price exec sys param int")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-string"}},[e._v("price exec sys param string")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-table-conditions"}},[e._v("price exec table conditions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-unbind-wallet"}},[e._v("price exec unbind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-update-lang"}},[e._v("price exec update lang")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-validate-condition"}},[e._v("price exec validate condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])])])])])]),e._v(" "),a("h3",{attrs:{id:"depreciated"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#depreciated"}},[e._v("#")]),e._v(" Depreciated")]),e._v(" "),a("p",[e._v("Depreciated parameters:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])])]),e._v(" "),a("h2",{attrs:{id:"details-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#details-of-platform-parameters"}},[e._v("#")]),e._v(" Details of platform parameters")]),e._v(" "),a("h3",{attrs:{id:"block-reward"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-reward"}},[e._v("#")]),e._v(" block reward")]),e._v(" "),a("p",[e._v("The number of IBXC tokens granted to the honor node that generates the block.")]),e._v(" "),a("p",[e._v("The account that receives the reward is specified in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-url"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-url"}},[e._v("#")]),e._v(" blockchain url")]),e._v(" "),a("p",[e._v("Depreciated.")]),e._v(" "),a("h3",{attrs:{id:"commission-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-size"}},[e._v("#")]),e._v(" commission size")]),e._v(" "),a("p",[e._v("Percentage of the commission.")]),e._v(" "),a("p",[e._v("The amount of the commission is calculated as a percentage of the total cost of implement the contract. The unit of the commission token is IBXC.")]),e._v(" "),a("p",[e._v("The commission will be transferred to the account address specified in the commission_wallet parameter.")]),e._v(" "),a("h3",{attrs:{id:"commission-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-wallet"}},[e._v("#")]),e._v(" commission wallet")]),e._v(" "),a("p",[e._v("The account address to receive the commission.")]),e._v(" "),a("p",[e._v("The amount of commission is specified by the commission_size parameter.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-contract"}},[e._v("#")]),e._v(" default ecosystem contract")]),e._v(" "),a("p",[e._v("The source code of the default contract in the new ecosystem.")]),e._v(" "),a("p",[e._v("This contract provides access to the ecosystem creator.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-menu"}},[e._v("#")]),e._v(" default ecosystem menu")]),e._v(" "),a("p",[e._v("The source code of the default menu of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-page"}},[e._v("#")]),e._v(" default ecosystem page")]),e._v(" "),a("p",[e._v("The source code of the default page of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"fuel-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fuel-rate"}},[e._v("#")]),e._v(" fuel rate")]),e._v(" "),a("p",[e._v("The exchange rates of different ecosystem tokens by fuel unit.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[["ecosystem_id", "token_to_fuel_rate"], ["ecosystem_id2", "token_to_fuel_rate2"], ...]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("ecosystem_id")])]),e._v(" "),a("p",[e._v("Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("token_to_fuel_rate")])]),e._v(" "),a("p",[e._v("Exchange rate of the token by fuel unit.")])])]),e._v(" "),a("p",[e._v("For example:")]),e._v(" "),a("p",[a("code",[e._v('[["1","1000000000000"], ["2", "1000"]]')])]),e._v(" "),a("p",[e._v("One token of Ecosystem 1 is exchanged for 1,000,000,000,000 fuel units. One token of Ecosystem 2 is exchanged for 1,000 fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-create-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-rate"}},[e._v("#")]),e._v(" price create rate")]),e._v(" "),a("p",[e._v("The fuel rate of a new element.")]),e._v(" "),a("h3",{attrs:{id:"full-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-nodes"}},[e._v("#")]),e._v(" full nodes")]),e._v(" "),a("p",[e._v("The list of honor nodes of the blockchain network.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[{"api_address":"https://apihost1:port1","public_key":"nodepub1","tcp_address":"tcphost1:port2"},{"api_address":"https://apihost2:port1","public_key":"nodepub2","tcp_address":"tcphost2:port2"}]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("tcp_address")])]),e._v(" "),a("p",[e._v("TCP address and port of the node host.\nTransactions and new blocks will be sent to this host address, which can also be used to obtain the complete blockchain from the first block.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("api_address")])]),e._v(" "),a("p",[e._v("API address and port of the node host.\nThrough the API address, you can access any function of the platform without using Weaver. See details in RESTful API.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("public_key")])]),e._v(" "),a("p",[e._v("Public key of the node, which is used to verify the block signature.")])])]),e._v(" "),a("h3",{attrs:{id:"gap-between-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gap-between-blocks"}},[e._v("#")]),e._v(" gap between blocks")]),e._v(" "),a("p",[e._v("The time interval (in seconds) of generating two blocks on a node.")]),e._v(" "),a("p",[e._v("All nodes in the network use it to determine when to generate a new block. If the current node does not generate a new block within this time period, the turn passes to the next node in the list of honor nodes.")]),e._v(" "),a("p",[e._v("The minimum value of this parameter is "),a("code",[e._v("1")]),e._v(" second.")]),e._v(" "),a("h3",{attrs:{id:"incorrect-blocks-per-day"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#incorrect-blocks-per-day"}},[e._v("#")]),e._v(" incorrect blocks per day")]),e._v(" "),a("p",[e._v("The number of bad blocks that a node is allowed to generate per day before being banned.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive the same number of bad blocks from a node, the node will be banned from the network within a time period specified in "),a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"max-block-generation-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-generation-time"}},[e._v("#")]),e._v(" max block generation time")]),e._v(" "),a("p",[e._v("The maximum time for generating a block, in milliseconds. If a block is not successfully generated within this time period, a timeout error will be reported.")]),e._v(" "),a("h3",{attrs:{id:"max-block-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-size"}},[e._v("#")]),e._v(" max block size")]),e._v(" "),a("p",[e._v("The maximum size of a block, in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-columns"}},[e._v("#")]),e._v(" max columns")]),e._v(" "),a("p",[e._v("The maximum number of fields in a single table.")]),e._v(" "),a("p",[e._v("However, it does not include the predefined "),a("code",[e._v("id")]),e._v(" column.")]),e._v(" "),a("h3",{attrs:{id:"max-forsign-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-forsign-size"}},[e._v("#")]),e._v(" max forsign size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction signature in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-block"}},[e._v("#")]),e._v(" max fuel block")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-tx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-tx"}},[e._v("#")]),e._v(" max fuel tx")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single transaction.")]),e._v(" "),a("h3",{attrs:{id:"max-indexes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-indexes"}},[e._v("#")]),e._v(" max indexes")]),e._v(" "),a("p",[e._v("The maximum number of primary key fields in a single table.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block"}},[e._v("#")]),e._v(" max tx block")]),e._v(" "),a("p",[e._v("The maximum number of transactions in a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block-per-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block-per-user"}},[e._v("#")]),e._v(" max tx block per user")]),e._v(" "),a("p",[e._v("The maximum number of transactions of an account in a block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-size"}},[e._v("#")]),e._v(" max tx size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction in bytes.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time"}},[e._v("#")]),e._v(" node ban time")]),e._v(" "),a("p",[e._v("The global ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive bad blocks from a node up to the number of "),a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")]),e._v(", the node will be banned in the network for this time period.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time-local"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time-local"}},[e._v("#")]),e._v(" node ban time local")]),e._v(" "),a("p",[e._v("The local ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When a node receives an incorrect block from another node, it will locally ban the sender's node during this time period.")]),e._v(" "),a("h3",{attrs:{id:"number-of-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#number-of-nodes"}},[e._v("#")]),e._v(" number of nodes")]),e._v(" "),a("p",[e._v("The maximum number of honor nodes in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"price-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-ecosystem"}},[e._v("#")]),e._v(" price create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single ecosystem.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewEcosystem")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-application"}},[e._v("#")]),e._v(" price create application")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single application.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewApplication")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-table"}},[e._v("#")]),e._v(" price create table")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewTable")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-column"}},[e._v("#")]),e._v(" price create column")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table field.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewColumn")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-contract"}},[e._v("#")]),e._v(" price create contract")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single contract.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewContract")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-menu"}},[e._v("#")]),e._v(" price create menu")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single menu.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewMenu")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-page"}},[e._v("#")]),e._v(" price create page")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single page.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewPage")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-address-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-address-to-id"}},[e._v("#")]),e._v(" price exec address to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("AddressToId()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-bind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-bind-wallet"}},[e._v("#")]),e._v(" price exec bind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Activate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-column-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-column-condition"}},[e._v("#")]),e._v(" price exec column condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ColumnCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-compile-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-compile-contract"}},[e._v("#")]),e._v(" price exec compile contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CompileContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contains"}},[e._v("#")]),e._v(" price exec contains")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Contains()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-id"}},[e._v("#")]),e._v(" price exec contract by id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("GetContractById()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-name"}},[e._v("#")]),e._v(" price exec contract by name")]),e._v(" "),a("p",[e._v("The fuel fee of calling the GetContractByName() function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contracts-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contracts-list"}},[e._v("#")]),e._v(" price exec contracts list")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ContractsList()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-column"}},[e._v("#")]),e._v(" price exec create column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-ecosystem"}},[e._v("#")]),e._v(" price exec create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateEcosystem()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-table"}},[e._v("#")]),e._v(" price exec create table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-ecosys-param"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-ecosys-param"}},[e._v("#")]),e._v(" price exec ecosys param")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EcosysParam()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval"}},[e._v("#")]),e._v(" price exec eval")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Eval()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval-condition"}},[e._v("#")]),e._v(" price exec eval condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EvalCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-flush-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-flush-contract"}},[e._v("#")]),e._v(" price exec flush contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("FlushContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-has-prefix"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-has-prefix"}},[e._v("#")]),e._v(" price exec has prefix")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("HasPrefix()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-id-to-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-id-to-address"}},[e._v("#")]),e._v(" price exec id to address")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IdToAddress()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-is-object"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-is-object"}},[e._v("#")]),e._v(" price exec is object")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IsObject()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-join"}},[e._v("#")]),e._v(" price exec join")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Join()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-json-to-map"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-json-to-map"}},[e._v("#")]),e._v(" price exec json to map")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("JSONToMap()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-len"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-len"}},[e._v("#")]),e._v(" price exec len")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Len()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-column"}},[e._v("#")]),e._v(" price exec perm column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-table"}},[e._v("#")]),e._v(" price exec perm table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-pub-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-pub-to-id"}},[e._v("#")]),e._v(" price exec pub to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PubToID()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-replace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-replace"}},[e._v("#")]),e._v(" price exec replace")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Replace()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sha256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sha256"}},[e._v("#")]),e._v(" price exec sha256")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Sha256()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-size"}},[e._v("#")]),e._v(" price exec size")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Size()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-substr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-substr"}},[e._v("#")]),e._v(" price exec substr")]),e._v(" "),a("p",[e._v("The fuel fee of calling "),a("code",[e._v("theSubstr()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-fuel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-fuel"}},[e._v("#")]),e._v(" price exec sys fuel")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysFuel()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-int"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-int"}},[e._v("#")]),e._v(" price exec sys param int")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamInt()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-string"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-string"}},[e._v("#")]),e._v(" price exec sys param string")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamString()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-table-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-table-conditions"}},[e._v("#")]),e._v(" price exec table conditions")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("TableConditions()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-unbind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-unbind-wallet"}},[e._v("#")]),e._v(" price exec unbind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Deactivate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-update-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-update-lang"}},[e._v("#")]),e._v(" price exec update lang")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("UpdateLang()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-validate-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-validate-condition"}},[e._v("#")]),e._v(" price exec validate condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ValidateCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-data"}},[e._v("#")]),e._v(" price tx data")]),e._v(" "),a("p",[e._v("The fuel fee for every 1024 bytes of a transaction, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-size-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-size-wallet"}},[e._v("#")]),e._v(" price tx size wallet")]),e._v(" "),a("p",[e._v("The fee by transaction size, its unit is the IBXC token.")]),e._v(" "),a("p",[e._v("Except the ecosystem 1, a block space usage fee will be incurred proportionally when implementing a contract in other ecosystems, and its rate is "),a("em",[e._v("price tx size wallet")]),e._v(" IBXC tokens per megabyte.")]),e._v(" "),a("h3",{attrs:{id:"rollback-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-blocks"}},[e._v("#")]),e._v(" rollback blocks")]),e._v(" "),a("p",[e._v("Maximum number of blocks that can be rolled back when detecting a fork in the blockchain.")])])}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file diff --git a/assets/js/109.72abead6.js b/assets/js/109.e903b5a2.js similarity index 99% rename from assets/js/109.72abead6.js rename to assets/js/109.e903b5a2.js index 3a8c646..16386c3 100644 --- a/assets/js/109.72abead6.js +++ b/assets/js/109.e903b5a2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[109],{488:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" Daemon")]),e._v(" "),a("p",[e._v("In this section, we will describe how IBax nodes interact with each other from a technical perspective.")]),e._v(" "),a("h2",{attrs:{id:"about-the-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#about-the-server-daemon"}},[e._v("#")]),e._v(" About the server daemon")]),e._v(" "),a("p",[e._v("The server daemon needs to run on every network node, which executes various server functions and supports IBax's blockchain protocol. In the blockchain network, the daemon distributes blocks and transactions, generates new blocks, and verifies blocks and transactions received, and it can avoid the fork issue.")]),e._v(" "),a("h3",{attrs:{id:"honor-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node-daemon"}},[e._v("#")]),e._v(" Honor node daemon")]),e._v(" "),a("p",[e._v("A honor node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-daemon"}},[e._v("BlockGenerator daemon")])]),e._v(" "),a("p",[e._v("Generating new blocks.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("p",[e._v("Downloading new blocks from other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("p",[e._v("Confirming that blocks on the node also exist on most other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("p",[e._v("Distributing transactions and blocks to other honor nodes.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks daemon")]),e._v(" "),a("p",[e._v("Blocks in the queue, which contains blocks from other nodes.")]),e._v(" "),a("p",[e._v("Block processing logic is the same as "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx daemon")]),e._v(" "),a("p",[e._v("Verifying the transactions in queue.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler daemon")]),e._v(" "),a("p",[e._v("Running contracts as scheduled.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node-daemon"}},[e._v("#")]),e._v(" Guardian node daemon")]),e._v(" "),a("p",[e._v("A guardian node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Scheduler")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection daemon")]),e._v(" "),a("p",[e._v("This daemon downloads blocks and synchronizes the blockchain with other network nodes.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronization"}},[e._v("#")]),e._v(" Blockchain synchronization")]),e._v(" "),a("p",[e._v("This daemon synchronizes the blockchain by determining the maximum block height in the blockchain network, requesting new blocks, and solving the fork issue in the blockchain.")]),e._v(" "),a("h4",{attrs:{id:"check-for-blockchain-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-for-blockchain-updates"}},[e._v("#")]),e._v(" Check for blockchain updates")]),e._v(" "),a("p",[e._v("This daemon sends requests from the current block ID to all honor nodes.")]),e._v(" "),a("p",[e._v("If the current block ID of the node running the daemon is less than the current block ID of any honor node, the blockchain network node is considered out of date.")]),e._v(" "),a("h4",{attrs:{id:"download-new-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-new-blocks"}},[e._v("#")]),e._v(" Download new blocks")]),e._v(" "),a("p",[e._v("The node that returns the largest current block height is considered the latest node.\nThe daemon downloads all unknown blocks.")]),e._v(" "),a("h4",{attrs:{id:"solving-the-fork-issue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[e._v("#")]),e._v(" Solving the fork issue")]),e._v(" "),a("p",[e._v("If a fork is detected in the blockchain, the daemon moves the fork backward by downloading all blocks to a common parent block.\nWhen found the common parent block, a blockchain rollback is performed on the node running the daemon, and the correct block is added to the blockchain until the latest one is included.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlocksCollection daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockCollection daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" points to the largest block ID among all honor nodes.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" points to the data with the largest block ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-daemon"}},[e._v("#")]),e._v(" BlockGenerator daemon")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon generates new blocks.")]),e._v(" "),a("h3",{attrs:{id:"pre-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pre-verification"}},[e._v("#")]),e._v(" Pre-verification")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon analyzes the latest blocks in the blockchain to make new block generation plans.")]),e._v(" "),a("p",[e._v("If the following conditions are met, a new block can be generated:")]),e._v(" "),a("ul",[a("li",[e._v("The node that generated the latest block is in a node within the honor node list and runs the daemon.")]),e._v(" "),a("li",[e._v("The shortest time since the latest unverified block was generated.")])]),e._v(" "),a("h3",{attrs:{id:"block-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-generation"}},[e._v("#")]),e._v(" Block generation")]),e._v(" "),a("p",[e._v("A new block generated by the daemon contains all new transactions, which can be received from the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(" of other nodes or generated by the node running the daemon. The block generated is stored in the node database.")]),e._v(" "),a("h3",{attrs:{id:"tables-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-2"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (saves new blocks)")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon does not make any request to other daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator daemon")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends transactions and blocks to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[e._v("#")]),e._v(" Guardian node")]),e._v(" "),a("p",[e._v("When working on a guardian node, the daemon sends transactions generated by its node to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),a("p",[e._v("When working on a honor node, the daemon sends blocks generated and transaction hashes to all honor nodes.")]),e._v(" "),a("p",[e._v("Then, the honor node responds to transaction requests unknown to it. The daemon sends the complete transaction data as a response.")]),e._v(" "),a("h3",{attrs:{id:"tables-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-3"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Disseminator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("transactions")])]),e._v(" "),a("h3",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Send transactions and block hashes to the honor node.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Receive transaction data from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"confirmations-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirmations-daemon"}},[e._v("#")]),e._v(" Confirmations daemon")]),e._v(" "),a("p",[e._v("The Confirmations daemon checks whether all the blocks in its node exist on most other nodes.")]),e._v(" "),a("h3",{attrs:{id:"block-confirmation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-confirmation"}},[e._v("#")]),e._v(" Block confirmation")]),e._v(" "),a("p",[e._v("A block confirmed by multiple node in the network is considered as a confirmed block.")]),e._v(" "),a("p",[e._v("The daemon confirms all blocks one by one starting from the first that is currently not confirmed in the database.")]),e._v(" "),a("p",[e._v("Each block is confirmed in the way as follows:")]),e._v(" "),a("ul",[a("li",[e._v("Sending a request containing the ID of the block being confirmed to all honor nodes.")]),e._v(" "),a("li",[e._v("All honor nodes respond to the block hash.")]),e._v(" "),a("li",[e._v("If the hash responded matches the hash of the block on the daemon node, the confirmation counter value is increased. If not, the cancellation counter value is increased.")])]),e._v(" "),a("h3",{attrs:{id:"tables-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-4"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Confirmations daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("confirmation")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Confirmations daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Request block hashes from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-service-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-service-protocol"}},[e._v("#")]),e._v(" TCP service protocol")]),e._v(" "),a("p",[e._v("The TCP service protocol works on honor nodes and guardian nodes, which uses the binary protocol on TCP to requests from the BlocksCollection, Disseminator, and Confirmation daemons.")]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[e._v("Each request has a type defined by the first two bytes of the request.")]),e._v(" "),a("h2",{attrs:{id:"type-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-1"}},[e._v("#")]),e._v(" Type 1")]),e._v(" "),a("h4",{attrs:{id:"request-sender"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Hashes of the transaction and block.")]),e._v(" "),a("h4",{attrs:{id:"request-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("The block hash is added to the block queue.")]),e._v(" "),a("p",[e._v("Analyzes and verifies the transaction hashes, and select transactions that have not yet appeared on the node.")]),e._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No. After processing the request, a "),a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" request is issued.")]),e._v(" "),a("h2",{attrs:{id:"type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-2"}},[e._v("#")]),e._v(" Type 2")]),e._v(" "),a("h4",{attrs:{id:"request-sender-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-2"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-2"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("The transaction data, including the data size:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the transaction data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The transaction data.")]),e._v(" "),a("h4",{attrs:{id:"request-processing-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing-2"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("Verifies the transaction and add it to the transaction queue.")]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h2",{attrs:{id:"type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-4"}},[e._v("#")]),e._v(" Type 4")]),e._v(" "),a("h4",{attrs:{id:"request-sender-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-3"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-3"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block hash.")]),e._v(" "),a("p",[e._v("Returns "),a("code",[e._v("0")]),e._v(" if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-7"}},[e._v("#")]),e._v(" Type 7")]),e._v(" "),a("h4",{attrs:{id:"request-sender-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-4"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-4"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The block data, including data size.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the block data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The block data.")]),e._v(" "),a("p",[e._v("The connection is closed if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-10"}},[e._v("#")]),e._v(" Type 10")]),e._v(" "),a("h4",{attrs:{id:"request-sender-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-5"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-5"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[109],{489:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" Daemon")]),e._v(" "),a("p",[e._v("In this section, we will describe how IBax nodes interact with each other from a technical perspective.")]),e._v(" "),a("h2",{attrs:{id:"about-the-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#about-the-server-daemon"}},[e._v("#")]),e._v(" About the server daemon")]),e._v(" "),a("p",[e._v("The server daemon needs to run on every network node, which executes various server functions and supports IBax's blockchain protocol. In the blockchain network, the daemon distributes blocks and transactions, generates new blocks, and verifies blocks and transactions received, and it can avoid the fork issue.")]),e._v(" "),a("h3",{attrs:{id:"honor-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node-daemon"}},[e._v("#")]),e._v(" Honor node daemon")]),e._v(" "),a("p",[e._v("A honor node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-daemon"}},[e._v("BlockGenerator daemon")])]),e._v(" "),a("p",[e._v("Generating new blocks.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("p",[e._v("Downloading new blocks from other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("p",[e._v("Confirming that blocks on the node also exist on most other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("p",[e._v("Distributing transactions and blocks to other honor nodes.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks daemon")]),e._v(" "),a("p",[e._v("Blocks in the queue, which contains blocks from other nodes.")]),e._v(" "),a("p",[e._v("Block processing logic is the same as "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx daemon")]),e._v(" "),a("p",[e._v("Verifying the transactions in queue.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler daemon")]),e._v(" "),a("p",[e._v("Running contracts as scheduled.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node-daemon"}},[e._v("#")]),e._v(" Guardian node daemon")]),e._v(" "),a("p",[e._v("A guardian node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Scheduler")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection daemon")]),e._v(" "),a("p",[e._v("This daemon downloads blocks and synchronizes the blockchain with other network nodes.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronization"}},[e._v("#")]),e._v(" Blockchain synchronization")]),e._v(" "),a("p",[e._v("This daemon synchronizes the blockchain by determining the maximum block height in the blockchain network, requesting new blocks, and solving the fork issue in the blockchain.")]),e._v(" "),a("h4",{attrs:{id:"check-for-blockchain-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-for-blockchain-updates"}},[e._v("#")]),e._v(" Check for blockchain updates")]),e._v(" "),a("p",[e._v("This daemon sends requests from the current block ID to all honor nodes.")]),e._v(" "),a("p",[e._v("If the current block ID of the node running the daemon is less than the current block ID of any honor node, the blockchain network node is considered out of date.")]),e._v(" "),a("h4",{attrs:{id:"download-new-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-new-blocks"}},[e._v("#")]),e._v(" Download new blocks")]),e._v(" "),a("p",[e._v("The node that returns the largest current block height is considered the latest node.\nThe daemon downloads all unknown blocks.")]),e._v(" "),a("h4",{attrs:{id:"solving-the-fork-issue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[e._v("#")]),e._v(" Solving the fork issue")]),e._v(" "),a("p",[e._v("If a fork is detected in the blockchain, the daemon moves the fork backward by downloading all blocks to a common parent block.\nWhen found the common parent block, a blockchain rollback is performed on the node running the daemon, and the correct block is added to the blockchain until the latest one is included.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlocksCollection daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockCollection daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" points to the largest block ID among all honor nodes.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" points to the data with the largest block ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-daemon"}},[e._v("#")]),e._v(" BlockGenerator daemon")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon generates new blocks.")]),e._v(" "),a("h3",{attrs:{id:"pre-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pre-verification"}},[e._v("#")]),e._v(" Pre-verification")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon analyzes the latest blocks in the blockchain to make new block generation plans.")]),e._v(" "),a("p",[e._v("If the following conditions are met, a new block can be generated:")]),e._v(" "),a("ul",[a("li",[e._v("The node that generated the latest block is in a node within the honor node list and runs the daemon.")]),e._v(" "),a("li",[e._v("The shortest time since the latest unverified block was generated.")])]),e._v(" "),a("h3",{attrs:{id:"block-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-generation"}},[e._v("#")]),e._v(" Block generation")]),e._v(" "),a("p",[e._v("A new block generated by the daemon contains all new transactions, which can be received from the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(" of other nodes or generated by the node running the daemon. The block generated is stored in the node database.")]),e._v(" "),a("h3",{attrs:{id:"tables-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-2"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (saves new blocks)")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon does not make any request to other daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator daemon")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends transactions and blocks to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[e._v("#")]),e._v(" Guardian node")]),e._v(" "),a("p",[e._v("When working on a guardian node, the daemon sends transactions generated by its node to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),a("p",[e._v("When working on a honor node, the daemon sends blocks generated and transaction hashes to all honor nodes.")]),e._v(" "),a("p",[e._v("Then, the honor node responds to transaction requests unknown to it. The daemon sends the complete transaction data as a response.")]),e._v(" "),a("h3",{attrs:{id:"tables-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-3"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Disseminator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("transactions")])]),e._v(" "),a("h3",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Send transactions and block hashes to the honor node.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Receive transaction data from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"confirmations-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirmations-daemon"}},[e._v("#")]),e._v(" Confirmations daemon")]),e._v(" "),a("p",[e._v("The Confirmations daemon checks whether all the blocks in its node exist on most other nodes.")]),e._v(" "),a("h3",{attrs:{id:"block-confirmation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-confirmation"}},[e._v("#")]),e._v(" Block confirmation")]),e._v(" "),a("p",[e._v("A block confirmed by multiple node in the network is considered as a confirmed block.")]),e._v(" "),a("p",[e._v("The daemon confirms all blocks one by one starting from the first that is currently not confirmed in the database.")]),e._v(" "),a("p",[e._v("Each block is confirmed in the way as follows:")]),e._v(" "),a("ul",[a("li",[e._v("Sending a request containing the ID of the block being confirmed to all honor nodes.")]),e._v(" "),a("li",[e._v("All honor nodes respond to the block hash.")]),e._v(" "),a("li",[e._v("If the hash responded matches the hash of the block on the daemon node, the confirmation counter value is increased. If not, the cancellation counter value is increased.")])]),e._v(" "),a("h3",{attrs:{id:"tables-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-4"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Confirmations daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("confirmation")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Confirmations daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Request block hashes from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-service-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-service-protocol"}},[e._v("#")]),e._v(" TCP service protocol")]),e._v(" "),a("p",[e._v("The TCP service protocol works on honor nodes and guardian nodes, which uses the binary protocol on TCP to requests from the BlocksCollection, Disseminator, and Confirmation daemons.")]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[e._v("Each request has a type defined by the first two bytes of the request.")]),e._v(" "),a("h2",{attrs:{id:"type-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-1"}},[e._v("#")]),e._v(" Type 1")]),e._v(" "),a("h4",{attrs:{id:"request-sender"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Hashes of the transaction and block.")]),e._v(" "),a("h4",{attrs:{id:"request-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("The block hash is added to the block queue.")]),e._v(" "),a("p",[e._v("Analyzes and verifies the transaction hashes, and select transactions that have not yet appeared on the node.")]),e._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No. After processing the request, a "),a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" request is issued.")]),e._v(" "),a("h2",{attrs:{id:"type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-2"}},[e._v("#")]),e._v(" Type 2")]),e._v(" "),a("h4",{attrs:{id:"request-sender-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-2"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-2"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("The transaction data, including the data size:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the transaction data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The transaction data.")]),e._v(" "),a("h4",{attrs:{id:"request-processing-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing-2"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("Verifies the transaction and add it to the transaction queue.")]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h2",{attrs:{id:"type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-4"}},[e._v("#")]),e._v(" Type 4")]),e._v(" "),a("h4",{attrs:{id:"request-sender-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-3"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-3"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block hash.")]),e._v(" "),a("p",[e._v("Returns "),a("code",[e._v("0")]),e._v(" if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-7"}},[e._v("#")]),e._v(" Type 7")]),e._v(" "),a("h4",{attrs:{id:"request-sender-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-4"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-4"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The block data, including data size.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the block data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The block data.")]),e._v(" "),a("p",[e._v("The connection is closed if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-10"}},[e._v("#")]),e._v(" Type 10")]),e._v(" "),a("h4",{attrs:{id:"request-sender-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-5"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-5"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/11.279ca8e2.js b/assets/js/11.02a59c96.js similarity index 99% rename from assets/js/11.279ca8e2.js rename to assets/js/11.02a59c96.js index e135f63..05f8a84 100644 --- a/assets/js/11.279ca8e2.js +++ b/assets/js/11.02a59c96.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{391:function(t,e,a){"use strict";a.r(e);var s=a(51),o=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[t._v("#")]),t._v(" FAQ")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#question-1"}},[t._v("1. Please briefly describe IBAX?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-2"}},[t._v("2. Is IBax applicable for Bitcoin, Ethereum or other blockchains?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-3"}},[t._v("3. What are the main differences between IBax and other public blockchain platforms with built-in mechanisms for executing smart contracts?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-4"}},[t._v("4. Do you have your own cryptocurrency?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-5"}},[t._v("5. What is a honor node and who can maintain it?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-6"}},[t._v("6. What is a platform ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-7"}},[t._v("7. Who can create an ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-8"}},[t._v("8. How do users become members of the ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-9"}},[t._v("9. Can one user create multiple ecosystems?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-10"}},[t._v("10. What is a platform application?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-11"}},[t._v("11. What programming language is used to create the application?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-12"}},[t._v("12. What software is used to create applications and interact with users?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-13"}},[t._v("13. Can platform contracts use third-party APIs to access data?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-14"}},[t._v("14. Can the contract stored in the blockchain be changed?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-15"}},[t._v("15. What is smart law?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-16"}},[t._v("16. Can the contract call and execute other contracts?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-17"}},[t._v("17. Does the application run with a master contract?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-18"}},[t._v("18. Can the application be localized for different languages?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-19"}},[t._v("19. Can I create a page without using a template language?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-20"}},[t._v("20. Are the pages stored in the blockchain?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-21"}},[t._v("21. What types of databases can be used for contract operations?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-22"}},[t._v("22. How to manage access to the data in the database table?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-23"}},[t._v("23. Can an application in an ecosystem exchange data with other applications from another ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-24"}},[t._v("24. Should all applications in a new ecosystem be written from scratch?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-25"}},[t._v("25. Are there any fees for the operation of applications?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-26"}},[t._v("26. Who pays for the operation of applications?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-27"}},[t._v("27. How to protect the applications in the ecosystem from attacks due to vulnerabilities?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-28"}},[t._v("28. What new features will be implemented in future plans?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-29"}},[t._v("29. How to prove its operability?")])])]),t._v(" "),a("h3",{attrs:{id:"_1-please-briefly-describe-ibax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-please-briefly-describe-ibax"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-1"}},[t._v("1. Please briefly describe IBAX?")])]),t._v(" "),a("ul",[a("li",[t._v("It is a blockchain platform that aims to build a digital ecosystem based on an integrated application development environment that has a multi-level permission system for managing the access rights to data, interfaces, and smart contracts.")])]),t._v(" "),a("h3",{attrs:{id:"_2-is-ibax-applicable-for-bitcoin-ethereum-or-other-blockchains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-is-ibax-applicable-for-bitcoin-ethereum-or-other-blockchains"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-2"}},[t._v("2. Is IBax applicable for Bitcoin, Ethereum or other blockchains?")])]),t._v(" "),a("ul",[a("li",[t._v("Not applicable. IBax is built on the basis of its own original blockchain.")])]),t._v(" "),a("h3",{attrs:{id:"_3-what-are-the-main-differences-between-ibax-and-other-public-blockchain-platforms-with-built-in-mechanisms-for-executing-smart-contracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-what-are-the-main-differences-between-ibax-and-other-public-blockchain-platforms-with-built-in-mechanisms-for-executing-smart-contracts"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-3"}},[t._v("3. What are the main differences between IBax and other public blockchain platforms with built-in mechanisms for executing smart contracts?")])]),t._v(" "),a("ul",[a("li",[t._v("IBax has unique features that cannot be found in the above-mentioned blockchains:\n"),a("ul",[a("li",[t._v("has an integrated application development environment in a single client software;")]),t._v(" "),a("li",[t._v("the special template language Logicor for page design and the contract language Needle coordinate with each other;")]),t._v(" "),a("li",[t._v("has a multi-level permission system for managing the access rights to data, interfaces and smart contracts, in which permissions can be granted to members, roles and contracts;")]),t._v(" "),a("li",[t._v("the ecosystem, used to create blockchain applications and autonomous software environments for users to interact with them;")]),t._v(" "),a("li",[t._v("the legal system, a set of rules written in smart laws (dedicated smart contracts), regulates the relationship between platform users and defines the process of changing protocol parameters for problem solving.")])])])]),t._v(" "),a("h3",{attrs:{id:"_4-do-you-have-your-own-cryptocurrency"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_4-do-you-have-your-own-cryptocurrency"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-4"}},[t._v("4. Do you have your own cryptocurrency?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, IBax uses its own token, IBXC.")])]),t._v(" "),a("h3",{attrs:{id:"_5-what-is-a-honor-node-and-who-can-maintain-it"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_5-what-is-a-honor-node-and-who-can-maintain-it"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-5"}},[t._v("5. What is a honor node and who can maintain it?")])]),t._v(" "),a("ul",[a("li",[t._v("The honor node is the network node that has the authority to verify transactions and generate new blocks.")]),t._v(" "),a("li",[t._v("Any network node with sufficient processing power and fault tolerance can become a honor node. IBax uses a Proof of Authority (PoA) consensus mechanism. Nodes can become verification nodes based on ecosystem voting, but only ecosystems that are proven by the platform's token owner to have normal operational capabilities can participate in such voting. Using this authorization algorithm, the master node is run by major ecosystems because it is in their best interest to maintain the network operation.")])]),t._v(" "),a("h3",{attrs:{id:"_6-what-is-a-platform-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_6-what-is-a-platform-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-6"}},[t._v("6. What is a platform ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("An ecosystem is actually an autonomous software environment used to create blockchain applications and the operations of users in them.")])]),t._v(" "),a("h3",{attrs:{id:"_7-who-can-create-an-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_7-who-can-create-an-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-7"}},[t._v("7. Who can create an ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("All users of the platform can create new ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_8-how-do-users-become-members-of-the-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_8-how-do-users-become-members-of-the-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-8"}},[t._v("8. How do users become members of the ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("Users may be registered as members of any existing ecosystem. The ecosystem strategy defines different member admission procedures, which publishes key public information of the new ecosystem in a dedicated ecosystem catalog.")])]),t._v(" "),a("h3",{attrs:{id:"_9-can-one-user-create-multiple-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_9-can-one-user-create-multiple-ecosystems"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-9"}},[t._v("9. Can one user create multiple ecosystems?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, each user can create any number of ecosystems and can also become a member of multiple ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_10-what-is-a-platform-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_10-what-is-a-platform-application"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-10"}},[t._v("10. What is a platform application?")])]),t._v(" "),a("ul",[a("li",[t._v("An application is a complete software product that implements a function or service. The application consists of database tables, contracts and pages.")])]),t._v(" "),a("h3",{attrs:{id:"_11-what-programming-language-is-used-to-create-the-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_11-what-programming-language-is-used-to-create-the-application"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-11"}},[t._v("11. What programming language is used to create the application?")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("The contract is written in the Needle language, which is developed by the platform team, For more information, see: "),a("RouterLink",{attrs:{to:"/topics/script.html"}},[t._v("Smart Contract")]),t._v(".")],1)]),t._v(" "),a("li",[a("p",[t._v("The page is written in Logicor language, which is a page template language. For more information, see: "),a("RouterLink",{attrs:{to:"/topics/templates2.html"}},[t._v("Template Language")]),t._v(".")],1)])]),t._v(" "),a("h3",{attrs:{id:"_12-what-software-is-used-to-create-applications-and-interact-with-users"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_12-what-software-is-used-to-create-applications-and-interact-with-users"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-12"}},[t._v("12. What software is used to create applications and interact with users?")])]),t._v(" "),a("ul",[a("li",[t._v("The application program is written and executed in Weaver, no other software is required.")])]),t._v(" "),a("h3",{attrs:{id:"_13-can-platform-contracts-use-third-party-apis-to-access-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_13-can-platform-contracts-use-third-party-apis-to-access-data"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-13"}},[t._v("13. Can platform contracts use third-party APIs to access data?")])]),t._v(" "),a("ul",[a("li",[t._v("No, the contract can only directly access the data stored in the blockchain. "),a("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#virtual-private-ecosystem"}},[t._v("CLB")]),t._v(" is used to process external data sources.")],1)]),t._v(" "),a("h3",{attrs:{id:"_14-can-the-contract-stored-in-the-blockchain-be-changed"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_14-can-the-contract-stored-in-the-blockchain-be-changed"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-14"}},[t._v("14. Can the contract stored in the blockchain be changed?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the contract can be changed. The permission to change the contract is specified by its creator, who can grant the permission to refuse to change, or grant permission to make changes with contracts or by members, or configure a complex set of conditions in the smart law.")]),t._v(" "),a("li",[t._v("Weaver provides access to all versions of contracts.")])]),t._v(" "),a("h3",{attrs:{id:"_15-what-is-smart-law"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_15-what-is-smart-law"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-15"}},[t._v("15. What is smart law?")])]),t._v(" "),a("ul",[a("li",[t._v("Smart law is a contract designed to control and restrict the operation of conventional contracts, thereby controlling and restricting the activities of ecosystem members.")]),t._v(" "),a("li",[t._v("A set of smart laws can be regarded as the legal system of an ecosystem.")])]),t._v(" "),a("h3",{attrs:{id:"_16-can-the-contract-call-and-execute-other-contracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_16-can-the-contract-call-and-execute-other-contracts"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-16"}},[t._v("16. Can the contract call and execute other contracts?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the contract can call other contracts by direct addressing and provide parameters for it, or call the contract by link name. For more information, see: "),a("RouterLink",{attrs:{to:"/topics/script.html"}},[t._v("Smart Contract")]),t._v(".")],1)]),t._v(" "),a("h3",{attrs:{id:"_17-does-the-application-run-with-a-master-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_17-does-the-application-run-with-a-master-contract"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-17"}},[t._v("17. Does the application run with a master contract?")])]),t._v(" "),a("ul",[a("li",[t._v("No, the contract is an autonomous program module that performs certain functions. Each contract is configured to receive specified data, then check the correctness of these data, and perform some operations that are recorded in the database as transactions.")])]),t._v(" "),a("h3",{attrs:{id:"_18-can-the-application-be-localized-for-different-languages"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_18-can-the-application-be-localized-for-different-languages"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-18"}},[t._v("18. Can the application be localized for different languages?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, Weaver has a built-in localization support mechanism and can create pages in any language.")])]),t._v(" "),a("h3",{attrs:{id:"_19-can-i-create-a-page-without-using-a-template-language"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_19-can-i-create-a-page-without-using-a-template-language"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-19"}},[t._v("19. Can I create a page without using a template language?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, it can be done using the platform "),a("RouterLink",{attrs:{to:"/reference/api2.html"}},[t._v("RESTful API")]),t._v(" v2.")],1)]),t._v(" "),a("h3",{attrs:{id:"_20-are-the-pages-stored-in-the-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_20-are-the-pages-stored-in-the-blockchain"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-20"}},[t._v("20. Are the pages stored in the blockchain?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the pages and contracts are stored in the blockchain, which prevents them from being forged.")])]),t._v(" "),a("h3",{attrs:{id:"_21-what-types-of-databases-can-be-used-for-contract-operations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_21-what-types-of-databases-can-be-used-for-contract-operations"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-21"}},[t._v("21. What types of databases can be used for contract operations?")])]),t._v(" "),a("ul",[a("li",[t._v("Currently, PostgreSQL is used.")])]),t._v(" "),a("h3",{attrs:{id:"_22-how-to-manage-access-to-the-data-in-the-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_22-how-to-manage-access-to-the-data-in-the-database-table"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-22"}},[t._v("22. How to manage access to the data in the database table?")])]),t._v(" "),a("ul",[a("li",[t._v("You can add new fields, new entries, or change the permissions of the data in columns for ecosystem members, roles, or specified contract configurations. Except for contracts created by performing specific operations.")])]),t._v(" "),a("h3",{attrs:{id:"_23-can-an-application-in-an-ecosystem-exchange-data-with-other-applications-from-another-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_23-can-an-application-in-an-ecosystem-exchange-data-with-other-applications-from-another-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-23"}},[t._v("23. Can an application in an ecosystem exchange data with other applications from another ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, data exchange can be organized through global data tables that apply to all ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-24"}},[t._v("24. Should all applications in a new ecosystem be written from scratch?")])]),t._v(" "),a("ul",[a("li",[t._v("No, every new ecosystem has some applications out of the box:\n"),a("ul",[a("li",[t._v("A mechanism to manage ecosystem members and roles;")]),t._v(" "),a("li",[t._v("Issuing and configuring other tokens;")]),t._v(" "),a("li",[t._v("A voting system;")]),t._v(" "),a("li",[t._v("A notification system;")]),t._v(" "),a("li",[t._v("A messenger between ecosystem members.")])])])]),t._v(" "),a("p",[t._v("These applications can be edited and configured to meet the special needs of any ecosystem.")]),t._v(" "),a("h3",{attrs:{id:"_25-are-there-any-fees-for-the-operation-of-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_25-are-there-any-fees-for-the-operation-of-applications"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-25"}},[t._v("25. Are there any fees for the operation of applications?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the use of the resources of the honor node requires payment in the platform.")])]),t._v(" "),a("h3",{attrs:{id:"_26-who-pays-for-the-operation-of-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_26-who-pays-for-the-operation-of-applications"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-26"}},[t._v("26. Who pays for the operation of applications?")])]),t._v(" "),a("p",[t._v("For corresponding account addresses, there are currently 4 ways to pay for the operation of applications:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("For contract callers, the fee will be paid from the user's account by default when the user calls the contract;")])]),t._v(" "),a("li",[a("p",[t._v("For contract binding parties, the fee will be paid from the binding account specified by the contract creator;")])]),t._v(" "),a("li",[a("p",[t._v("For ecosystem creators, the fee of all applications within an ecosystem will be paid by the ecosystem creator respectively;")])]),t._v(" "),a("li",[a("p",[t._v("Exclusive ecosystem wallet. Each ecosystem has an exclusive account. If the ecosystem creator activated it, the fee of all applications within the ecosystem will be paid from this account.")])])]),t._v(" "),a("p",[t._v("Order of payment precedence: Exclusive ecosystem wallet> Ecosystem creator> Contract binding party> Contract caller.")]),t._v(" "),a("h3",{attrs:{id:"_27-how-to-protect-the-applications-in-the-ecosystem-from-attacks-due-to-vulnerabilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_27-how-to-protect-the-applications-in-the-ecosystem-from-attacks-due-to-vulnerabilities"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-27"}},[t._v("27. How to protect the applications in the ecosystem from attacks due to vulnerabilities?")])]),t._v(" "),a("ul",[a("li",[t._v("The platform team also knows that there is no way to completely avoid errors in the application code, especially considering that the application can be written by any user. This is why we decided to establish a mechanism to eliminate the consequences of exploiting vulnerabilities. The legal system can stop the attack operation of the application and use some transactions to restore it to its original state. The legal system stipulates the permissions to execute such contracts and the voting procedures for granting these permissions.")])]),t._v(" "),a("h3",{attrs:{id:"_28-what-new-features-will-be-implemented-in-future-plans"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_28-what-new-features-will-be-implemented-in-future-plans"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-28"}},[t._v("28. What new features will be implemented in future plans?")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Visual smart contract designer;")])]),t._v(" "),a("li",[a("p",[t._v("Support for hybrid databases (SQL and NoSQL);")])]),t._v(" "),a("li",[a("p",[t._v("Parallel multi-threaded processing of transactions from different ecosystems;")])]),t._v(" "),a("li",[a("p",[t._v("Perform resource-intensive calculations on the client;")])]),t._v(" "),a("li",[a("p",[t._v("Ecosystem hosting and computing power exchange;")])]),t._v(" "),a("li",[a("p",[t._v("Child nodes, only store some blocks on the server;")])]),t._v(" "),a("li",[a("p",[t._v("Semantic references (ontology) are used to unify the operation of data in the platform.")])])]),t._v(" "),a("h3",{attrs:{id:"_29-how-to-prove-its-operability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_29-how-to-prove-its-operability"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-29"}},[t._v("29. How to prove its operability?")])]),t._v(" "),a("ul",[a("li",[t._v("A number of proof of concept projects and cases have been implemented on the IBax Network: a socialized tax collection and electronic invoice generation and circulation system, a medical apparatus and instruments supervision, forgery prevention and tracing system, a financing and supervision system, a voting/poll system, business registration, trade finance tools, assets registration contract management system, etc.")])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{390:function(t,e,a){"use strict";a.r(e);var s=a(51),o=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[t._v("#")]),t._v(" FAQ")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#question-1"}},[t._v("1. Please briefly describe IBAX?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-2"}},[t._v("2. Is IBax applicable for Bitcoin, Ethereum or other blockchains?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-3"}},[t._v("3. What are the main differences between IBax and other public blockchain platforms with built-in mechanisms for executing smart contracts?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-4"}},[t._v("4. Do you have your own cryptocurrency?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-5"}},[t._v("5. What is a honor node and who can maintain it?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-6"}},[t._v("6. What is a platform ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-7"}},[t._v("7. Who can create an ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-8"}},[t._v("8. How do users become members of the ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-9"}},[t._v("9. Can one user create multiple ecosystems?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-10"}},[t._v("10. What is a platform application?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-11"}},[t._v("11. What programming language is used to create the application?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-12"}},[t._v("12. What software is used to create applications and interact with users?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-13"}},[t._v("13. Can platform contracts use third-party APIs to access data?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-14"}},[t._v("14. Can the contract stored in the blockchain be changed?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-15"}},[t._v("15. What is smart law?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-16"}},[t._v("16. Can the contract call and execute other contracts?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-17"}},[t._v("17. Does the application run with a master contract?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-18"}},[t._v("18. Can the application be localized for different languages?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-19"}},[t._v("19. Can I create a page without using a template language?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-20"}},[t._v("20. Are the pages stored in the blockchain?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-21"}},[t._v("21. What types of databases can be used for contract operations?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-22"}},[t._v("22. How to manage access to the data in the database table?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-23"}},[t._v("23. Can an application in an ecosystem exchange data with other applications from another ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-24"}},[t._v("24. Should all applications in a new ecosystem be written from scratch?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-25"}},[t._v("25. Are there any fees for the operation of applications?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-26"}},[t._v("26. Who pays for the operation of applications?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-27"}},[t._v("27. How to protect the applications in the ecosystem from attacks due to vulnerabilities?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-28"}},[t._v("28. What new features will be implemented in future plans?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-29"}},[t._v("29. How to prove its operability?")])])]),t._v(" "),a("h3",{attrs:{id:"_1-please-briefly-describe-ibax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-please-briefly-describe-ibax"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-1"}},[t._v("1. Please briefly describe IBAX?")])]),t._v(" "),a("ul",[a("li",[t._v("It is a blockchain platform that aims to build a digital ecosystem based on an integrated application development environment that has a multi-level permission system for managing the access rights to data, interfaces, and smart contracts.")])]),t._v(" "),a("h3",{attrs:{id:"_2-is-ibax-applicable-for-bitcoin-ethereum-or-other-blockchains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-is-ibax-applicable-for-bitcoin-ethereum-or-other-blockchains"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-2"}},[t._v("2. Is IBax applicable for Bitcoin, Ethereum or other blockchains?")])]),t._v(" "),a("ul",[a("li",[t._v("Not applicable. IBax is built on the basis of its own original blockchain.")])]),t._v(" "),a("h3",{attrs:{id:"_3-what-are-the-main-differences-between-ibax-and-other-public-blockchain-platforms-with-built-in-mechanisms-for-executing-smart-contracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-what-are-the-main-differences-between-ibax-and-other-public-blockchain-platforms-with-built-in-mechanisms-for-executing-smart-contracts"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-3"}},[t._v("3. What are the main differences between IBax and other public blockchain platforms with built-in mechanisms for executing smart contracts?")])]),t._v(" "),a("ul",[a("li",[t._v("IBax has unique features that cannot be found in the above-mentioned blockchains:\n"),a("ul",[a("li",[t._v("has an integrated application development environment in a single client software;")]),t._v(" "),a("li",[t._v("the special template language Logicor for page design and the contract language Needle coordinate with each other;")]),t._v(" "),a("li",[t._v("has a multi-level permission system for managing the access rights to data, interfaces and smart contracts, in which permissions can be granted to members, roles and contracts;")]),t._v(" "),a("li",[t._v("the ecosystem, used to create blockchain applications and autonomous software environments for users to interact with them;")]),t._v(" "),a("li",[t._v("the legal system, a set of rules written in smart laws (dedicated smart contracts), regulates the relationship between platform users and defines the process of changing protocol parameters for problem solving.")])])])]),t._v(" "),a("h3",{attrs:{id:"_4-do-you-have-your-own-cryptocurrency"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_4-do-you-have-your-own-cryptocurrency"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-4"}},[t._v("4. Do you have your own cryptocurrency?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, IBax uses its own token, IBXC.")])]),t._v(" "),a("h3",{attrs:{id:"_5-what-is-a-honor-node-and-who-can-maintain-it"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_5-what-is-a-honor-node-and-who-can-maintain-it"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-5"}},[t._v("5. What is a honor node and who can maintain it?")])]),t._v(" "),a("ul",[a("li",[t._v("The honor node is the network node that has the authority to verify transactions and generate new blocks.")]),t._v(" "),a("li",[t._v("Any network node with sufficient processing power and fault tolerance can become a honor node. IBax uses a Proof of Authority (PoA) consensus mechanism. Nodes can become verification nodes based on ecosystem voting, but only ecosystems that are proven by the platform's token owner to have normal operational capabilities can participate in such voting. Using this authorization algorithm, the master node is run by major ecosystems because it is in their best interest to maintain the network operation.")])]),t._v(" "),a("h3",{attrs:{id:"_6-what-is-a-platform-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_6-what-is-a-platform-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-6"}},[t._v("6. What is a platform ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("An ecosystem is actually an autonomous software environment used to create blockchain applications and the operations of users in them.")])]),t._v(" "),a("h3",{attrs:{id:"_7-who-can-create-an-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_7-who-can-create-an-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-7"}},[t._v("7. Who can create an ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("All users of the platform can create new ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_8-how-do-users-become-members-of-the-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_8-how-do-users-become-members-of-the-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-8"}},[t._v("8. How do users become members of the ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("Users may be registered as members of any existing ecosystem. The ecosystem strategy defines different member admission procedures, which publishes key public information of the new ecosystem in a dedicated ecosystem catalog.")])]),t._v(" "),a("h3",{attrs:{id:"_9-can-one-user-create-multiple-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_9-can-one-user-create-multiple-ecosystems"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-9"}},[t._v("9. Can one user create multiple ecosystems?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, each user can create any number of ecosystems and can also become a member of multiple ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_10-what-is-a-platform-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_10-what-is-a-platform-application"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-10"}},[t._v("10. What is a platform application?")])]),t._v(" "),a("ul",[a("li",[t._v("An application is a complete software product that implements a function or service. The application consists of database tables, contracts and pages.")])]),t._v(" "),a("h3",{attrs:{id:"_11-what-programming-language-is-used-to-create-the-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_11-what-programming-language-is-used-to-create-the-application"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-11"}},[t._v("11. What programming language is used to create the application?")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("The contract is written in the Needle language, which is developed by the platform team, For more information, see: "),a("RouterLink",{attrs:{to:"/topics/script.html"}},[t._v("Smart Contract")]),t._v(".")],1)]),t._v(" "),a("li",[a("p",[t._v("The page is written in Logicor language, which is a page template language. For more information, see: "),a("RouterLink",{attrs:{to:"/topics/templates2.html"}},[t._v("Template Language")]),t._v(".")],1)])]),t._v(" "),a("h3",{attrs:{id:"_12-what-software-is-used-to-create-applications-and-interact-with-users"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_12-what-software-is-used-to-create-applications-and-interact-with-users"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-12"}},[t._v("12. What software is used to create applications and interact with users?")])]),t._v(" "),a("ul",[a("li",[t._v("The application program is written and executed in Weaver, no other software is required.")])]),t._v(" "),a("h3",{attrs:{id:"_13-can-platform-contracts-use-third-party-apis-to-access-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_13-can-platform-contracts-use-third-party-apis-to-access-data"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-13"}},[t._v("13. Can platform contracts use third-party APIs to access data?")])]),t._v(" "),a("ul",[a("li",[t._v("No, the contract can only directly access the data stored in the blockchain. "),a("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#virtual-private-ecosystem"}},[t._v("CLB")]),t._v(" is used to process external data sources.")],1)]),t._v(" "),a("h3",{attrs:{id:"_14-can-the-contract-stored-in-the-blockchain-be-changed"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_14-can-the-contract-stored-in-the-blockchain-be-changed"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-14"}},[t._v("14. Can the contract stored in the blockchain be changed?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the contract can be changed. The permission to change the contract is specified by its creator, who can grant the permission to refuse to change, or grant permission to make changes with contracts or by members, or configure a complex set of conditions in the smart law.")]),t._v(" "),a("li",[t._v("Weaver provides access to all versions of contracts.")])]),t._v(" "),a("h3",{attrs:{id:"_15-what-is-smart-law"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_15-what-is-smart-law"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-15"}},[t._v("15. What is smart law?")])]),t._v(" "),a("ul",[a("li",[t._v("Smart law is a contract designed to control and restrict the operation of conventional contracts, thereby controlling and restricting the activities of ecosystem members.")]),t._v(" "),a("li",[t._v("A set of smart laws can be regarded as the legal system of an ecosystem.")])]),t._v(" "),a("h3",{attrs:{id:"_16-can-the-contract-call-and-execute-other-contracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_16-can-the-contract-call-and-execute-other-contracts"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-16"}},[t._v("16. Can the contract call and execute other contracts?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the contract can call other contracts by direct addressing and provide parameters for it, or call the contract by link name. For more information, see: "),a("RouterLink",{attrs:{to:"/topics/script.html"}},[t._v("Smart Contract")]),t._v(".")],1)]),t._v(" "),a("h3",{attrs:{id:"_17-does-the-application-run-with-a-master-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_17-does-the-application-run-with-a-master-contract"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-17"}},[t._v("17. Does the application run with a master contract?")])]),t._v(" "),a("ul",[a("li",[t._v("No, the contract is an autonomous program module that performs certain functions. Each contract is configured to receive specified data, then check the correctness of these data, and perform some operations that are recorded in the database as transactions.")])]),t._v(" "),a("h3",{attrs:{id:"_18-can-the-application-be-localized-for-different-languages"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_18-can-the-application-be-localized-for-different-languages"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-18"}},[t._v("18. Can the application be localized for different languages?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, Weaver has a built-in localization support mechanism and can create pages in any language.")])]),t._v(" "),a("h3",{attrs:{id:"_19-can-i-create-a-page-without-using-a-template-language"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_19-can-i-create-a-page-without-using-a-template-language"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-19"}},[t._v("19. Can I create a page without using a template language?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, it can be done using the platform "),a("RouterLink",{attrs:{to:"/reference/api2.html"}},[t._v("RESTful API")]),t._v(" v2.")],1)]),t._v(" "),a("h3",{attrs:{id:"_20-are-the-pages-stored-in-the-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_20-are-the-pages-stored-in-the-blockchain"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-20"}},[t._v("20. Are the pages stored in the blockchain?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the pages and contracts are stored in the blockchain, which prevents them from being forged.")])]),t._v(" "),a("h3",{attrs:{id:"_21-what-types-of-databases-can-be-used-for-contract-operations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_21-what-types-of-databases-can-be-used-for-contract-operations"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-21"}},[t._v("21. What types of databases can be used for contract operations?")])]),t._v(" "),a("ul",[a("li",[t._v("Currently, PostgreSQL is used.")])]),t._v(" "),a("h3",{attrs:{id:"_22-how-to-manage-access-to-the-data-in-the-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_22-how-to-manage-access-to-the-data-in-the-database-table"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-22"}},[t._v("22. How to manage access to the data in the database table?")])]),t._v(" "),a("ul",[a("li",[t._v("You can add new fields, new entries, or change the permissions of the data in columns for ecosystem members, roles, or specified contract configurations. Except for contracts created by performing specific operations.")])]),t._v(" "),a("h3",{attrs:{id:"_23-can-an-application-in-an-ecosystem-exchange-data-with-other-applications-from-another-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_23-can-an-application-in-an-ecosystem-exchange-data-with-other-applications-from-another-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-23"}},[t._v("23. Can an application in an ecosystem exchange data with other applications from another ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, data exchange can be organized through global data tables that apply to all ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-24"}},[t._v("24. Should all applications in a new ecosystem be written from scratch?")])]),t._v(" "),a("ul",[a("li",[t._v("No, every new ecosystem has some applications out of the box:\n"),a("ul",[a("li",[t._v("A mechanism to manage ecosystem members and roles;")]),t._v(" "),a("li",[t._v("Issuing and configuring other tokens;")]),t._v(" "),a("li",[t._v("A voting system;")]),t._v(" "),a("li",[t._v("A notification system;")]),t._v(" "),a("li",[t._v("A messenger between ecosystem members.")])])])]),t._v(" "),a("p",[t._v("These applications can be edited and configured to meet the special needs of any ecosystem.")]),t._v(" "),a("h3",{attrs:{id:"_25-are-there-any-fees-for-the-operation-of-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_25-are-there-any-fees-for-the-operation-of-applications"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-25"}},[t._v("25. Are there any fees for the operation of applications?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the use of the resources of the honor node requires payment in the platform.")])]),t._v(" "),a("h3",{attrs:{id:"_26-who-pays-for-the-operation-of-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_26-who-pays-for-the-operation-of-applications"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-26"}},[t._v("26. Who pays for the operation of applications?")])]),t._v(" "),a("p",[t._v("For corresponding account addresses, there are currently 4 ways to pay for the operation of applications:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("For contract callers, the fee will be paid from the user's account by default when the user calls the contract;")])]),t._v(" "),a("li",[a("p",[t._v("For contract binding parties, the fee will be paid from the binding account specified by the contract creator;")])]),t._v(" "),a("li",[a("p",[t._v("For ecosystem creators, the fee of all applications within an ecosystem will be paid by the ecosystem creator respectively;")])]),t._v(" "),a("li",[a("p",[t._v("Exclusive ecosystem wallet. Each ecosystem has an exclusive account. If the ecosystem creator activated it, the fee of all applications within the ecosystem will be paid from this account.")])])]),t._v(" "),a("p",[t._v("Order of payment precedence: Exclusive ecosystem wallet> Ecosystem creator> Contract binding party> Contract caller.")]),t._v(" "),a("h3",{attrs:{id:"_27-how-to-protect-the-applications-in-the-ecosystem-from-attacks-due-to-vulnerabilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_27-how-to-protect-the-applications-in-the-ecosystem-from-attacks-due-to-vulnerabilities"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-27"}},[t._v("27. How to protect the applications in the ecosystem from attacks due to vulnerabilities?")])]),t._v(" "),a("ul",[a("li",[t._v("The platform team also knows that there is no way to completely avoid errors in the application code, especially considering that the application can be written by any user. This is why we decided to establish a mechanism to eliminate the consequences of exploiting vulnerabilities. The legal system can stop the attack operation of the application and use some transactions to restore it to its original state. The legal system stipulates the permissions to execute such contracts and the voting procedures for granting these permissions.")])]),t._v(" "),a("h3",{attrs:{id:"_28-what-new-features-will-be-implemented-in-future-plans"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_28-what-new-features-will-be-implemented-in-future-plans"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-28"}},[t._v("28. What new features will be implemented in future plans?")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Visual smart contract designer;")])]),t._v(" "),a("li",[a("p",[t._v("Support for hybrid databases (SQL and NoSQL);")])]),t._v(" "),a("li",[a("p",[t._v("Parallel multi-threaded processing of transactions from different ecosystems;")])]),t._v(" "),a("li",[a("p",[t._v("Perform resource-intensive calculations on the client;")])]),t._v(" "),a("li",[a("p",[t._v("Ecosystem hosting and computing power exchange;")])]),t._v(" "),a("li",[a("p",[t._v("Child nodes, only store some blocks on the server;")])]),t._v(" "),a("li",[a("p",[t._v("Semantic references (ontology) are used to unify the operation of data in the platform.")])])]),t._v(" "),a("h3",{attrs:{id:"_29-how-to-prove-its-operability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_29-how-to-prove-its-operability"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-29"}},[t._v("29. How to prove its operability?")])]),t._v(" "),a("ul",[a("li",[t._v("A number of proof of concept projects and cases have been implemented on the IBax Network: a socialized tax collection and electronic invoice generation and circulation system, a medical apparatus and instruments supervision, forgery prevention and tracing system, a financing and supervision system, a voting/poll system, business registration, trade finance tools, assets registration contract management system, etc.")])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/111.55ff9cad.js b/assets/js/111.19b4aae0.js similarity index 99% rename from assets/js/111.55ff9cad.js rename to assets/js/111.19b4aae0.js index 6fe5c76..1e3d360 100644 --- a/assets/js/111.55ff9cad.js +++ b/assets/js/111.19b4aae0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[111],{494:function(e,a,t){"use strict";t.r(a);var s=t(51),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"template-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#template-language"}},[e._v("#")]),e._v(" Template Language")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#page-construction"}},[e._v("Page construction")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#template-engine"}},[e._v("Template engine")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#create-pages"}},[e._v("Create pages")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#visual-page-designer"}},[e._v("Visual page designer")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#applicable-styles"}},[e._v("Applicable styles")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#page-module"}},[e._v("Page module")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#language-resource-editor"}},[e._v("Language resource editor")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-template-language"}},[e._v("Logicor template language")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#logicor-overview"}},[e._v("Logicor overview")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#use-pageparams-to-pass-parameters-to-pages"}},[e._v("Use PageParams to pass parameters to pages")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#calling-contracts"}},[e._v("Calling contracts")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-function-classification"}},[e._v("Logicor function classification")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#operations-on-variables"}},[e._v("Operations on variables:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#navigational-operations"}},[e._v("Navigational operations:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-manipulation"}},[e._v("Data manipulation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-presentation"}},[e._v("Data presentation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#accepting-of-data"}},[e._v("Accepting of data:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-formatting-elements"}},[e._v("Data formatting elements:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form-elements"}},[e._v("Form elements:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#operations-on-code-blocks"}},[e._v("Operations on code blocks:")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-function-references"}},[e._v("Logicor function references")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#address"}},[e._v("Address")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#addresstoid"}},[e._v("AddressToId")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#and"}},[e._v("And")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#binary"}},[e._v("Binary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#button"}},[e._v("Button")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#calculate"}},[e._v("Calculate")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chart"}},[e._v("Chart")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#custom"}},[e._v("Custom")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#datetime"}},[e._v("DateTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#forlist"}},[e._v("ForList")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form"}},[e._v("Form")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#getcolumntype"}},[e._v("GetColumnType")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#hint"}},[e._v("Hint")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#if"}},[e._v("If")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#image"}},[e._v("Image")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#imageinput"}},[e._v("ImageInput")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#include"}},[e._v("Include")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#input"}},[e._v("Input")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#inputerr"}},[e._v("InputErr")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#inputmap"}},[e._v("InputMap")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#label"}},[e._v("Label")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#linkpage"}},[e._v("LinkPage")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#map"}},[e._v("Map")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#menugroup"}},[e._v("MenuGroup")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#money"}},[e._v("Money")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#or"}},[e._v("Or")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#radiogroup"}},[e._v("RadioGroup")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#range"}},[e._v("Range")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#select"}},[e._v("Select")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#span"}},[e._v("Span")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#strong"}},[e._v("Strong")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#table"}},[e._v("Table")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#transactioninfo"}},[e._v("TransactionInfo")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#app-styles-for-mobile-devices"}},[e._v("App styles for mobile devices")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#layout"}},[e._v("Layout")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#title"}},[e._v("Title")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#strong-class-names"}},[e._v("Strong-class names")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#color"}},[e._v("Color")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#grid"}},[e._v("Grid")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#panel"}},[e._v("Panel")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form-app"}},[e._v("Form")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#button-app"}},[e._v("Button")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#icon"}},[e._v("Icon")])])])])])])]),e._v(" "),t("h2",{attrs:{id:"page-construction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#page-construction"}},[e._v("#")]),e._v(" Page construction")]),e._v(" "),t("p",[e._v("Weaver's Integrated Development Environment (IDE) is created using React, a JavaScript library. It has a page editor and a visual page designer. Pages are basic parts of an application, which are used to retrieve and display data from tables, create forms for receiving user input data, pass data to contracts, and navigate between application pages. Like contracts, pages are stored in the blockchain, which can ensure they are tamper-proof when loaded in the software client.")]),e._v(" "),t("h3",{attrs:{id:"template-engine"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#template-engine"}},[e._v("#")]),e._v(" Template engine")]),e._v(" "),t("p",[e._v("Page elements (pages and menus) are formed by developers in the template engine of a verification node using the template language in Weaver's page editor. All pages are constructed using the Logicor language developed by IBAX's development team. Use content/... API commands to request pages from nodes on the network. What the template engine sent as a response to this type of request is not an HTML page, but a JSON code composed of HTML tags that form a tree in accordance with the template structure. If you want to test the template engine, you can refer to the "),t("RouterLink",{attrs:{to:"/reference/api2.html#content"}},[e._v("content")]),e._v(" API command.")],1),e._v(" "),t("h3",{attrs:{id:"create-pages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-pages"}},[e._v("#")]),e._v(" Create pages")]),e._v(" "),t("p",[e._v("You can use the page editor to create and edit pages, which can be found in the Pages section of Weaver's management tool. The editor can be used to:")]),e._v(" "),t("ul",[t("li",[e._v("Write the page code, highlight the keywords of the Logicor template language;")]),e._v(" "),t("li",[e._v("Select and display menus on pages;")]),e._v(" "),t("li",[e._v("Edit the menu page;")]),e._v(" "),t("li",[e._v("Configure the permission to change pages, by specifying the contract name with permission in the ContractConditions function, or by directly specifying the access permission in Change conditions;")]),e._v(" "),t("li",[e._v("Start the visual page designer;")]),e._v(" "),t("li",[e._v("Preview pages.")])]),e._v(" "),t("h4",{attrs:{id:"visual-page-designer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#visual-page-designer"}},[e._v("#")]),e._v(" Visual page designer")]),e._v(" "),t("p",[e._v("The visual page designer can be used to create page layouts without using interface codes in the Logicor language. With it, you can set the position of form elements and text on pages by dragging and dropping such elements, and configure the size of page blocks. It provides a set of ready-to-use blocks for presenting standard data models: with titles, forms and information panels. After creating a page in the visual page designer, you can write program logic for receiving data and conditional structure in the page editor. In the future, we plan to create a visual page designer with additional functions.")]),e._v(" "),t("h4",{attrs:{id:"applicable-styles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applicable-styles"}},[e._v("#")]),e._v(" Applicable styles")]),e._v(" "),t("p",[e._v("By default, pages are presented with Angular's Bootstrap Angle style. Users can create their own styles according to needs. The style is stored in the style parameter stylesheet in the ecosystem parameter table.")]),e._v(" "),t("h4",{attrs:{id:"page-module"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#page-module"}},[e._v("#")]),e._v(" Page module")]),e._v(" "),t("p",[e._v("To use a code block in multiple pages, you can create a page module to hold and embed it into the page code. Page modules can be created and edited in Weaver's Module Blocks. Like pages, editing permissions can be defined.")]),e._v(" "),t("h4",{attrs:{id:"language-resource-editor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#language-resource-editor"}},[e._v("#")]),e._v(" Language resource editor")]),e._v(" "),t("p",[e._v("Weaver includes a mechanism for page localization using a function "),t("strong",[e._v("LangRes")]),e._v(" of the Logicor template language. It could replace language resource tags on the page with text lines corresponding to the language selected by the user in the software client or browser. You can use the short syntax "),t("strong",[e._v("$lable$")]),e._v(" instead of the "),t("strong",[e._v("LangRes")]),e._v(" function. The translation of messages in popups initiated by the contract is performed by Needle's "),t("strong",[e._v("LangRes")]),e._v(" function.")]),e._v(" "),t("p",[e._v("You can create and edit language resources in the Language resources section of Weaver. A language resource consists of label names and corresponding translation of such name in different languages, as well as the corresponding two-letter language identifier (EN, ZH, JP, etc.).")]),e._v(" "),t("p",[e._v("The permissions for adding and changing language resources can be defined in the same way as other tables.")]),e._v(" "),t("h2",{attrs:{id:"logicor-template-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-template-language"}},[e._v("#")]),e._v(" Logicor template language")]),e._v(" "),t("p",[e._v("Logicor functions provide the following operations:")]),e._v(" "),t("ul",[t("li",[e._v("Retrieving values from the database: "),t("code",[e._v("DBFind")]),e._v(", showing data retrieved from the database as tables and charts;")]),e._v(" "),t("li",[e._v("Data operations for assigning and displaying variable values: "),t("code",[e._v("SetVar, GetVar, Data")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying and comparing date/time values: "),t("code",[e._v("DateTime, Now, CmpTime")]),e._v(";")]),e._v(" "),t("li",[e._v("Use various user data input fields to build forms: "),t("code",[e._v("Form, ImageInput, Input, RadioGroup, Select")]),e._v(";")]),e._v(" "),t("li",[e._v("Verify the data in the form field by displaying error messages: "),t("code",[e._v("Validate, InputErr")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying the navigation elements: "),t("code",[e._v("AddToolButton, LinkPage, Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Calling contracts: "),t("code",[e._v("Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Creating HTML page layout elements, including various tags, and choosing specific css classes: "),t("code",[e._v("Div, P, Span, etc")]),e._v(";")]),e._v(" "),t("li",[e._v("Embedding and unloading images onto pages: "),t("code",[e._v("Image, ImageInput")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying conditions of page layout fragment: "),t("code",[e._v("If, ElseIf, Else")]),e._v(";")]),e._v(" "),t("li",[e._v("Creating multi-level menus;")]),e._v(" "),t("li",[e._v("Page localization.")])]),e._v(" "),t("h3",{attrs:{id:"logicor-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-overview"}},[e._v("#")]),e._v(" Logicor overview")]),e._v(" "),t("p",[e._v("The Logicor page template language is a functional language that allows a function calling another function "),t("code",[e._v("FuncName(parameters)")]),e._v(" and nesting functions into each other. You can specify parameters without quotes, and delete unnecessary parameters.")]),e._v(" "),t("p",[e._v("If the parameter contains a comma, it should be enclosed in quotes (backquotes or double quotes). If a function can only have one parameter, you can use a comma without quotes. In addition, if the parameter has an unpaired closing parenthesis, quotes should be used.")]),e._v(" "),t("p",[e._v("If you put a parameter in quotes, but the parameter itself contains quotes, you can use different types of quotes or multiple quotes in the text.")]),e._v(" "),t("p",[e._v("In the function definition, each parameter has a specific name. You can call the function and specify the parameters in the order of declaration, or any parameter set in any order of name: "),t("code",[e._v("Parameter_name: Parameter_value")]),e._v(". Using this method, you can safely add new function parameters without breaking compatibility with the current template:")]),e._v(" "),t("p",[e._v("Functions can return texts, generate HTML elements (e.g. "),t("code",[e._v("Input")]),e._v("), or create HTML elements with nested HTML elements ("),t("code",[e._v("Div, P, Span")]),e._v("). In the latter case, a parameter with the predefined name Body is used to define the nested element. For example, nesting two divs in another div looks like this:")]),e._v(" "),t("p",[e._v("To define the nested elements described in the Body parameter, the following notation can be used: "),t("code",[e._v("FuncName(...){...}")]),e._v(". Nested elements should be specified with braces:")]),e._v(" "),t("p",[e._v("If you need to specify the same function multiple times in succession, you can use the dot "),t("code",[e._v(".")]),e._v(" instead of writing its name every time. For example, the following are the same:")]),e._v(" "),t("p",[e._v("With this language, you can assign a variable with the SetVar function and refer its value with "),t("code",[e._v("#name#")]),e._v(".")]),e._v(" "),t("p",[e._v("To refer to the language resources of the ecosystem, you can use "),t("code",[e._v("$langres$")]),e._v(", where langres is the language name.")]),e._v(" "),t("p",[e._v("The following variables are predefined:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("#key_id#")]),e._v(" - Account address of the current user;")]),e._v(" "),t("li",[t("code",[e._v("#ecosystem_id#")]),e._v(" - Current ecosystem ID;")]),e._v(" "),t("li",[t("code",[e._v("#guest_key#")]),e._v(" - Address of the guest account;")]),e._v(" "),t("li",[t("code",[e._v("#isMobile#")]),e._v(" - 1, if Weaver runs on a mobile device.")])]),e._v(" "),t("h4",{attrs:{id:"use-pageparams-to-pass-parameters-to-pages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#use-pageparams-to-pass-parameters-to-pages"}},[e._v("#")]),e._v(" Use PageParams to pass parameters to pages")]),e._v(" "),t("p",[e._v("Many functions support the PageParams parameter, which is used to pass parameters when redirecting to a new page. For example: PageParams: "),t("code",[e._v('"param1=value1,param2=value2"')]),e._v(". The parameter value can be a simple string or a variable with a reference value. When passing parameters to pages, a variable with the parameter name is created, e.g. "),t("code",[e._v("#param1#")]),e._v(" and "),t("code",[e._v("#param2#")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=world"')]),e._v(" - The new page receives the hello parameter with world as the value;")]),e._v(" "),t("li",[t("code",[e._v('PageParams: "hello=#world#"')]),e._v(" - The new page receives the hello parameter with the value of the world variable.")])]),e._v(" "),t("p",[e._v("In addition, the Val function can get data from forms, which is specified in the redirection.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=Val(world)"')]),e._v(" - The new page receives the hello parameter with the value of the world form element.")])]),e._v(" "),t("h4",{attrs:{id:"calling-contracts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#calling-contracts"}},[e._v("#")]),e._v(" Calling contracts")]),e._v(" "),t("p",[e._v("Logicor implements contract calls by clicking the Button function in a form. Once an event is triggered, the data entered by the user in a form field on the page will be passed to the contract. If the form field name corresponds to the variable name in the data section of the contract called, the data will be automatically transferred. The Button function allows to open a modal window for the user to verify the contract execution, and initiate the redirection to the specified page when the contract is successfully executed, and pass certain parameters to the page.")]),e._v(" "),t("h2",{attrs:{id:"logicor-function-classification"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-function-classification"}},[e._v("#")]),e._v(" Logicor function classification")]),e._v(" "),t("h3",{attrs:{id:"operations-on-variables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operations-on-variables"}},[e._v("#")]),e._v(" Operations on variables:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])])]),e._v(" "),t("h3",{attrs:{id:"navigational-operations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigational-operations"}},[e._v("#")]),e._v(" Navigational operations:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#button"}},[e._v("Button")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#linkpage"}},[e._v("LinkPage")])])])])]),e._v(" "),t("h3",{attrs:{id:"data-manipulation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-manipulation"}},[e._v("#")]),e._v(" Data manipulation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#calculate"}},[e._v("Calculate")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#datetime"}},[e._v("DateTime")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#money"}},[e._v("Money")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"data-presentation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-presentation"}},[e._v("#")]),e._v(" Data presentation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#hint"}},[e._v("Hint")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#image"}},[e._v("Image")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#chart"}},[e._v("Chart")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menugroup"}},[e._v("MenuGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#table"}},[e._v("Table")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#forlist"}},[e._v("ForList")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"accepting-of-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#accepting-of-data"}},[e._v("#")]),e._v(" Accepting of data:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#address"}},[e._v("Address")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#addresstoid"}},[e._v("AddressToId")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#range"}},[e._v("Range")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#getcolumntype"}},[e._v("GetColumnType")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#binary"}},[e._v("Binary")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#transactioninfo"}},[e._v("TransactionInfo")])])])])]),e._v(" "),t("h3",{attrs:{id:"data-formatting-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-formatting-elements"}},[e._v("#")]),e._v(" Data formatting elements:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#span"}},[e._v("Span")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#label"}},[e._v("Label")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#strong"}},[e._v("Strong")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"form-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form-elements"}},[e._v("#")]),e._v(" Form elements:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#form"}},[e._v("Form")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputerr"}},[e._v("InputErr")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputmap"}},[e._v("InputMap")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#imageinput"}},[e._v("ImageInput")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#radiogroup"}},[e._v("RadioGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#map"}},[e._v("Map")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#input"}},[e._v("Input")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#select"}},[e._v("Select")])]),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"operations-on-code-blocks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operations-on-code-blocks"}},[e._v("#")]),e._v(" Operations on code blocks:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#if"}},[e._v("If")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#or"}},[e._v("Or")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#include"}},[e._v("Include")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#and"}},[e._v("And")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h2",{attrs:{id:"logicor-function-references"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-function-references"}},[e._v("#")]),e._v(" Logicor function references")]),e._v(" "),t("h3",{attrs:{id:"address"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address"}},[e._v("#")]),e._v(" Address")]),e._v(" "),t("p",[e._v("This function returns the wallet address "),t("code",[e._v("xxxx-xxxx-...-xxxx")]),e._v(" of a specific account address; if no address is specified, the account address of the current user will be used as the parameter.")]),e._v(" "),t("h4",{attrs:{id:"syntax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(account)\n\n")])])]),t("blockquote",[t("p",[e._v("Address")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("account")])]),e._v(" "),t("p",[e._v("Account address.")])])]),e._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Span(Your wallet: Address(#account#))\n")])])]),t("h3",{attrs:{id:"addresstoid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[e._v("#")]),e._v(" AddressToId")]),e._v(" "),t("p",[e._v("It returns the account address of a specific wallet address xxxx-xxxx-...-xxxx.")]),e._v(" "),t("h4",{attrs:{id:"syntax-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-2"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(Wallet)\n")])])]),t("blockquote",[t("p",[e._v("AddressToId")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Wallet")])]),e._v(" "),t("p",[e._v("The wallet address in XXXX-...-XXXX format.")])])]),e._v(" "),t("h4",{attrs:{id:"example-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(#wallet#)\n")])])]),t("h3",{attrs:{id:"addtoolbutton"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addtoolbutton"}},[e._v("#")]),e._v(" AddToolButton")]),e._v(" "),t("p",[e._v("Create a button panel with an addtoolbutton element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-3"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddToolButton(Title, Icon, Page, PageParams)\n [.Popup(Width, Header)]\n")])])]),t("blockquote",[t("p",[e._v("AddToolButton")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Button title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Button icon style.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the page redirects to.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("The parameters passed to the page.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("The modal window pops up.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Header")])]),e._v(" "),t("p",[e._v("Title of the window.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Percentage of window width.\nIts range is 1 to 100.")])])]),e._v(" "),t("h4",{attrs:{id:"example-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('AddToolButton(Title: $@1broadcast$, Page: @1notifications_broadcast, Icon: icon-plus).Popup(Header: $@1notifications_broadcast$, Width: "50")\n')])])]),t("h3",{attrs:{id:"and"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#and"}},[e._v("#")]),e._v(" And")]),e._v(" "),t("p",[e._v("It returns the result of an and logical operation. All parameters listed in parentheses are separated by commas. If one of the parameters is an empty string, zero or "),t("code",[e._v("false")]),e._v(", the parameter value is "),t("code",[e._v("false")]),e._v(", otherwise the parameter value is "),t("code",[e._v("true")]),e._v(". If the parameter value is "),t("code",[e._v("true")]),e._v(", the function returns "),t("code",[e._v("1")]),e._v(", otherwise it returns "),t("code",[e._v("0")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-4"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("And(parameters)\n")])])]),t("h4",{attrs:{id:"example-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(And(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"appparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#appparam"}},[e._v("#")]),e._v(" AppParam")]),e._v(" "),t("p",[e._v("Output the application parameter value, which is taken from the app_params table of the current ecosystem. If there is a language resource with the specified name, its value will be automatically replaced.")]),e._v(" "),t("h4",{attrs:{id:"syntax-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-5"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(App, Name, Index, Source)\n\n")])])]),t("blockquote",[t("p",[e._v("AppParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("App")])]),e._v(" "),t("p",[e._v("Application ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nThe parameter elements index, starting from 1. For example, if "),t("code",[e._v("type = full,light")]),e._v(", then "),t("code",[e._v("AppParam(1, type, 2)")]),e._v(" returns "),t("code",[e._v("light")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of specific parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("h4",{attrs:{id:"example-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(1, type, Source: mytype)\n")])])]),t("h3",{attrs:{id:"arraytosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#arraytosource"}},[e._v("#")]),e._v(" ArrayToSource")]),e._v(" "),t("p",[e._v("Create an arraytosource element and fill it with the key-value pairs of a JSON array. The data obtained is put into the Source element, which can be used later in the source input function (e.g. Table).")]),e._v(" "),t("h4",{attrs:{id:"syntax-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-6"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(Source, Data)\n\n")])])]),t("blockquote",[t("p",[e._v("ArrayToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("A JSON array or a variable name containing a JSON array ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"example-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(src, #myjsonarr#)\nArrayToSource(dat, [1, 2, 3])\n")])])]),t("h3",{attrs:{id:"binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#binary"}},[e._v("#")]),e._v(" Binary")]),e._v(" "),t("p",[e._v("Returns links to static files stored in the binary table binaries.")]),e._v(" "),t("h4",{attrs:{id:"syntax-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Binary(Name, AppID, MemberID)[.ById(ID)][.Ecosystem(ecosystem)]\n")])])]),t("blockquote",[t("p",[e._v("Binary")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("File name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("AppID")])]),e._v(" "),t("p",[e._v("Application ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MemberID")])]),e._v(" "),t("p",[e._v("Account address, 0 by default.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ID")])]),e._v(" "),t("p",[e._v("Static file ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ecosystem")])]),e._v(" "),t("p",[e._v("Ecosystem ID. If it is not specified, the binary file is requested from the current ecosystem.")])])]),e._v(" "),t("h4",{attrs:{id:"example-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Image(Src: Binary("my_image", 1))\nImage(Src: Binary().ById(2))\nImage(Src: Binary().ById(#id#).Ecosystem(#eco#))\n')])])]),t("h3",{attrs:{id:"button"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#button"}},[e._v("#")]),e._v(" Button")]),e._v(" "),t("p",[e._v("Create a button HTML element which will create a button to call a contract or open a page.")]),e._v(" "),t("h4",{attrs:{id:"syntax-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Button(Body, Page, Class, Contract, Params, PageParams)\n [.CompositeContract(Contract, Data)]\n [.Alert(Text, ConfirmButton, CancelButton, Icon)]\n [.Popup(Width, Header)]\n [.Style(Style)]\n [.ErrorRedirect((ErrorID,PageName,PageParams)]\n")])])]),t("blockquote",[t("p",[e._v("Button")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the page redirects to.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Button class.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Contract")])]),e._v(" "),t("p",[e._v("Name of the contract called.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("The list of values passed to the contract. Normally, the value of the contract parameter (the data section) is obtained from an HTML element (such as an input field) of id with a similar name. If the element id is different from the name of the contract parameter, then the value should be assigned in the format of contractField1=idname1, contractField2=idname2. This parameter is returned to attr as the object {contractField1: idname1, contractField2: idname2}.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("The format of parameters passed to the redirect page is pageField1=idname1, pageField2=idname2. Variables with target page parameter names #pageField1 and #pageField2 are created on the target page and assigned the specified values. See more specifications for parameter passing Use PageParams to pass parameters to pages).")])])]),e._v(" "),t("blockquote",[t("p",[e._v("CompositeContract")])]),e._v(" "),t("p",[e._v("Used to add additional contracts to the button. CompositeContract can be used multiple times.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the contract.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("The contract parameters are JSON arrays.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Alert")])]),e._v(" "),t("p",[e._v("Display the message.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Text of the message.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ConfirmButton")])]),e._v(" "),t("p",[e._v("Title of the Confirm button.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("CancelButton")])]),e._v(" "),t("p",[e._v("Title of the Cancel button.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Button icon.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("Output modal window.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Header")])]),e._v(" "),t("p",[e._v("Window title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Percentage of window width.\nIts range is 1 to 100.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("ErrorRedirect")])]),e._v(" "),t("p",[e._v("Specify and redirect to a page when the :ref:contractfundef-Throw function generates an error during contract execution. There can be several ErrorRedirect calls. Therefore, when returning the "),t("em",[e._v("errredirect")]),e._v(" attribute, the attribute key is ErrorID and the value is the parameters list.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("ErrorID")])]),e._v(" "),t("p",[e._v("Error ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageName")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Parameters passed to the page.")])])]),e._v(" "),t("h4",{attrs:{id:"example-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Button(Submit, default_page, mybtn_class).Alert(Alert message)\nButton(Contract: MyContract, Body:My Contract, Class: myclass, Params:"Name=myid,Id=i10,Value")\n')])])]),t("h3",{attrs:{id:"calculate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#calculate"}},[e._v("#")]),e._v(" Calculate")]),e._v(" "),t("p",[e._v("It returns the result of the arithmetic expression passed in the Exp parameter. The following operations are applicable: +, -, *, / and brackets ().")]),e._v(" "),t("h4",{attrs:{id:"syntax-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Calculate(Exp, Type, Prec)\n")])])]),t("blockquote",[t("p",[e._v("Calculate")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("An arithmetic expression, containing numbers and the #name# variable.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Result data type: int, float, money. If not specified, it is float if there is a number with a decimal point, otherwise it is int.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Prec")])]),e._v(" "),t("p",[e._v("float and money data, with two significant digits after the decimal point.")])])]),e._v(" "),t("h4",{attrs:{id:"example-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Calculate( Exp: (342278783438+5000)\\*(#val#-932780000), Type: money, Prec:18 )\nCalculate(10000-(34+5)\\*#val#)\nCalculate("((10+#val#-45)\\*3.0-10)/4.5 + #val#", Prec: 4)\n')])])]),t("h3",{attrs:{id:"chart"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chart"}},[e._v("#")]),e._v(" Chart")]),e._v(" "),t("p",[e._v("Create HTML charts.")]),e._v(" "),t("h4",{attrs:{id:"syntax-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Chart(Type, Source, FieldLabel, FieldValue, Colors)\n")])])]),t("blockquote",[t("p",[e._v("Chart")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Chart type.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name of the data source, e.g., obtained from the "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldLabel")])]),e._v(" "),t("p",[e._v("Name of the header field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldValue")])]),e._v(" "),t("p",[e._v("Name of the value field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Colors")])]),e._v(" "),t("p",[e._v("List of colors.")])])]),e._v(" "),t("h4",{attrs:{id:"example-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"name,count"){\n John Silver,10\n "Mark, Smith",20\n "Unknown ""Person""",30\n}\nChart(Type: "bar", Source: mysrc, FieldLabel: "name", FieldValue: "count", Colors: "red, green")\n')])])]),t("h3",{attrs:{id:"cmptime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cmptime"}},[e._v("#")]),e._v(" CmpTime")]),e._v(" "),t("p",[e._v("It compares two time values in the same format.\nIt supports unixtime, "),t("code",[e._v("YYYY-MM-DD HH:MM:SS")]),e._v(" and any time format, such as "),t("code",[e._v("YYYYMMDD")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CmpTime(Time1, Time2)\n")])])]),t("p",[e._v("Return value")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("-1")]),e._v(" - Time1 Time2.")])]),e._v(" "),t("h4",{attrs:{id:"example-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(CmpTime(#time1#, #time2#)<0){...}\n")])])]),t("h3",{attrs:{id:"code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#code"}},[e._v("#")]),e._v(" Code")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.")]),e._v(" "),t("p",[e._v("It substitute a variable with the value of the variable (for example, "),t("code",[e._v("#name#")]),e._v(").")]),e._v(" "),t("h4",{attrs:{id:"syntax-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code(Text)\n")])])]),t("blockquote",[t("p",[e._v("Code")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code( P(This is the first line.\n Span(This is the second line.))\n)\n")])])]),t("h3",{attrs:{id:"codeasis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#codeasis"}},[e._v("#")]),e._v(" CodeAsIs")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.\nIt does not replace a variable with its value. For example, "),t("code",[e._v("#name#")]),e._v(" will be displayed as is.")]),e._v(" "),t("h4",{attrs:{id:"syntax-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs(Text)\n")])])]),t("blockquote",[t("p",[e._v("CodeAsIs")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs( P(This is the #test1#.\n Span(This is the #test2#.))\n)\n")])])]),t("h3",{attrs:{id:"data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[e._v("#")]),e._v(" Data")]),e._v(" "),t("p",[e._v("Create a data element, fill it with the specified data and put it in Source. Then, you can receive Source as a data input in "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions. The sequence of column names corresponds to the sequence of data entry values.")]),e._v(" "),t("h4",{attrs:{id:"syntax-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Data(Source,Columns,Data)\n [.Custom(Column){Body}]\n")])])]),t("blockquote",[t("p",[e._v("Data")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name of the data source. You can specify any name that will be passed to other functions later as a data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Columns")])]),e._v(" "),t("p",[e._v("A list of column names, separated by commas.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("Data set.")]),e._v(" "),t("p",[e._v("One record per line. Column values must be separated by commas. Data and Columns should be set in the same order.")]),e._v(" "),t("p",[e._v("Values with commas should be enclosed in double quotes ("),t("code",[e._v('"example1, example2", 1, 2')]),e._v("). Quoted values should be put in two double quotes ("),t("code",[e._v('"""example", "example2""", 1, 2')]),e._v(").")])])]),e._v(" "),t("h3",{attrs:{id:"custom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom"}},[e._v("#")]),e._v(" Custom")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to [Table](#table) and other functions to receive data.\nUse multiple Custom functions if you want to assign multiple calculated columns.\n")])])]),t("ul",[t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")])])]),e._v(" "),t("h4",{attrs:{id:"example-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"id,name"){\n "1",John Silver\n 2,"Mark, Smith"\n 3,"Unknown ""Person"""\n }.Custom(link){Button(Body: View, Class: btn btn-link, Page: user, PageParams: "id=#id#"}\n')])])]),t("h3",{attrs:{id:"datetime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datetime"}},[e._v("#")]),e._v(" DateTime")]),e._v(" "),t("p",[e._v("Display the time and date in the specified format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(DateTime, Format)\n")])])]),t("blockquote",[t("p",[e._v("DateTime")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("DateTime")])]),e._v(" "),t("p",[e._v("Time and date expressed in unixtime or standard format "),t("code",[e._v("2006-01-02T15:04:05")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("Format template: year in 2-digit format "),t("code",[e._v("YY")]),e._v(", 4-digit format "),t("code",[e._v("YYYY")]),e._v(", month in "),t("code",[e._v("MM")]),e._v(", day in "),t("code",[e._v("DD")]),e._v(", hour in "),t("code",[e._v("HH")]),e._v(", minute in "),t("code",[e._v("MM")]),e._v(", second in "),t("code",[e._v("SS")]),e._v(", e.g.: "),t("code",[e._v("YY/MM/DD HH:MM")]),e._v(".\nIf it is not specified or missing, "),t("code",[e._v("YYYY-MM-DD HH:MI:SS")]),e._v(" will be used.")])])]),e._v(" "),t("h4",{attrs:{id:"example-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(2017-11-07T17:51:08)\nDateTime(#mytime#,HH:MI DD.MM.YYYY)\n")])])]),t("h3",{attrs:{id:"dbfind"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbfind"}},[e._v("#")]),e._v(" DBFind")]),e._v(" "),t("p",[e._v("Create a dbfind element, fill it with the data of the table table and put it in the Source structure, which can later be used for the input data of "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions Source.")]),e._v(" "),t("h4",{attrs:{id:"syntax-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBFind(table, Source)\n [.Columns(columns)]\n [.Where(conditions)]\n [.WhereId(id)]\n [.Order(name)]\n [.Limit(limit)]\n [.Offset(offset)]\n [.Count(countvar)]\n [.Ecosystem(id)]\n [.Cutoff(columns)]\n [.Custom(Column){Body}]\n [.Vars(Prefix)]\n")])])]),t("blockquote",[t("p",[e._v("DBFind")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Columns")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("columns")])]),e._v(" "),t("p",[e._v("If not specified, a list of all fields will be returned. If there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(". In this case, the field name generated is "),t("code",[e._v("columnname.fieldname")]),e._v(".")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Where")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("conditions")])])]),e._v(" "),t("p",[e._v("Data query conditions. See DBFind.\nIf there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(".")]),e._v(" "),t("blockquote",[t("p",[e._v("WhereId\nQuery by ID, e.g. "),t("code",[e._v(".WhereId(1)")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Entry ID.")]),e._v(" "),t("blockquote",[t("p",[e._v("Order\nSort by field.\nFor more information about the sorting syntax, see "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("name")])])]),e._v(" "),t("p",[e._v("Field Name")]),e._v(" "),t("blockquote",[t("p",[e._v("Limit")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("limit")])]),e._v(" "),t("p",[e._v("The number of entries returned, 25 by default. The maximum number is 10,000.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Offset")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Offset")])]),e._v(" "),t("p",[e._v("Offset.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Count")])]),e._v(" "),t("p",[e._v("Specify the total number of rows of the Where condition.\nIn addition to storing it in a variable, the total count is returned in the count parameter of the dbfind element.")]),e._v(" "),t("p",[e._v("If Where and WhereID are not specified, the total count of rows in the table will be returned.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("countvar")])]),e._v(" "),t("p",[e._v("Name of the variable that holds the row count.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Ecosystem")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Ecosystem ID. By default, the data comes from the specified table in the current ecosystem.")]),e._v(" "),t("blockquote",[t("p",[e._v("Cutoff")])]),e._v(" "),t("p",[e._v("Used to cut and display large amounts of text data.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("columns")])])]),e._v(" "),t("p",[e._v("A comma-separated list of fields that must be processed by the Cutoff function.\nThe field value will be replaced by a JSON object that has two fields: link link and title title. If the field value contains more than 32 characters, link pointing to the first 32 characters of the full text is returned. If the field value contains 32 characters or less, link is set to void and title contains the complete field value.")]),e._v(" "),t("blockquote",[t("p",[e._v("Custom")])]),e._v(" "),t("p",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions to receive data.\nIf you want to assign multiple calculated columns, use multiple Custom functions.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Column")])])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Body")])])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")]),e._v(" "),t("blockquote",[t("p",[e._v("Vars")])]),e._v(" "),t("p",[e._v("The first row obtained by the query will generate a set of variables with values. When it is specified, the Limit parameter automatically becomes 1, and only one (1) record is returned.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Prefix")])])]),e._v(" "),t("p",[e._v("The prefix added to the variable name. Its format is "),t("code",[e._v("#prefix_columnname#")]),e._v(", where the column name immediately follows the underscore symbol. If there is a column containing a JSON field, the variable generated will be in the following format: "),t("code",[e._v("#prefix_columnname_field#")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"example-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(parameters,myparam)\nDBFind(parameters,myparam).Columns(name,value).Where({name:"money"})\nDBFind(parameters,myparam).Custom(myid){Strong(#id#)}.Custom(myname){\n Strong(Em(#name#))Div(myclass, #company#)\n}\n')])])]),t("h3",{attrs:{id:"div"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#div"}},[e._v("#")]),e._v(" Div")]),e._v(" "),t("p",[e._v("Create a div HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(Class, Body)\n [.Style(Style)]\n [.Show(Condition)]\n [.Hide(Condition)]\n")])])]),t("blockquote",[t("p",[e._v("Div")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the div.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("blockquote",[t("p",[e._v("Show")])]),e._v(" "),t("p",[e._v("Define the conditions for displaying Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("See Hide below.")]),e._v(" "),t("blockquote",[t("p",[e._v("Hide")])]),e._v(" "),t("p",[e._v("Define the conditions for hiding Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("The expression format is "),t("code",[e._v("InputName=Value")]),e._v(", when all expressions are true, "),t("em",[e._v("Condition")]),e._v(" is true, and when the value of "),t("code",[e._v("InputName")]),e._v(" is equal to "),t("code",[e._v("Value")]),e._v(", "),t("em",[e._v("Condition")]),e._v(" is true. If multiple "),t("em",[e._v("Show")]),e._v(" or "),t("em",[e._v("Hide")]),e._v(" are called, there must be at least one "),t("em",[e._v("Condition")]),e._v(" parameter is true.")]),e._v(" "),t("h4",{attrs:{id:"example-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Form(){\n Div(text-left){\n Input(Name: "broadcast", Type: "checkbox", Value: "false")\n }\n Div(text-left){\n hello\n }.Show("broadcast=false")\n Div(text-left){\n world\n }.Hide("broadcast=false")\n}\n')])])]),t("h3",{attrs:{id:"ecosysparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecosysparam"}},[e._v("#")]),e._v(" EcosysParam")]),e._v(" "),t("p",[e._v("This function obtains parameter values from the ecosystem parameter table of the current ecosystem. If the returned result name contains the language resources, it will be translated accordingly.")]),e._v(" "),t("h4",{attrs:{id:"syntax-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EcosysParam(Name, Index, Source)\n")])])]),t("blockquote",[t("p",[e._v("EcosysParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("If the requested parameter is a list of comma-separated elements, you can specify an index starting from 1. For example, if "),t("code",[e._v("gender = male,female")]),e._v(", then "),t("code",[e._v("gender = male,female")]),e._v(" returns "),t("code",[e._v("female")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of the specified parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(EcosysParam(founder_account))\nEcosysParam(gender, Source: mygender)\n\nEcosysParam(Name: gender_list, Source: src_gender)\nSelect(Name: gender, Source: src_gender, NameColumn: name, ValueColumn: id)\n")])])]),t("h3",{attrs:{id:"em"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#em"}},[e._v("#")]),e._v(" Em")]),e._v(" "),t("p",[e._v("Create an em HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Em(Body, Class)\n")])])]),t("blockquote",[t("p",[e._v("Em")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("The em class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("This is an Em(important news).\n")])])]),t("h3",{attrs:{id:"forlist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#forlist"}},[e._v("#")]),e._v(" ForList")]),e._v(" "),t("p",[e._v("Display the list of elements in the Source data source in the template format set in Body and create a "),t("strong",[e._v("forlist")]),e._v(" element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(Source, Index){Body}\n")])])]),t("blockquote",[t("p",[e._v("ForList")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" or "),t("a",{attrs:{href:"#data"}},[e._v("Data")]),e._v(" function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("The variable of the iteration counter, starting from 1.\nAn optional parameter. If not specified, the iteration count value will be written to the [Source] _index variable.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Template for inserting elements.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(mysrc){Span(#mysrc_index#. #name#)}\n")])])]),t("h3",{attrs:{id:"form"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),t("p",[e._v("Create a form HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(Class, Body) [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Form")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the form.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style\nThe CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("h4",{attrs:{id:"example-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(class1 class2, Input(myid))\n")])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[e._v("#")]),e._v(" GetColumnType")]),e._v(" "),t("p",[e._v("Returns the field data type of a specific table.")]),e._v(" "),t("p",[e._v("Types returned include: "),t("code",[e._v("text, varchar, number, money, double, bytes, json, datetime, double")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetColumnType(Table, Column)\n")])])]),t("blockquote",[t("p",[e._v("GetColumnType")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Field name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("SetVar(coltype,GetColumnType(members, member_name))Div(){#coltype#}\n")])])]),t("h3",{attrs:{id:"gethistory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gethistory"}},[e._v("#")]),e._v(" GetHistory")]),e._v(" "),t("p",[e._v("Create a gethistory element and fill it with the history change records of the entries in the specified table. The data generated will be placed in the Source element, which can be used later in the source input function (for example, "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe array is sorted in order from the last modified.\nThe id field in the array points to the id of the rollback_tx table. block_id represents the block ID, block_time represents the block generation timestamp.")]),e._v(" "),t("h4",{attrs:{id:"syntax-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(Source, Name, Id, RollbackId)\n")])])]),t("blockquote",[t("p",[e._v("GetHistory")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Id")])]),e._v(" "),t("p",[e._v("Entry ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("RollbackId")])]),e._v(" "),t("p",[e._v("An optional parameter. If specified, only one record with the specified ID will be returned from the rollback_tx table.")])])]),e._v(" "),t("h4",{attrs:{id:"example-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(blocks, BlockHistory, 1)\n")])])]),t("h3",{attrs:{id:"getvar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getvar"}},[e._v("#")]),e._v(" GetVar")]),e._v(" "),t("p",[e._v("It returns the value of the specified variable that already exists, or an empty string if it does not exist.\nThe getvar element is only created when an editable tree is requested. The difference between "),t("code",[e._v("GetVar(varname)")]),e._v(" and "),t("code",[e._v("#varname")]),e._v(" is that if varname does not exist, GetVar will return an empty string, while #varname# will be interpreted as a string value.")]),e._v(" "),t("h4",{attrs:{id:"syntax-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetVar(Name)\n")])])]),t("blockquote",[t("p",[e._v("GetVar")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Variable name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(GetVar(name)){#name#}.Else{Name is unknown}\n")])])]),t("h3",{attrs:{id:"hint"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hint"}},[e._v("#")]),e._v(" Hint")]),e._v(" "),t("p",[e._v("Create a hint element for hints.")]),e._v(" "),t("h4",{attrs:{id:"syntax-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Hint(Icon,Title,Text)\n")])])]),t("blockquote",[t("p",[e._v("Hint")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Hint title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Hint text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Hint(Icon: "icon-wrench",Title:$@1pa_settings$,Text: This is a hint text)\n')])])]),t("h3",{attrs:{id:"if"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#if"}},[e._v("#")]),e._v(" If")]),e._v(" "),t("p",[e._v("Condition statement.\nReturns the first If or ElseIf child element that satisfies Condition. Otherwise, return the Else child element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Condition){ Body}\n [.ElseIf(Condition){ Body }]\n [.Else{ Body }]\n")])])]),t("blockquote",[t("p",[e._v("If")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Condition")])]),e._v(" "),t("p",[e._v("If the condition is equal to an empty string, 0 or false, it is considered that the condition is not met. In all other cases, this condition is considered to be satisfied.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("h4",{attrs:{id:"example-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(#value#){\n Span(Value)\n}.ElseIf(#value2#){Span(Value 2)\n}.ElseIf(#value3#){Span(Value 3)}.Else{\n Span(Nothing)\n}\n")])])]),t("h3",{attrs:{id:"image"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#image"}},[e._v("#")]),e._v(" Image")]),e._v(" "),t("p",[e._v("Create a image HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src, Alt, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Image")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Src")])]),e._v(" "),t("p",[e._v("Image source, file or "),t("code",[e._v("data:...")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Alt")])]),e._v(" "),t("p",[e._v("Alternative text when the image cannot be displayed.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Сlass")])]),e._v(" "),t("p",[e._v("Image class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src: Binary().ById(#id#), Class: preview).Style(height: 40px; widht 40px;)\n")])])]),t("h3",{attrs:{id:"imageinput"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#imageinput"}},[e._v("#")]),e._v(" ImageInput")]),e._v(" "),t("p",[e._v("Create an imageinput element to upload an image.")]),e._v(" "),t("h4",{attrs:{id:"syntax-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(Name, Width, Ratio, Format)\n")])])]),t("blockquote",[t("p",[e._v("ImageInput")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Width of the cropped image.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ratio")])]),e._v(" "),t("p",[e._v("Aspect ratio or image height.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("The format of the uploaded image.")])])]),e._v(" "),t("h4",{attrs:{id:"example-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(avatar, 100, 2/1)\n")])])]),t("h3",{attrs:{id:"include"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#include"}},[e._v("#")]),e._v(" Include")]),e._v(" "),t("p",[e._v("Insert the template with a specified name into the page code.")]),e._v(" "),t("h4",{attrs:{id:"syntax-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Include(Name)\n")])])]),t("blockquote",[t("p",[e._v("Include")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Template name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(myclass, Include(mywidget))\n")])])]),t("h3",{attrs:{id:"input"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#input"}},[e._v("#")]),e._v(" Input")]),e._v(" "),t("p",[e._v("Create an input HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name, Class, Placeholder, Type, Value, Disabled)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Input")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Placeholder")])]),e._v(" "),t("p",[e._v("Prompt for the expected value of the input field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("input type.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Element value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Disabled")])]),e._v(" "),t("p",[e._v("Disable the input element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name: name, Type: text, Placeholder: Enter your name)\nInput(Name: num, Type: text).Validate(minLength: 6, maxLength: 20)\n")])])]),t("h3",{attrs:{id:"inputerr"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputerr"}},[e._v("#")]),e._v(" InputErr")]),e._v(" "),t("p",[e._v("Create an inputerr element to validate the error text.")]),e._v(" "),t("h4",{attrs:{id:"syntax-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name,validation errors)]\n")])])]),t("blockquote",[t("p",[e._v("InputErr")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Corresponds to the name of the "),t("a",{attrs:{href:"#input"}},[e._v("Input")]),e._v(" element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("validation errors")])]),e._v(" "),t("p",[e._v("Validation error message for one or more parameters.")])])]),e._v(" "),t("h4",{attrs:{id:"example-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name: name,\nminLength: Value is too short,\nmaxLength: The length of the value must be less than 20 characters)\n")])])]),t("h3",{attrs:{id:"inputmap"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputmap"}},[e._v("#")]),e._v(" InputMap")]),e._v(" "),t("p",[e._v("Create an text input field for address, able to select coordinates on the map.")]),e._v(" "),t("h4",{attrs:{id:"syntax-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputMap(Name, Type, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("InputMap")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.\nThe value is an object in string format. For example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". When the InputMap is created with the predefined Value, the address field can be used to save the address value, so the it is not void.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Type of map spot mapping:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("polygon")]),e._v(" - indicates the area of a multi-spot closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Line")]),e._v(" - means a polyline with multiple points without closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Point")]),e._v(" - indicates a single point coordinate.")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('InputMap(Name: Coords,Type: polygon, MapType: hybrid, Value: `{"zoom":8, "center":{"lat":55.749942860682545,"lng":37.6207172870636}}`)\n')])])]),t("h3",{attrs:{id:"jsontosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jsontosource"}},[e._v("#")]),e._v(" JsonToSource")]),e._v(" "),t("p",[e._v("Create a jsontosource element and fill it with the key-value pairs of a JSON array. The data obtained is put into the Source element, which can be used later in the source input function (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe records in the result data are sorted alphabetically by JSON key.")]),e._v(" "),t("h4",{attrs:{id:"syntax-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("JsonToSource(Source, Data)\n")])])]),t("blockquote",[t("p",[e._v("JsonToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("A JSON object or a variable name containing a JSON object ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"example-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('JsonToSource(src, #myjson#)\nJsonToSource(dat, {"param":"value", "param2": "value 2"})\n')])])]),t("h3",{attrs:{id:"label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#label"}},[e._v("#")]),e._v(" Label")]),e._v(" "),t("p",[e._v("Create a label HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(Body, Class, For)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Label")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("For")])]),e._v(" "),t("p",[e._v("Bind to a form element.")])])]),e._v(" "),t("blockquote",[t("p",[t("code",[e._v("StyleThe")]),e._v(":CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(The first item).\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[e._v("#")]),e._v(" LangRes")]),e._v(" "),t("p",[e._v("Returns a specific language resource. If requested to edit the tree, the langres element is returned, and you may use the short format symbol $langres$.")]),e._v(" "),t("h4",{attrs:{id:"syntax-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(Name)\n")])])]),t("blockquote",[t("p",[e._v("LangRes")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the language resource.")])])]),e._v(" "),t("h4",{attrs:{id:"example-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(name)\nLangRes(myres)\n")])])]),t("h3",{attrs:{id:"linkpage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linkpage"}},[e._v("#")]),e._v(" LinkPage")]),e._v(" "),t("p",[e._v("Create a linkpage element, linking to the page.")]),e._v(" "),t("h4",{attrs:{id:"syntax-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LinkPage(Body, Page, Class, PageParams)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("LinkPage")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Button class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS styles")]),e._v(" "),t("h4",{attrs:{id:"example-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: "v_role_id=#recipient.role_id#")\n')])])]),t("h3",{attrs:{id:"map"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#map"}},[e._v("#")]),e._v(" Map")]),e._v(" "),t("p",[e._v("Create a visual map and display coordinates in any format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Map(Hmap, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("Map")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Hmap")])]),e._v(" "),t("p",[e._v("Height of an HTML element on the page.\nThe default value is 100.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Map value, an object in string format.\nFor example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". If "),t("code",[e._v("center")]),e._v(" is not specified, the map window will automatically adjust according to the specified coordinates.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Map(MapType:hybrid, Hmap:400, Value:{"coords":[{"lat":55.58774531752405,"lng":36.97260184619233},{"lat":55.58396161622043,"lng":36.973803475831005},{"lat":55.585222890513975,"lng":36.979811624024364},{"lat":55.58803635636347,"lng":36.978781655762646}],"area":146846.65783403456,"address":"Unnamed Road, Moscow, Russia, 143041"})\n')])])]),t("h3",{attrs:{id:"menugroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menugroup"}},[e._v("#")]),e._v(" MenuGroup")]),e._v(" "),t("p",[e._v("Create a nested submenu in the menu and return the menugroup element. Before replacing it with the language resource, the name parameter will return the value of Title.")]),e._v(" "),t("h4",{attrs:{id:"syntax-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(Title, Body, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child elements in a submenu.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(My Menu){\n MenuItem(Interface, sys-interface)\n MenuItem(Dahsboard, dashboard_default)\n}\n")])])]),t("h3",{attrs:{id:"menuitem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menuitem"}},[e._v("#")]),e._v(" MenuItem")]),e._v(" "),t("p",[e._v("Create a menu item and return the menuitem element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuItem(Title, Page, Params, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuItem")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('MenuItem(Title:$@1roles$, Page:@1roles_list, Icon:"icon-pie-chart")\n')])])]),t("h3",{attrs:{id:"money"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#money"}},[e._v("#")]),e._v(" Money")]),e._v(" "),t("p",[e._v("Returns the string value of exp / 10 ^ digit.")]),e._v(" "),t("h4",{attrs:{id:"syntax-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("blockquote",[t("p",[e._v("Money")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("A number in string format.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Digit")])]),e._v(" "),t("p",[e._v("The exponent of 10 in the expression "),t("code",[e._v("Exp/10^digit")]),e._v(". The value can be positive or negative, and a positive value determines the number of digits after the decimal point.")])])]),e._v(" "),t("h4",{attrs:{id:"example-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("h3",{attrs:{id:"or"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#or"}},[e._v("#")]),e._v(" Or")]),e._v(" "),t("p",[e._v("It returns the result of an if logical operation. All parameters listed in parentheses are separated by commas. If having one parameter that is value is not an empty string, zero or "),t("code",[e._v("false")]),e._v(", the parameter value is "),t("code",[e._v("true")]),e._v(", otherwise the parameter value is "),t("code",[e._v("false")]),e._v(". If the parameter value is "),t("code",[e._v("true")]),e._v(", the function returns "),t("code",[e._v("1")]),e._v(", otherwise it returns "),t("code",[e._v("0")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Or(parameters)\n")])])]),t("h4",{attrs:{id:"example-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Or(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"p"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#p"}},[e._v("#")]),e._v(" P")]),e._v(" "),t("p",[e._v("Create a p HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(Body, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("P")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(This is the first line.\n This is the second line.)\n")])])]),t("h3",{attrs:{id:"qrcode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#qrcode"}},[e._v("#")]),e._v(" QRcode")]),e._v(" "),t("p",[e._v("Returns the QR code with the specified text and create a qrcode element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(Text)\n")])])]),t("blockquote",[t("p",[e._v("QRcode")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("QR code text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(#name#)\n")])])]),t("h3",{attrs:{id:"radiogroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#radiogroup"}},[e._v("#")]),e._v(" RadioGroup")]),e._v(" "),t("p",[e._v("Create a radiogroup element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-44"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-44"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name, Source, NameColumn, ValueColumn, Value, Class)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("RadioGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the DBFind or Data function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("NameColumn")])]),e._v(" "),t("p",[e._v("Field name of the data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ValueColumn")])]),e._v(" "),t("p",[e._v("Value name of the data source.\nFields created with Custom cannot be used in this parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CCS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name: type_decision, Source: numbers_type_decisions, NameColumn: name, ValueColumn: value)\n")])])]),t("h3",{attrs:{id:"range"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range"}},[e._v("#")]),e._v(" Range")]),e._v(" "),t("p",[e._v("Create a range element, use step size Step from From to To (not including To) to fill integer elements. The data generated will be put into Source and can be used later in the function of the source input (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v("). If an invalid parameter is specified, an empty Source is returned.")]),e._v(" "),t("h4",{attrs:{id:"syntax-45"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-45"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Range(Source,From,To,Step)\n")])])]),t("blockquote",[t("p",[e._v("Range")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("From")])]),e._v(" "),t("p",[e._v("Starting value (i = From).")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("To")])]),e._v(" "),t("p",[e._v("End value (i ")]),e._v(".")]),e._v(" "),t("li",[e._v("All icon-class icons are from SimpleLineIcons: "),t("code",[e._v("icon-")]),e._v(".")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[111],{491:function(e,a,t){"use strict";t.r(a);var s=t(51),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"template-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#template-language"}},[e._v("#")]),e._v(" Template Language")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#page-construction"}},[e._v("Page construction")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#template-engine"}},[e._v("Template engine")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#create-pages"}},[e._v("Create pages")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#visual-page-designer"}},[e._v("Visual page designer")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#applicable-styles"}},[e._v("Applicable styles")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#page-module"}},[e._v("Page module")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#language-resource-editor"}},[e._v("Language resource editor")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-template-language"}},[e._v("Logicor template language")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#logicor-overview"}},[e._v("Logicor overview")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#use-pageparams-to-pass-parameters-to-pages"}},[e._v("Use PageParams to pass parameters to pages")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#calling-contracts"}},[e._v("Calling contracts")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-function-classification"}},[e._v("Logicor function classification")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#operations-on-variables"}},[e._v("Operations on variables:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#navigational-operations"}},[e._v("Navigational operations:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-manipulation"}},[e._v("Data manipulation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-presentation"}},[e._v("Data presentation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#accepting-of-data"}},[e._v("Accepting of data:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-formatting-elements"}},[e._v("Data formatting elements:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form-elements"}},[e._v("Form elements:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#operations-on-code-blocks"}},[e._v("Operations on code blocks:")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-function-references"}},[e._v("Logicor function references")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#address"}},[e._v("Address")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#addresstoid"}},[e._v("AddressToId")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#and"}},[e._v("And")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#binary"}},[e._v("Binary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#button"}},[e._v("Button")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#calculate"}},[e._v("Calculate")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chart"}},[e._v("Chart")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#custom"}},[e._v("Custom")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#datetime"}},[e._v("DateTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#forlist"}},[e._v("ForList")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form"}},[e._v("Form")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#getcolumntype"}},[e._v("GetColumnType")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#hint"}},[e._v("Hint")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#if"}},[e._v("If")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#image"}},[e._v("Image")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#imageinput"}},[e._v("ImageInput")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#include"}},[e._v("Include")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#input"}},[e._v("Input")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#inputerr"}},[e._v("InputErr")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#inputmap"}},[e._v("InputMap")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#label"}},[e._v("Label")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#linkpage"}},[e._v("LinkPage")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#map"}},[e._v("Map")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#menugroup"}},[e._v("MenuGroup")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#money"}},[e._v("Money")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#or"}},[e._v("Or")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#radiogroup"}},[e._v("RadioGroup")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#range"}},[e._v("Range")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#select"}},[e._v("Select")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#span"}},[e._v("Span")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#strong"}},[e._v("Strong")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#table"}},[e._v("Table")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#transactioninfo"}},[e._v("TransactionInfo")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#app-styles-for-mobile-devices"}},[e._v("App styles for mobile devices")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#layout"}},[e._v("Layout")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#title"}},[e._v("Title")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#strong-class-names"}},[e._v("Strong-class names")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#color"}},[e._v("Color")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#grid"}},[e._v("Grid")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#panel"}},[e._v("Panel")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form-app"}},[e._v("Form")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#button-app"}},[e._v("Button")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#icon"}},[e._v("Icon")])])])])])])]),e._v(" "),t("h2",{attrs:{id:"page-construction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#page-construction"}},[e._v("#")]),e._v(" Page construction")]),e._v(" "),t("p",[e._v("Weaver's Integrated Development Environment (IDE) is created using React, a JavaScript library. It has a page editor and a visual page designer. Pages are basic parts of an application, which are used to retrieve and display data from tables, create forms for receiving user input data, pass data to contracts, and navigate between application pages. Like contracts, pages are stored in the blockchain, which can ensure they are tamper-proof when loaded in the software client.")]),e._v(" "),t("h3",{attrs:{id:"template-engine"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#template-engine"}},[e._v("#")]),e._v(" Template engine")]),e._v(" "),t("p",[e._v("Page elements (pages and menus) are formed by developers in the template engine of a verification node using the template language in Weaver's page editor. All pages are constructed using the Logicor language developed by IBAX's development team. Use content/... API commands to request pages from nodes on the network. What the template engine sent as a response to this type of request is not an HTML page, but a JSON code composed of HTML tags that form a tree in accordance with the template structure. If you want to test the template engine, you can refer to the "),t("RouterLink",{attrs:{to:"/reference/api2.html#content"}},[e._v("content")]),e._v(" API command.")],1),e._v(" "),t("h3",{attrs:{id:"create-pages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-pages"}},[e._v("#")]),e._v(" Create pages")]),e._v(" "),t("p",[e._v("You can use the page editor to create and edit pages, which can be found in the Pages section of Weaver's management tool. The editor can be used to:")]),e._v(" "),t("ul",[t("li",[e._v("Write the page code, highlight the keywords of the Logicor template language;")]),e._v(" "),t("li",[e._v("Select and display menus on pages;")]),e._v(" "),t("li",[e._v("Edit the menu page;")]),e._v(" "),t("li",[e._v("Configure the permission to change pages, by specifying the contract name with permission in the ContractConditions function, or by directly specifying the access permission in Change conditions;")]),e._v(" "),t("li",[e._v("Start the visual page designer;")]),e._v(" "),t("li",[e._v("Preview pages.")])]),e._v(" "),t("h4",{attrs:{id:"visual-page-designer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#visual-page-designer"}},[e._v("#")]),e._v(" Visual page designer")]),e._v(" "),t("p",[e._v("The visual page designer can be used to create page layouts without using interface codes in the Logicor language. With it, you can set the position of form elements and text on pages by dragging and dropping such elements, and configure the size of page blocks. It provides a set of ready-to-use blocks for presenting standard data models: with titles, forms and information panels. After creating a page in the visual page designer, you can write program logic for receiving data and conditional structure in the page editor. In the future, we plan to create a visual page designer with additional functions.")]),e._v(" "),t("h4",{attrs:{id:"applicable-styles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applicable-styles"}},[e._v("#")]),e._v(" Applicable styles")]),e._v(" "),t("p",[e._v("By default, pages are presented with Angular's Bootstrap Angle style. Users can create their own styles according to needs. The style is stored in the style parameter stylesheet in the ecosystem parameter table.")]),e._v(" "),t("h4",{attrs:{id:"page-module"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#page-module"}},[e._v("#")]),e._v(" Page module")]),e._v(" "),t("p",[e._v("To use a code block in multiple pages, you can create a page module to hold and embed it into the page code. Page modules can be created and edited in Weaver's Module Blocks. Like pages, editing permissions can be defined.")]),e._v(" "),t("h4",{attrs:{id:"language-resource-editor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#language-resource-editor"}},[e._v("#")]),e._v(" Language resource editor")]),e._v(" "),t("p",[e._v("Weaver includes a mechanism for page localization using a function "),t("strong",[e._v("LangRes")]),e._v(" of the Logicor template language. It could replace language resource tags on the page with text lines corresponding to the language selected by the user in the software client or browser. You can use the short syntax "),t("strong",[e._v("$lable$")]),e._v(" instead of the "),t("strong",[e._v("LangRes")]),e._v(" function. The translation of messages in popups initiated by the contract is performed by Needle's "),t("strong",[e._v("LangRes")]),e._v(" function.")]),e._v(" "),t("p",[e._v("You can create and edit language resources in the Language resources section of Weaver. A language resource consists of label names and corresponding translation of such name in different languages, as well as the corresponding two-letter language identifier (EN, ZH, JP, etc.).")]),e._v(" "),t("p",[e._v("The permissions for adding and changing language resources can be defined in the same way as other tables.")]),e._v(" "),t("h2",{attrs:{id:"logicor-template-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-template-language"}},[e._v("#")]),e._v(" Logicor template language")]),e._v(" "),t("p",[e._v("Logicor functions provide the following operations:")]),e._v(" "),t("ul",[t("li",[e._v("Retrieving values from the database: "),t("code",[e._v("DBFind")]),e._v(", showing data retrieved from the database as tables and charts;")]),e._v(" "),t("li",[e._v("Data operations for assigning and displaying variable values: "),t("code",[e._v("SetVar, GetVar, Data")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying and comparing date/time values: "),t("code",[e._v("DateTime, Now, CmpTime")]),e._v(";")]),e._v(" "),t("li",[e._v("Use various user data input fields to build forms: "),t("code",[e._v("Form, ImageInput, Input, RadioGroup, Select")]),e._v(";")]),e._v(" "),t("li",[e._v("Verify the data in the form field by displaying error messages: "),t("code",[e._v("Validate, InputErr")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying the navigation elements: "),t("code",[e._v("AddToolButton, LinkPage, Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Calling contracts: "),t("code",[e._v("Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Creating HTML page layout elements, including various tags, and choosing specific css classes: "),t("code",[e._v("Div, P, Span, etc")]),e._v(";")]),e._v(" "),t("li",[e._v("Embedding and unloading images onto pages: "),t("code",[e._v("Image, ImageInput")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying conditions of page layout fragment: "),t("code",[e._v("If, ElseIf, Else")]),e._v(";")]),e._v(" "),t("li",[e._v("Creating multi-level menus;")]),e._v(" "),t("li",[e._v("Page localization.")])]),e._v(" "),t("h3",{attrs:{id:"logicor-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-overview"}},[e._v("#")]),e._v(" Logicor overview")]),e._v(" "),t("p",[e._v("The Logicor page template language is a functional language that allows a function calling another function "),t("code",[e._v("FuncName(parameters)")]),e._v(" and nesting functions into each other. You can specify parameters without quotes, and delete unnecessary parameters.")]),e._v(" "),t("p",[e._v("If the parameter contains a comma, it should be enclosed in quotes (backquotes or double quotes). If a function can only have one parameter, you can use a comma without quotes. In addition, if the parameter has an unpaired closing parenthesis, quotes should be used.")]),e._v(" "),t("p",[e._v("If you put a parameter in quotes, but the parameter itself contains quotes, you can use different types of quotes or multiple quotes in the text.")]),e._v(" "),t("p",[e._v("In the function definition, each parameter has a specific name. You can call the function and specify the parameters in the order of declaration, or any parameter set in any order of name: "),t("code",[e._v("Parameter_name: Parameter_value")]),e._v(". Using this method, you can safely add new function parameters without breaking compatibility with the current template:")]),e._v(" "),t("p",[e._v("Functions can return texts, generate HTML elements (e.g. "),t("code",[e._v("Input")]),e._v("), or create HTML elements with nested HTML elements ("),t("code",[e._v("Div, P, Span")]),e._v("). In the latter case, a parameter with the predefined name Body is used to define the nested element. For example, nesting two divs in another div looks like this:")]),e._v(" "),t("p",[e._v("To define the nested elements described in the Body parameter, the following notation can be used: "),t("code",[e._v("FuncName(...){...}")]),e._v(". Nested elements should be specified with braces:")]),e._v(" "),t("p",[e._v("If you need to specify the same function multiple times in succession, you can use the dot "),t("code",[e._v(".")]),e._v(" instead of writing its name every time. For example, the following are the same:")]),e._v(" "),t("p",[e._v("With this language, you can assign a variable with the SetVar function and refer its value with "),t("code",[e._v("#name#")]),e._v(".")]),e._v(" "),t("p",[e._v("To refer to the language resources of the ecosystem, you can use "),t("code",[e._v("$langres$")]),e._v(", where langres is the language name.")]),e._v(" "),t("p",[e._v("The following variables are predefined:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("#key_id#")]),e._v(" - Account address of the current user;")]),e._v(" "),t("li",[t("code",[e._v("#ecosystem_id#")]),e._v(" - Current ecosystem ID;")]),e._v(" "),t("li",[t("code",[e._v("#guest_key#")]),e._v(" - Address of the guest account;")]),e._v(" "),t("li",[t("code",[e._v("#isMobile#")]),e._v(" - 1, if Weaver runs on a mobile device.")])]),e._v(" "),t("h4",{attrs:{id:"use-pageparams-to-pass-parameters-to-pages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#use-pageparams-to-pass-parameters-to-pages"}},[e._v("#")]),e._v(" Use PageParams to pass parameters to pages")]),e._v(" "),t("p",[e._v("Many functions support the PageParams parameter, which is used to pass parameters when redirecting to a new page. For example: PageParams: "),t("code",[e._v('"param1=value1,param2=value2"')]),e._v(". The parameter value can be a simple string or a variable with a reference value. When passing parameters to pages, a variable with the parameter name is created, e.g. "),t("code",[e._v("#param1#")]),e._v(" and "),t("code",[e._v("#param2#")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=world"')]),e._v(" - The new page receives the hello parameter with world as the value;")]),e._v(" "),t("li",[t("code",[e._v('PageParams: "hello=#world#"')]),e._v(" - The new page receives the hello parameter with the value of the world variable.")])]),e._v(" "),t("p",[e._v("In addition, the Val function can get data from forms, which is specified in the redirection.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=Val(world)"')]),e._v(" - The new page receives the hello parameter with the value of the world form element.")])]),e._v(" "),t("h4",{attrs:{id:"calling-contracts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#calling-contracts"}},[e._v("#")]),e._v(" Calling contracts")]),e._v(" "),t("p",[e._v("Logicor implements contract calls by clicking the Button function in a form. Once an event is triggered, the data entered by the user in a form field on the page will be passed to the contract. If the form field name corresponds to the variable name in the data section of the contract called, the data will be automatically transferred. The Button function allows to open a modal window for the user to verify the contract execution, and initiate the redirection to the specified page when the contract is successfully executed, and pass certain parameters to the page.")]),e._v(" "),t("h2",{attrs:{id:"logicor-function-classification"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-function-classification"}},[e._v("#")]),e._v(" Logicor function classification")]),e._v(" "),t("h3",{attrs:{id:"operations-on-variables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operations-on-variables"}},[e._v("#")]),e._v(" Operations on variables:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])])]),e._v(" "),t("h3",{attrs:{id:"navigational-operations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigational-operations"}},[e._v("#")]),e._v(" Navigational operations:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#button"}},[e._v("Button")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#linkpage"}},[e._v("LinkPage")])])])])]),e._v(" "),t("h3",{attrs:{id:"data-manipulation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-manipulation"}},[e._v("#")]),e._v(" Data manipulation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#calculate"}},[e._v("Calculate")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#datetime"}},[e._v("DateTime")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#money"}},[e._v("Money")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"data-presentation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-presentation"}},[e._v("#")]),e._v(" Data presentation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#hint"}},[e._v("Hint")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#image"}},[e._v("Image")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#chart"}},[e._v("Chart")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menugroup"}},[e._v("MenuGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#table"}},[e._v("Table")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#forlist"}},[e._v("ForList")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"accepting-of-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#accepting-of-data"}},[e._v("#")]),e._v(" Accepting of data:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#address"}},[e._v("Address")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#addresstoid"}},[e._v("AddressToId")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#range"}},[e._v("Range")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#getcolumntype"}},[e._v("GetColumnType")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#binary"}},[e._v("Binary")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#transactioninfo"}},[e._v("TransactionInfo")])])])])]),e._v(" "),t("h3",{attrs:{id:"data-formatting-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-formatting-elements"}},[e._v("#")]),e._v(" Data formatting elements:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#span"}},[e._v("Span")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#label"}},[e._v("Label")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#strong"}},[e._v("Strong")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"form-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form-elements"}},[e._v("#")]),e._v(" Form elements:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#form"}},[e._v("Form")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputerr"}},[e._v("InputErr")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputmap"}},[e._v("InputMap")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#imageinput"}},[e._v("ImageInput")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#radiogroup"}},[e._v("RadioGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#map"}},[e._v("Map")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#input"}},[e._v("Input")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#select"}},[e._v("Select")])]),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"operations-on-code-blocks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operations-on-code-blocks"}},[e._v("#")]),e._v(" Operations on code blocks:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#if"}},[e._v("If")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#or"}},[e._v("Or")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#include"}},[e._v("Include")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#and"}},[e._v("And")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h2",{attrs:{id:"logicor-function-references"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-function-references"}},[e._v("#")]),e._v(" Logicor function references")]),e._v(" "),t("h3",{attrs:{id:"address"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address"}},[e._v("#")]),e._v(" Address")]),e._v(" "),t("p",[e._v("This function returns the wallet address "),t("code",[e._v("xxxx-xxxx-...-xxxx")]),e._v(" of a specific account address; if no address is specified, the account address of the current user will be used as the parameter.")]),e._v(" "),t("h4",{attrs:{id:"syntax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(account)\n\n")])])]),t("blockquote",[t("p",[e._v("Address")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("account")])]),e._v(" "),t("p",[e._v("Account address.")])])]),e._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Span(Your wallet: Address(#account#))\n")])])]),t("h3",{attrs:{id:"addresstoid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[e._v("#")]),e._v(" AddressToId")]),e._v(" "),t("p",[e._v("It returns the account address of a specific wallet address xxxx-xxxx-...-xxxx.")]),e._v(" "),t("h4",{attrs:{id:"syntax-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-2"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(Wallet)\n")])])]),t("blockquote",[t("p",[e._v("AddressToId")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Wallet")])]),e._v(" "),t("p",[e._v("The wallet address in XXXX-...-XXXX format.")])])]),e._v(" "),t("h4",{attrs:{id:"example-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(#wallet#)\n")])])]),t("h3",{attrs:{id:"addtoolbutton"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addtoolbutton"}},[e._v("#")]),e._v(" AddToolButton")]),e._v(" "),t("p",[e._v("Create a button panel with an addtoolbutton element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-3"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddToolButton(Title, Icon, Page, PageParams)\n [.Popup(Width, Header)]\n")])])]),t("blockquote",[t("p",[e._v("AddToolButton")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Button title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Button icon style.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the page redirects to.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("The parameters passed to the page.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("The modal window pops up.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Header")])]),e._v(" "),t("p",[e._v("Title of the window.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Percentage of window width.\nIts range is 1 to 100.")])])]),e._v(" "),t("h4",{attrs:{id:"example-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('AddToolButton(Title: $@1broadcast$, Page: @1notifications_broadcast, Icon: icon-plus).Popup(Header: $@1notifications_broadcast$, Width: "50")\n')])])]),t("h3",{attrs:{id:"and"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#and"}},[e._v("#")]),e._v(" And")]),e._v(" "),t("p",[e._v("It returns the result of an and logical operation. All parameters listed in parentheses are separated by commas. If one of the parameters is an empty string, zero or "),t("code",[e._v("false")]),e._v(", the parameter value is "),t("code",[e._v("false")]),e._v(", otherwise the parameter value is "),t("code",[e._v("true")]),e._v(". If the parameter value is "),t("code",[e._v("true")]),e._v(", the function returns "),t("code",[e._v("1")]),e._v(", otherwise it returns "),t("code",[e._v("0")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-4"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("And(parameters)\n")])])]),t("h4",{attrs:{id:"example-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(And(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"appparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#appparam"}},[e._v("#")]),e._v(" AppParam")]),e._v(" "),t("p",[e._v("Output the application parameter value, which is taken from the app_params table of the current ecosystem. If there is a language resource with the specified name, its value will be automatically replaced.")]),e._v(" "),t("h4",{attrs:{id:"syntax-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-5"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(App, Name, Index, Source)\n\n")])])]),t("blockquote",[t("p",[e._v("AppParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("App")])]),e._v(" "),t("p",[e._v("Application ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nThe parameter elements index, starting from 1. For example, if "),t("code",[e._v("type = full,light")]),e._v(", then "),t("code",[e._v("AppParam(1, type, 2)")]),e._v(" returns "),t("code",[e._v("light")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of specific parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("h4",{attrs:{id:"example-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(1, type, Source: mytype)\n")])])]),t("h3",{attrs:{id:"arraytosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#arraytosource"}},[e._v("#")]),e._v(" ArrayToSource")]),e._v(" "),t("p",[e._v("Create an arraytosource element and fill it with the key-value pairs of a JSON array. The data obtained is put into the Source element, which can be used later in the source input function (e.g. Table).")]),e._v(" "),t("h4",{attrs:{id:"syntax-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-6"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(Source, Data)\n\n")])])]),t("blockquote",[t("p",[e._v("ArrayToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("A JSON array or a variable name containing a JSON array ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"example-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(src, #myjsonarr#)\nArrayToSource(dat, [1, 2, 3])\n")])])]),t("h3",{attrs:{id:"binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#binary"}},[e._v("#")]),e._v(" Binary")]),e._v(" "),t("p",[e._v("Returns links to static files stored in the binary table binaries.")]),e._v(" "),t("h4",{attrs:{id:"syntax-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Binary(Name, AppID, MemberID)[.ById(ID)][.Ecosystem(ecosystem)]\n")])])]),t("blockquote",[t("p",[e._v("Binary")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("File name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("AppID")])]),e._v(" "),t("p",[e._v("Application ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MemberID")])]),e._v(" "),t("p",[e._v("Account address, 0 by default.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ID")])]),e._v(" "),t("p",[e._v("Static file ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ecosystem")])]),e._v(" "),t("p",[e._v("Ecosystem ID. If it is not specified, the binary file is requested from the current ecosystem.")])])]),e._v(" "),t("h4",{attrs:{id:"example-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Image(Src: Binary("my_image", 1))\nImage(Src: Binary().ById(2))\nImage(Src: Binary().ById(#id#).Ecosystem(#eco#))\n')])])]),t("h3",{attrs:{id:"button"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#button"}},[e._v("#")]),e._v(" Button")]),e._v(" "),t("p",[e._v("Create a button HTML element which will create a button to call a contract or open a page.")]),e._v(" "),t("h4",{attrs:{id:"syntax-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Button(Body, Page, Class, Contract, Params, PageParams)\n [.CompositeContract(Contract, Data)]\n [.Alert(Text, ConfirmButton, CancelButton, Icon)]\n [.Popup(Width, Header)]\n [.Style(Style)]\n [.ErrorRedirect((ErrorID,PageName,PageParams)]\n")])])]),t("blockquote",[t("p",[e._v("Button")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the page redirects to.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Button class.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Contract")])]),e._v(" "),t("p",[e._v("Name of the contract called.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("The list of values passed to the contract. Normally, the value of the contract parameter (the data section) is obtained from an HTML element (such as an input field) of id with a similar name. If the element id is different from the name of the contract parameter, then the value should be assigned in the format of contractField1=idname1, contractField2=idname2. This parameter is returned to attr as the object {contractField1: idname1, contractField2: idname2}.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("The format of parameters passed to the redirect page is pageField1=idname1, pageField2=idname2. Variables with target page parameter names #pageField1 and #pageField2 are created on the target page and assigned the specified values. See more specifications for parameter passing Use PageParams to pass parameters to pages).")])])]),e._v(" "),t("blockquote",[t("p",[e._v("CompositeContract")])]),e._v(" "),t("p",[e._v("Used to add additional contracts to the button. CompositeContract can be used multiple times.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the contract.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("The contract parameters are JSON arrays.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Alert")])]),e._v(" "),t("p",[e._v("Display the message.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Text of the message.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ConfirmButton")])]),e._v(" "),t("p",[e._v("Title of the Confirm button.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("CancelButton")])]),e._v(" "),t("p",[e._v("Title of the Cancel button.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Button icon.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("Output modal window.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Header")])]),e._v(" "),t("p",[e._v("Window title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Percentage of window width.\nIts range is 1 to 100.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("ErrorRedirect")])]),e._v(" "),t("p",[e._v("Specify and redirect to a page when the :ref:contractfundef-Throw function generates an error during contract execution. There can be several ErrorRedirect calls. Therefore, when returning the "),t("em",[e._v("errredirect")]),e._v(" attribute, the attribute key is ErrorID and the value is the parameters list.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("ErrorID")])]),e._v(" "),t("p",[e._v("Error ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageName")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Parameters passed to the page.")])])]),e._v(" "),t("h4",{attrs:{id:"example-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Button(Submit, default_page, mybtn_class).Alert(Alert message)\nButton(Contract: MyContract, Body:My Contract, Class: myclass, Params:"Name=myid,Id=i10,Value")\n')])])]),t("h3",{attrs:{id:"calculate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#calculate"}},[e._v("#")]),e._v(" Calculate")]),e._v(" "),t("p",[e._v("It returns the result of the arithmetic expression passed in the Exp parameter. The following operations are applicable: +, -, *, / and brackets ().")]),e._v(" "),t("h4",{attrs:{id:"syntax-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Calculate(Exp, Type, Prec)\n")])])]),t("blockquote",[t("p",[e._v("Calculate")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("An arithmetic expression, containing numbers and the #name# variable.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Result data type: int, float, money. If not specified, it is float if there is a number with a decimal point, otherwise it is int.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Prec")])]),e._v(" "),t("p",[e._v("float and money data, with two significant digits after the decimal point.")])])]),e._v(" "),t("h4",{attrs:{id:"example-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Calculate( Exp: (342278783438+5000)\\*(#val#-932780000), Type: money, Prec:18 )\nCalculate(10000-(34+5)\\*#val#)\nCalculate("((10+#val#-45)\\*3.0-10)/4.5 + #val#", Prec: 4)\n')])])]),t("h3",{attrs:{id:"chart"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chart"}},[e._v("#")]),e._v(" Chart")]),e._v(" "),t("p",[e._v("Create HTML charts.")]),e._v(" "),t("h4",{attrs:{id:"syntax-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Chart(Type, Source, FieldLabel, FieldValue, Colors)\n")])])]),t("blockquote",[t("p",[e._v("Chart")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Chart type.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name of the data source, e.g., obtained from the "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldLabel")])]),e._v(" "),t("p",[e._v("Name of the header field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldValue")])]),e._v(" "),t("p",[e._v("Name of the value field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Colors")])]),e._v(" "),t("p",[e._v("List of colors.")])])]),e._v(" "),t("h4",{attrs:{id:"example-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"name,count"){\n John Silver,10\n "Mark, Smith",20\n "Unknown ""Person""",30\n}\nChart(Type: "bar", Source: mysrc, FieldLabel: "name", FieldValue: "count", Colors: "red, green")\n')])])]),t("h3",{attrs:{id:"cmptime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cmptime"}},[e._v("#")]),e._v(" CmpTime")]),e._v(" "),t("p",[e._v("It compares two time values in the same format.\nIt supports unixtime, "),t("code",[e._v("YYYY-MM-DD HH:MM:SS")]),e._v(" and any time format, such as "),t("code",[e._v("YYYYMMDD")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CmpTime(Time1, Time2)\n")])])]),t("p",[e._v("Return value")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("-1")]),e._v(" - Time1 Time2.")])]),e._v(" "),t("h4",{attrs:{id:"example-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(CmpTime(#time1#, #time2#)<0){...}\n")])])]),t("h3",{attrs:{id:"code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#code"}},[e._v("#")]),e._v(" Code")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.")]),e._v(" "),t("p",[e._v("It substitute a variable with the value of the variable (for example, "),t("code",[e._v("#name#")]),e._v(").")]),e._v(" "),t("h4",{attrs:{id:"syntax-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code(Text)\n")])])]),t("blockquote",[t("p",[e._v("Code")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code( P(This is the first line.\n Span(This is the second line.))\n)\n")])])]),t("h3",{attrs:{id:"codeasis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#codeasis"}},[e._v("#")]),e._v(" CodeAsIs")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.\nIt does not replace a variable with its value. For example, "),t("code",[e._v("#name#")]),e._v(" will be displayed as is.")]),e._v(" "),t("h4",{attrs:{id:"syntax-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs(Text)\n")])])]),t("blockquote",[t("p",[e._v("CodeAsIs")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs( P(This is the #test1#.\n Span(This is the #test2#.))\n)\n")])])]),t("h3",{attrs:{id:"data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[e._v("#")]),e._v(" Data")]),e._v(" "),t("p",[e._v("Create a data element, fill it with the specified data and put it in Source. Then, you can receive Source as a data input in "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions. The sequence of column names corresponds to the sequence of data entry values.")]),e._v(" "),t("h4",{attrs:{id:"syntax-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Data(Source,Columns,Data)\n [.Custom(Column){Body}]\n")])])]),t("blockquote",[t("p",[e._v("Data")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name of the data source. You can specify any name that will be passed to other functions later as a data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Columns")])]),e._v(" "),t("p",[e._v("A list of column names, separated by commas.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("Data set.")]),e._v(" "),t("p",[e._v("One record per line. Column values must be separated by commas. Data and Columns should be set in the same order.")]),e._v(" "),t("p",[e._v("Values with commas should be enclosed in double quotes ("),t("code",[e._v('"example1, example2", 1, 2')]),e._v("). Quoted values should be put in two double quotes ("),t("code",[e._v('"""example", "example2""", 1, 2')]),e._v(").")])])]),e._v(" "),t("h3",{attrs:{id:"custom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom"}},[e._v("#")]),e._v(" Custom")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to [Table](#table) and other functions to receive data.\nUse multiple Custom functions if you want to assign multiple calculated columns.\n")])])]),t("ul",[t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")])])]),e._v(" "),t("h4",{attrs:{id:"example-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"id,name"){\n "1",John Silver\n 2,"Mark, Smith"\n 3,"Unknown ""Person"""\n }.Custom(link){Button(Body: View, Class: btn btn-link, Page: user, PageParams: "id=#id#"}\n')])])]),t("h3",{attrs:{id:"datetime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datetime"}},[e._v("#")]),e._v(" DateTime")]),e._v(" "),t("p",[e._v("Display the time and date in the specified format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(DateTime, Format)\n")])])]),t("blockquote",[t("p",[e._v("DateTime")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("DateTime")])]),e._v(" "),t("p",[e._v("Time and date expressed in unixtime or standard format "),t("code",[e._v("2006-01-02T15:04:05")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("Format template: year in 2-digit format "),t("code",[e._v("YY")]),e._v(", 4-digit format "),t("code",[e._v("YYYY")]),e._v(", month in "),t("code",[e._v("MM")]),e._v(", day in "),t("code",[e._v("DD")]),e._v(", hour in "),t("code",[e._v("HH")]),e._v(", minute in "),t("code",[e._v("MM")]),e._v(", second in "),t("code",[e._v("SS")]),e._v(", e.g.: "),t("code",[e._v("YY/MM/DD HH:MM")]),e._v(".\nIf it is not specified or missing, "),t("code",[e._v("YYYY-MM-DD HH:MI:SS")]),e._v(" will be used.")])])]),e._v(" "),t("h4",{attrs:{id:"example-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(2017-11-07T17:51:08)\nDateTime(#mytime#,HH:MI DD.MM.YYYY)\n")])])]),t("h3",{attrs:{id:"dbfind"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbfind"}},[e._v("#")]),e._v(" DBFind")]),e._v(" "),t("p",[e._v("Create a dbfind element, fill it with the data of the table table and put it in the Source structure, which can later be used for the input data of "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions Source.")]),e._v(" "),t("h4",{attrs:{id:"syntax-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBFind(table, Source)\n [.Columns(columns)]\n [.Where(conditions)]\n [.WhereId(id)]\n [.Order(name)]\n [.Limit(limit)]\n [.Offset(offset)]\n [.Count(countvar)]\n [.Ecosystem(id)]\n [.Cutoff(columns)]\n [.Custom(Column){Body}]\n [.Vars(Prefix)]\n")])])]),t("blockquote",[t("p",[e._v("DBFind")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Columns")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("columns")])]),e._v(" "),t("p",[e._v("If not specified, a list of all fields will be returned. If there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(". In this case, the field name generated is "),t("code",[e._v("columnname.fieldname")]),e._v(".")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Where")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("conditions")])])]),e._v(" "),t("p",[e._v("Data query conditions. See DBFind.\nIf there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(".")]),e._v(" "),t("blockquote",[t("p",[e._v("WhereId\nQuery by ID, e.g. "),t("code",[e._v(".WhereId(1)")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Entry ID.")]),e._v(" "),t("blockquote",[t("p",[e._v("Order\nSort by field.\nFor more information about the sorting syntax, see "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("name")])])]),e._v(" "),t("p",[e._v("Field Name")]),e._v(" "),t("blockquote",[t("p",[e._v("Limit")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("limit")])]),e._v(" "),t("p",[e._v("The number of entries returned, 25 by default. The maximum number is 10,000.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Offset")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Offset")])]),e._v(" "),t("p",[e._v("Offset.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Count")])]),e._v(" "),t("p",[e._v("Specify the total number of rows of the Where condition.\nIn addition to storing it in a variable, the total count is returned in the count parameter of the dbfind element.")]),e._v(" "),t("p",[e._v("If Where and WhereID are not specified, the total count of rows in the table will be returned.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("countvar")])]),e._v(" "),t("p",[e._v("Name of the variable that holds the row count.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Ecosystem")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Ecosystem ID. By default, the data comes from the specified table in the current ecosystem.")]),e._v(" "),t("blockquote",[t("p",[e._v("Cutoff")])]),e._v(" "),t("p",[e._v("Used to cut and display large amounts of text data.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("columns")])])]),e._v(" "),t("p",[e._v("A comma-separated list of fields that must be processed by the Cutoff function.\nThe field value will be replaced by a JSON object that has two fields: link link and title title. If the field value contains more than 32 characters, link pointing to the first 32 characters of the full text is returned. If the field value contains 32 characters or less, link is set to void and title contains the complete field value.")]),e._v(" "),t("blockquote",[t("p",[e._v("Custom")])]),e._v(" "),t("p",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions to receive data.\nIf you want to assign multiple calculated columns, use multiple Custom functions.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Column")])])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Body")])])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")]),e._v(" "),t("blockquote",[t("p",[e._v("Vars")])]),e._v(" "),t("p",[e._v("The first row obtained by the query will generate a set of variables with values. When it is specified, the Limit parameter automatically becomes 1, and only one (1) record is returned.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Prefix")])])]),e._v(" "),t("p",[e._v("The prefix added to the variable name. Its format is "),t("code",[e._v("#prefix_columnname#")]),e._v(", where the column name immediately follows the underscore symbol. If there is a column containing a JSON field, the variable generated will be in the following format: "),t("code",[e._v("#prefix_columnname_field#")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"example-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(parameters,myparam)\nDBFind(parameters,myparam).Columns(name,value).Where({name:"money"})\nDBFind(parameters,myparam).Custom(myid){Strong(#id#)}.Custom(myname){\n Strong(Em(#name#))Div(myclass, #company#)\n}\n')])])]),t("h3",{attrs:{id:"div"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#div"}},[e._v("#")]),e._v(" Div")]),e._v(" "),t("p",[e._v("Create a div HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(Class, Body)\n [.Style(Style)]\n [.Show(Condition)]\n [.Hide(Condition)]\n")])])]),t("blockquote",[t("p",[e._v("Div")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the div.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("blockquote",[t("p",[e._v("Show")])]),e._v(" "),t("p",[e._v("Define the conditions for displaying Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("See Hide below.")]),e._v(" "),t("blockquote",[t("p",[e._v("Hide")])]),e._v(" "),t("p",[e._v("Define the conditions for hiding Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("The expression format is "),t("code",[e._v("InputName=Value")]),e._v(", when all expressions are true, "),t("em",[e._v("Condition")]),e._v(" is true, and when the value of "),t("code",[e._v("InputName")]),e._v(" is equal to "),t("code",[e._v("Value")]),e._v(", "),t("em",[e._v("Condition")]),e._v(" is true. If multiple "),t("em",[e._v("Show")]),e._v(" or "),t("em",[e._v("Hide")]),e._v(" are called, there must be at least one "),t("em",[e._v("Condition")]),e._v(" parameter is true.")]),e._v(" "),t("h4",{attrs:{id:"example-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Form(){\n Div(text-left){\n Input(Name: "broadcast", Type: "checkbox", Value: "false")\n }\n Div(text-left){\n hello\n }.Show("broadcast=false")\n Div(text-left){\n world\n }.Hide("broadcast=false")\n}\n')])])]),t("h3",{attrs:{id:"ecosysparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecosysparam"}},[e._v("#")]),e._v(" EcosysParam")]),e._v(" "),t("p",[e._v("This function obtains parameter values from the ecosystem parameter table of the current ecosystem. If the returned result name contains the language resources, it will be translated accordingly.")]),e._v(" "),t("h4",{attrs:{id:"syntax-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EcosysParam(Name, Index, Source)\n")])])]),t("blockquote",[t("p",[e._v("EcosysParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("If the requested parameter is a list of comma-separated elements, you can specify an index starting from 1. For example, if "),t("code",[e._v("gender = male,female")]),e._v(", then "),t("code",[e._v("gender = male,female")]),e._v(" returns "),t("code",[e._v("female")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of the specified parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(EcosysParam(founder_account))\nEcosysParam(gender, Source: mygender)\n\nEcosysParam(Name: gender_list, Source: src_gender)\nSelect(Name: gender, Source: src_gender, NameColumn: name, ValueColumn: id)\n")])])]),t("h3",{attrs:{id:"em"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#em"}},[e._v("#")]),e._v(" Em")]),e._v(" "),t("p",[e._v("Create an em HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Em(Body, Class)\n")])])]),t("blockquote",[t("p",[e._v("Em")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("The em class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("This is an Em(important news).\n")])])]),t("h3",{attrs:{id:"forlist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#forlist"}},[e._v("#")]),e._v(" ForList")]),e._v(" "),t("p",[e._v("Display the list of elements in the Source data source in the template format set in Body and create a "),t("strong",[e._v("forlist")]),e._v(" element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(Source, Index){Body}\n")])])]),t("blockquote",[t("p",[e._v("ForList")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" or "),t("a",{attrs:{href:"#data"}},[e._v("Data")]),e._v(" function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("The variable of the iteration counter, starting from 1.\nAn optional parameter. If not specified, the iteration count value will be written to the [Source] _index variable.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Template for inserting elements.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(mysrc){Span(#mysrc_index#. #name#)}\n")])])]),t("h3",{attrs:{id:"form"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),t("p",[e._v("Create a form HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(Class, Body) [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Form")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the form.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style\nThe CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("h4",{attrs:{id:"example-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(class1 class2, Input(myid))\n")])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[e._v("#")]),e._v(" GetColumnType")]),e._v(" "),t("p",[e._v("Returns the field data type of a specific table.")]),e._v(" "),t("p",[e._v("Types returned include: "),t("code",[e._v("text, varchar, number, money, double, bytes, json, datetime, double")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetColumnType(Table, Column)\n")])])]),t("blockquote",[t("p",[e._v("GetColumnType")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Field name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("SetVar(coltype,GetColumnType(members, member_name))Div(){#coltype#}\n")])])]),t("h3",{attrs:{id:"gethistory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gethistory"}},[e._v("#")]),e._v(" GetHistory")]),e._v(" "),t("p",[e._v("Create a gethistory element and fill it with the history change records of the entries in the specified table. The data generated will be placed in the Source element, which can be used later in the source input function (for example, "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe array is sorted in order from the last modified.\nThe id field in the array points to the id of the rollback_tx table. block_id represents the block ID, block_time represents the block generation timestamp.")]),e._v(" "),t("h4",{attrs:{id:"syntax-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(Source, Name, Id, RollbackId)\n")])])]),t("blockquote",[t("p",[e._v("GetHistory")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Id")])]),e._v(" "),t("p",[e._v("Entry ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("RollbackId")])]),e._v(" "),t("p",[e._v("An optional parameter. If specified, only one record with the specified ID will be returned from the rollback_tx table.")])])]),e._v(" "),t("h4",{attrs:{id:"example-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(blocks, BlockHistory, 1)\n")])])]),t("h3",{attrs:{id:"getvar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getvar"}},[e._v("#")]),e._v(" GetVar")]),e._v(" "),t("p",[e._v("It returns the value of the specified variable that already exists, or an empty string if it does not exist.\nThe getvar element is only created when an editable tree is requested. The difference between "),t("code",[e._v("GetVar(varname)")]),e._v(" and "),t("code",[e._v("#varname")]),e._v(" is that if varname does not exist, GetVar will return an empty string, while #varname# will be interpreted as a string value.")]),e._v(" "),t("h4",{attrs:{id:"syntax-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetVar(Name)\n")])])]),t("blockquote",[t("p",[e._v("GetVar")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Variable name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(GetVar(name)){#name#}.Else{Name is unknown}\n")])])]),t("h3",{attrs:{id:"hint"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hint"}},[e._v("#")]),e._v(" Hint")]),e._v(" "),t("p",[e._v("Create a hint element for hints.")]),e._v(" "),t("h4",{attrs:{id:"syntax-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Hint(Icon,Title,Text)\n")])])]),t("blockquote",[t("p",[e._v("Hint")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Hint title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Hint text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Hint(Icon: "icon-wrench",Title:$@1pa_settings$,Text: This is a hint text)\n')])])]),t("h3",{attrs:{id:"if"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#if"}},[e._v("#")]),e._v(" If")]),e._v(" "),t("p",[e._v("Condition statement.\nReturns the first If or ElseIf child element that satisfies Condition. Otherwise, return the Else child element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Condition){ Body}\n [.ElseIf(Condition){ Body }]\n [.Else{ Body }]\n")])])]),t("blockquote",[t("p",[e._v("If")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Condition")])]),e._v(" "),t("p",[e._v("If the condition is equal to an empty string, 0 or false, it is considered that the condition is not met. In all other cases, this condition is considered to be satisfied.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("h4",{attrs:{id:"example-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(#value#){\n Span(Value)\n}.ElseIf(#value2#){Span(Value 2)\n}.ElseIf(#value3#){Span(Value 3)}.Else{\n Span(Nothing)\n}\n")])])]),t("h3",{attrs:{id:"image"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#image"}},[e._v("#")]),e._v(" Image")]),e._v(" "),t("p",[e._v("Create a image HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src, Alt, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Image")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Src")])]),e._v(" "),t("p",[e._v("Image source, file or "),t("code",[e._v("data:...")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Alt")])]),e._v(" "),t("p",[e._v("Alternative text when the image cannot be displayed.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Сlass")])]),e._v(" "),t("p",[e._v("Image class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src: Binary().ById(#id#), Class: preview).Style(height: 40px; widht 40px;)\n")])])]),t("h3",{attrs:{id:"imageinput"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#imageinput"}},[e._v("#")]),e._v(" ImageInput")]),e._v(" "),t("p",[e._v("Create an imageinput element to upload an image.")]),e._v(" "),t("h4",{attrs:{id:"syntax-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(Name, Width, Ratio, Format)\n")])])]),t("blockquote",[t("p",[e._v("ImageInput")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Width of the cropped image.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ratio")])]),e._v(" "),t("p",[e._v("Aspect ratio or image height.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("The format of the uploaded image.")])])]),e._v(" "),t("h4",{attrs:{id:"example-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(avatar, 100, 2/1)\n")])])]),t("h3",{attrs:{id:"include"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#include"}},[e._v("#")]),e._v(" Include")]),e._v(" "),t("p",[e._v("Insert the template with a specified name into the page code.")]),e._v(" "),t("h4",{attrs:{id:"syntax-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Include(Name)\n")])])]),t("blockquote",[t("p",[e._v("Include")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Template name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(myclass, Include(mywidget))\n")])])]),t("h3",{attrs:{id:"input"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#input"}},[e._v("#")]),e._v(" Input")]),e._v(" "),t("p",[e._v("Create an input HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name, Class, Placeholder, Type, Value, Disabled)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Input")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Placeholder")])]),e._v(" "),t("p",[e._v("Prompt for the expected value of the input field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("input type.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Element value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Disabled")])]),e._v(" "),t("p",[e._v("Disable the input element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name: name, Type: text, Placeholder: Enter your name)\nInput(Name: num, Type: text).Validate(minLength: 6, maxLength: 20)\n")])])]),t("h3",{attrs:{id:"inputerr"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputerr"}},[e._v("#")]),e._v(" InputErr")]),e._v(" "),t("p",[e._v("Create an inputerr element to validate the error text.")]),e._v(" "),t("h4",{attrs:{id:"syntax-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name,validation errors)]\n")])])]),t("blockquote",[t("p",[e._v("InputErr")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Corresponds to the name of the "),t("a",{attrs:{href:"#input"}},[e._v("Input")]),e._v(" element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("validation errors")])]),e._v(" "),t("p",[e._v("Validation error message for one or more parameters.")])])]),e._v(" "),t("h4",{attrs:{id:"example-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name: name,\nminLength: Value is too short,\nmaxLength: The length of the value must be less than 20 characters)\n")])])]),t("h3",{attrs:{id:"inputmap"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputmap"}},[e._v("#")]),e._v(" InputMap")]),e._v(" "),t("p",[e._v("Create an text input field for address, able to select coordinates on the map.")]),e._v(" "),t("h4",{attrs:{id:"syntax-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputMap(Name, Type, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("InputMap")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.\nThe value is an object in string format. For example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". When the InputMap is created with the predefined Value, the address field can be used to save the address value, so the it is not void.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Type of map spot mapping:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("polygon")]),e._v(" - indicates the area of a multi-spot closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Line")]),e._v(" - means a polyline with multiple points without closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Point")]),e._v(" - indicates a single point coordinate.")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('InputMap(Name: Coords,Type: polygon, MapType: hybrid, Value: `{"zoom":8, "center":{"lat":55.749942860682545,"lng":37.6207172870636}}`)\n')])])]),t("h3",{attrs:{id:"jsontosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jsontosource"}},[e._v("#")]),e._v(" JsonToSource")]),e._v(" "),t("p",[e._v("Create a jsontosource element and fill it with the key-value pairs of a JSON array. The data obtained is put into the Source element, which can be used later in the source input function (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe records in the result data are sorted alphabetically by JSON key.")]),e._v(" "),t("h4",{attrs:{id:"syntax-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("JsonToSource(Source, Data)\n")])])]),t("blockquote",[t("p",[e._v("JsonToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("A JSON object or a variable name containing a JSON object ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"example-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('JsonToSource(src, #myjson#)\nJsonToSource(dat, {"param":"value", "param2": "value 2"})\n')])])]),t("h3",{attrs:{id:"label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#label"}},[e._v("#")]),e._v(" Label")]),e._v(" "),t("p",[e._v("Create a label HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(Body, Class, For)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Label")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("For")])]),e._v(" "),t("p",[e._v("Bind to a form element.")])])]),e._v(" "),t("blockquote",[t("p",[t("code",[e._v("StyleThe")]),e._v(":CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(The first item).\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[e._v("#")]),e._v(" LangRes")]),e._v(" "),t("p",[e._v("Returns a specific language resource. If requested to edit the tree, the langres element is returned, and you may use the short format symbol $langres$.")]),e._v(" "),t("h4",{attrs:{id:"syntax-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(Name)\n")])])]),t("blockquote",[t("p",[e._v("LangRes")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the language resource.")])])]),e._v(" "),t("h4",{attrs:{id:"example-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(name)\nLangRes(myres)\n")])])]),t("h3",{attrs:{id:"linkpage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linkpage"}},[e._v("#")]),e._v(" LinkPage")]),e._v(" "),t("p",[e._v("Create a linkpage element, linking to the page.")]),e._v(" "),t("h4",{attrs:{id:"syntax-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LinkPage(Body, Page, Class, PageParams)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("LinkPage")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Button class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS styles")]),e._v(" "),t("h4",{attrs:{id:"example-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: "v_role_id=#recipient.role_id#")\n')])])]),t("h3",{attrs:{id:"map"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#map"}},[e._v("#")]),e._v(" Map")]),e._v(" "),t("p",[e._v("Create a visual map and display coordinates in any format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Map(Hmap, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("Map")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Hmap")])]),e._v(" "),t("p",[e._v("Height of an HTML element on the page.\nThe default value is 100.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Map value, an object in string format.\nFor example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". If "),t("code",[e._v("center")]),e._v(" is not specified, the map window will automatically adjust according to the specified coordinates.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Map(MapType:hybrid, Hmap:400, Value:{"coords":[{"lat":55.58774531752405,"lng":36.97260184619233},{"lat":55.58396161622043,"lng":36.973803475831005},{"lat":55.585222890513975,"lng":36.979811624024364},{"lat":55.58803635636347,"lng":36.978781655762646}],"area":146846.65783403456,"address":"Unnamed Road, Moscow, Russia, 143041"})\n')])])]),t("h3",{attrs:{id:"menugroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menugroup"}},[e._v("#")]),e._v(" MenuGroup")]),e._v(" "),t("p",[e._v("Create a nested submenu in the menu and return the menugroup element. Before replacing it with the language resource, the name parameter will return the value of Title.")]),e._v(" "),t("h4",{attrs:{id:"syntax-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(Title, Body, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child elements in a submenu.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(My Menu){\n MenuItem(Interface, sys-interface)\n MenuItem(Dahsboard, dashboard_default)\n}\n")])])]),t("h3",{attrs:{id:"menuitem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menuitem"}},[e._v("#")]),e._v(" MenuItem")]),e._v(" "),t("p",[e._v("Create a menu item and return the menuitem element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuItem(Title, Page, Params, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuItem")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('MenuItem(Title:$@1roles$, Page:@1roles_list, Icon:"icon-pie-chart")\n')])])]),t("h3",{attrs:{id:"money"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#money"}},[e._v("#")]),e._v(" Money")]),e._v(" "),t("p",[e._v("Returns the string value of exp / 10 ^ digit.")]),e._v(" "),t("h4",{attrs:{id:"syntax-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("blockquote",[t("p",[e._v("Money")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("A number in string format.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Digit")])]),e._v(" "),t("p",[e._v("The exponent of 10 in the expression "),t("code",[e._v("Exp/10^digit")]),e._v(". The value can be positive or negative, and a positive value determines the number of digits after the decimal point.")])])]),e._v(" "),t("h4",{attrs:{id:"example-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("h3",{attrs:{id:"or"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#or"}},[e._v("#")]),e._v(" Or")]),e._v(" "),t("p",[e._v("It returns the result of an if logical operation. All parameters listed in parentheses are separated by commas. If having one parameter that is value is not an empty string, zero or "),t("code",[e._v("false")]),e._v(", the parameter value is "),t("code",[e._v("true")]),e._v(", otherwise the parameter value is "),t("code",[e._v("false")]),e._v(". If the parameter value is "),t("code",[e._v("true")]),e._v(", the function returns "),t("code",[e._v("1")]),e._v(", otherwise it returns "),t("code",[e._v("0")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Or(parameters)\n")])])]),t("h4",{attrs:{id:"example-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Or(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"p"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#p"}},[e._v("#")]),e._v(" P")]),e._v(" "),t("p",[e._v("Create a p HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(Body, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("P")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(This is the first line.\n This is the second line.)\n")])])]),t("h3",{attrs:{id:"qrcode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#qrcode"}},[e._v("#")]),e._v(" QRcode")]),e._v(" "),t("p",[e._v("Returns the QR code with the specified text and create a qrcode element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(Text)\n")])])]),t("blockquote",[t("p",[e._v("QRcode")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("QR code text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(#name#)\n")])])]),t("h3",{attrs:{id:"radiogroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#radiogroup"}},[e._v("#")]),e._v(" RadioGroup")]),e._v(" "),t("p",[e._v("Create a radiogroup element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-44"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-44"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name, Source, NameColumn, ValueColumn, Value, Class)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("RadioGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the DBFind or Data function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("NameColumn")])]),e._v(" "),t("p",[e._v("Field name of the data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ValueColumn")])]),e._v(" "),t("p",[e._v("Value name of the data source.\nFields created with Custom cannot be used in this parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CCS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name: type_decision, Source: numbers_type_decisions, NameColumn: name, ValueColumn: value)\n")])])]),t("h3",{attrs:{id:"range"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range"}},[e._v("#")]),e._v(" Range")]),e._v(" "),t("p",[e._v("Create a range element, use step size Step from From to To (not including To) to fill integer elements. The data generated will be put into Source and can be used later in the function of the source input (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v("). If an invalid parameter is specified, an empty Source is returned.")]),e._v(" "),t("h4",{attrs:{id:"syntax-45"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-45"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Range(Source,From,To,Step)\n")])])]),t("blockquote",[t("p",[e._v("Range")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("From")])]),e._v(" "),t("p",[e._v("Starting value (i = From).")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("To")])]),e._v(" "),t("p",[e._v("End value (i ")]),e._v(".")]),e._v(" "),t("li",[e._v("All icon-class icons are from SimpleLineIcons: "),t("code",[e._v("icon-")]),e._v(".")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/112.9afb3e2d.js b/assets/js/112.c9503c25.js similarity index 99% rename from assets/js/112.9afb3e2d.js rename to assets/js/112.c9503c25.js index 16bca77..726d679 100644 --- a/assets/js/112.9afb3e2d.js +++ b/assets/js/112.c9503c25.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{493:function(e,t,a){"use strict";a.r(t);var n=a(51),s=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"compiler-and-virtual-machine"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#compiler-and-virtual-machine"}},[e._v("#")]),e._v(" Compiler and Virtual Machine")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#source-code-storage-and-compilation"}},[e._v("Source code storage and compilation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-machine-structures"}},[e._v("Virtual machine structures")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#vm-structure"}},[e._v("VM Structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-structure"}},[e._v("Block structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#objinfo-structure"}},[e._v("ObjInfo structure")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contractinfo-structure"}},[e._v("ContractInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fieldinfo-structure"}},[e._v("FieldInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#funcname-structure"}},[e._v("FuncName Structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#extfuncinfo-structure"}},[e._v("ExtFuncInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#varinfo-structure"}},[e._v("VarInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#objextend-value"}},[e._v("ObjExtend value")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-machine-commands"}},[e._v("Virtual machine commands")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#bytecode-structure"}},[e._v("ByteCode structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#command-identifiers"}},[e._v("Command identifiers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#stack-operation-commands"}},[e._v("Stack operation commands")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#runtime-structure"}},[e._v("Runtime structure")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockstack-structure"}},[e._v("blockStack structure")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#runcode-function"}},[e._v("RunCode function")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("Other functions for operations with VM")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#compiler"}},[e._v("Compiler")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#lexical-analyzer"}},[e._v("Lexical analyzer")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#needle-language"}},[e._v("Needle language")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#lexemes"}},[e._v("Lexemes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#types"}},[e._v("Types")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expressions"}},[e._v("Expressions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#scope"}},[e._v("Scope")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-execution"}},[e._v("Contract execution")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#backus-naur-form-bnf"}},[e._v("Backus–Naur Form (BNF)")])])])])]),e._v(" "),a("p",[e._v("This section involves program compilation and Needle language operations in the Virtual Machine (VM).")]),e._v(" "),a("h2",{attrs:{id:"source-code-storage-and-compilation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#source-code-storage-and-compilation"}},[e._v("#")]),e._v(" Source code storage and compilation")]),e._v(" "),a("p",[e._v("Contracts and functions are written with Golang and stored in the contract tables of ecosystems.")]),e._v(" "),a("p",[e._v("When a contract is executed, its source code will be read from the database and compiled into bytecode.")]),e._v(" "),a("p",[e._v("When a contract is changed, its source code will be updated and saved in the database. Then, the source code is compiled, thereby updating the bytecode in the corresponding virtual machine.")]),e._v(" "),a("p",[e._v("As bytecodes are not physically saved, it will be compiled anew when the program is executed again.")]),e._v(" "),a("p",[e._v("The entire source code described in the contract table of each ecosystem is compiled into a virtual machine in strict order, and the status of the virtual machine is the same on all nodes.")]),e._v(" "),a("p",[e._v("When the contract is called, the virtual machine will not change its status in any way. The execution of any contract or calling of any function occurs on a separate running stack created during each external call.")]),e._v(" "),a("p",[e._v("Each ecosystem can have a so-called virtual ecosystem, which can be used within a node in conjunction with tables outside the blockchain, without direct affection on the blockchain or other virtual ecosystems. In this case, the node hosting such a virtual ecosystem will compile its contract and create its own virtual machine.")]),e._v(" "),a("h2",{attrs:{id:"virtual-machine-structures"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-machine-structures"}},[e._v("#")]),e._v(" Virtual machine structures")]),e._v(" "),a("h3",{attrs:{id:"vm-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vm-structure"}},[e._v("#")]),e._v(" VM Structure")]),e._v(" "),a("p",[e._v("A virtual machine is organized in memory as a structure like below.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type VM struct {\n Block\n ExtCost func(string) int64\n FuncCallsDB map[string]struct{}\n Extern bool\n ShiftContract int64\n logger *log.Entry\n}\n")])])]),a("p",[e._v("A VM structure has the following elements:")]),e._v(" "),a("ul",[a("li",[e._v("Block - contains a "),a("a",{attrs:{href:"#block-structure"}},[e._v("block structure")]),e._v(";")]),e._v(" "),a("li",[e._v("ExtCost - a function returns the cost of executing an external golang function;")]),e._v(" "),a("li",[e._v("FuncCallsDB - a collection of Golang function names. This function returns the execution cost as the first parameter. These functions use EXPLAIN to calculate the cost of database processing;")]),e._v(" "),a("li",[e._v("Extern - a Boolean flag indicating whether a contract is an external contract. It is set to true when a VM is created. Contracts called are not displayed when the code is compiled. In other words, it allows to call the contract code determined in the future;")]),e._v(" "),a("li",[e._v("ShiftContract - ID of the first contract in the VM;")]),e._v(" "),a("li",[e._v("logger - VM error log output.")])]),e._v(" "),a("h3",{attrs:{id:"block-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-structure"}},[e._v("#")]),e._v(" Block structure")]),e._v(" "),a("p",[e._v("A virtual machine is a tree composed of "),a("strong",[e._v("Block type")]),e._v(" objects.")]),e._v(" "),a("p",[e._v("A block is an independent unit that contains some bytecodes. In simple terms, everything you put in the braces ("),a("code",[e._v("{}")]),e._v(") in the language is a block.")]),e._v(" "),a("p",[e._v("For example, the following code would create a block with functions. This block also contains another block with an if statement, which contains a block with a while statement.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("func my() {\n if true {\n while false {\n ...\n }\n }\n}\n")])])]),a("p",[e._v("The block is organized in the memory as a structure like below.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type Block struct {\n Objects map[string]*ObjInfo\n Type int\n Owner *OwnerInfo\n Info interface{}\n Parent *Block\n Vars []reflect.Type\n Code ByteCodes\n Children Blocks\n}\n")])])]),a("p",[e._v("A block structure consists of the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Objects")]),e._v(" - a map of internal objects of the pointer type "),a("a",{attrs:{href:"#objInfo-structure"}},[e._v("ObjInfo")]),e._v(". For example, if there is a variable in the block, you can get information about it by its name;")]),e._v(" "),a("li",[a("strong",[e._v("Type")]),e._v(" - the type of the block. For a function block, its type is "),a("strong",[e._v("ObjFunc")]),e._v("; for a contract block, its type is "),a("strong",[e._v("ObjContract")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - a structure of "),a("strong",[e._v("OwnerInfo")]),e._v(" pointer type. This structure contains information about the owner of the compiled contract, which is specified during contract compilation or obtained from the "),a("strong",[e._v("contracts")]),e._v(" table;")]),e._v(" "),a("li",[a("strong",[e._v("Info")]),e._v(" - it contains information about the object, which depends on the block type;")]),e._v(" "),a("li",[a("strong",[e._v("Parent")]),e._v(" - a pointer to the parent block;")]),e._v(" "),a("li",[a("strong",[e._v("Vars")]),e._v(" - an array containing the types of current block variables;")]),e._v(" "),a("li",[a("strong",[e._v("Code")]),e._v(" - the bytecode of the block itself, which will be executed when the control rights are passed to the block, for example, function calls or loop bodies;")]),e._v(" "),a("li",[a("strong",[e._v("Children")]),e._v(" - an array containing sub-blocks, such as function nesting, loops, conditional operators.")])]),e._v(" "),a("h3",{attrs:{id:"objinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#objinfo-structure"}},[e._v("#")]),e._v(" ObjInfo structure")]),e._v(" "),a("p",[e._v("The ObjInfo structure contains information about internal objects.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ObjInfo struct {\n Type int\n Value interface{}\n}\n")])])]),a("p",[e._v("The ObjInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Type")]),e._v(" is the object type, which has any of the following values:\n"),a("ul",[a("li",[a("strong",[e._v("ObjContract")]),e._v(" – "),a("a",{attrs:{href:"#contractInfo-structure"}},[e._v("contract")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("ObjFunc")]),e._v(" - function;")]),e._v(" "),a("li",[a("strong",[e._v("ObjExtFunc")]),e._v(" - external golang function;")]),e._v(" "),a("li",[a("strong",[e._v("ObjVar")]),e._v(" - variable;")]),e._v(" "),a("li",[a("strong",[e._v("ObjExtend")]),e._v(" - $name variable.")])])]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" – it contains the structure of each type.")])]),e._v(" "),a("h4",{attrs:{id:"contractinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contractinfo-structure"}},[e._v("#")]),e._v(" ContractInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjContract")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a "),a("strong",[e._v("ContractInfo")]),e._v(" structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ContractInfo struct {\n ID uint32\n Name string\n Owner *OwnerInfo\n Used map[string]bool\n Tx *[]*FieldInfo\n}\n")])])]),a("p",[e._v("The ContractInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ID")]),e._v(" - contract ID, displayed in the blockchain when calling the contract;")]),e._v(" "),a("li",[a("strong",[e._v("Name")]),e._v(" - contract name;")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - other information about the contract;")]),e._v(" "),a("li",[a("strong",[e._v("Used")]),e._v(" - map of contracts names that has been called;")]),e._v(" "),a("li",[a("strong",[e._v("Tx")]),e._v(" - a data array described in the "),a("RouterLink",{attrs:{to:"/topics/script.html#data-section"}},[e._v("data section")]),e._v(" of the contract.")],1)]),e._v(" "),a("h4",{attrs:{id:"fieldinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fieldinfo-structure"}},[e._v("#")]),e._v(" FieldInfo structure")]),e._v(" "),a("p",[e._v("The FieldInfo structure is used in the "),a("strong",[e._v("ContractInfo")]),e._v(" structure and describes elements in "),a("RouterLink",{attrs:{to:"/topics/script.html#data-section"}},[e._v("data section")]),e._v(" of a contract.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FieldInfo struct {\n Name string\n Type reflect.Type\n Original uint32\n Tags string\n}\n")])])]),a("p",[e._v("The FieldInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Name")]),e._v(" - field name;")]),e._v(" "),a("li",[a("strong",[e._v("Type")]),e._v(" - field type;")]),e._v(" "),a("li",[a("strong",[e._v("Original")]),e._v(" - optional field;")]),e._v(" "),a("li",[a("strong",[e._v("Tags")]),e._v(" - additional labels for this field.")])]),e._v(" "),a("h4",{attrs:{id:"funcinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#funcinfo-structure"}},[e._v("#")]),e._v(" FuncInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the ObjFunc type, and the Value field contains a FuncInfo structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FuncInfo struct {\n Params []reflect.Type\n Results []reflect.Type\n Names *map[string]FuncName\n Variadic bool\n ID uint32\n}\n")])])]),a("p",[e._v("The FuncInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Params")]),e._v(" - an array of parameter types;")]),e._v(" "),a("li",[a("strong",[e._v("Results")]),e._v(" - an array of returned types;")]),e._v(" "),a("li",[a("strong",[e._v("Names")]),e._v(" - map of data for tail functions, for example, "),a("code",[e._v("DBFind().Columns ()")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Variadic")]),e._v(" - true if the function can have a variable number of parameters;")]),e._v(" "),a("li",[a("strong",[e._v("ID")]),e._v(" - function ID.")])]),e._v(" "),a("h4",{attrs:{id:"funcname-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#funcname-structure"}},[e._v("#")]),e._v(" FuncName Structure")]),e._v(" "),a("p",[e._v("The FuncName structure is used for FuncInfo and describes the data of a tail function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FuncName struct {\n Params []reflect.Type\n Offset []int\n Variadic bool\n}\n")])])]),a("p",[e._v("The FuncName structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Params")]),e._v(" - an array of parameter types;")]),e._v(" "),a("li",[a("strong",[e._v("Offset")]),e._v(" - the array of offsets for these variables. In fact, the values of all parameters in a function can be initialized with the dot .;")]),e._v(" "),a("li",[a("strong",[e._v("Variadic")]),e._v(" - true if the tail function can have a variable number of parameters.")])]),e._v(" "),a("h4",{attrs:{id:"extfuncinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#extfuncinfo-structure"}},[e._v("#")]),e._v(" ExtFuncInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the ObjExtFunc type, and the Value field contains a ExtFuncInfo structure. It is used to describe golang functions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ExtFuncInfo struct {\n Name string\n Params []reflect.Type\n Results []reflect.Type\n Auto []string\n Variadic bool\n Func interface{}\n}\n")])])]),a("p",[e._v("The ExtFuncInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Name")]),e._v(", "),a("strong",[e._v("Params")]),e._v(", "),a("strong",[e._v("Results")]),e._v(" parameters have the same structure as "),a("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Auto")]),e._v(" - an array of variables. If any, passes to the function as an additional parameter. For example, a variable of type SmartContract sc;")]),e._v(" "),a("li",[a("strong",[e._v("Func")]),e._v(" - golang functions.")])]),e._v(" "),a("h4",{attrs:{id:"varinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#varinfo-structure"}},[e._v("#")]),e._v(" VarInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjVar")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a "),a("strong",[e._v("VarInfo")]),e._v(" structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type VarInfo struct {\n Obj *ObjInfo\n Owner *Block\n}\n")])])]),a("p",[e._v("The VarInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Obj")]),e._v(" - information about the type and value of the variable;")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - Pointer to the owner block.")])]),e._v(" "),a("h4",{attrs:{id:"objextend-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#objextend-value"}},[e._v("#")]),e._v(" ObjExtend value")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjExtend")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a string containing the name of the variable or function.")]),e._v(" "),a("h2",{attrs:{id:"virtual-machine-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-machine-commands"}},[e._v("#")]),e._v(" Virtual machine commands")]),e._v(" "),a("h3",{attrs:{id:"bytecode-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bytecode-structure"}},[e._v("#")]),e._v(" ByteCode structure")]),e._v(" "),a("p",[e._v("A bytecode is a sequence of "),a("strong",[e._v("ByteCode")]),e._v(" type structures.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ByteCode struct {\n Cmd uint16\n Value interface{}\n}\n")])])]),a("p",[e._v("This structure has the following fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Cmd")]),e._v(" - the identifier of the storage commands;")]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" - contains the operand (value).")])]),e._v(" "),a("p",[e._v("In general, commands perform an operation on the top element of the stack and writes the result value into it if necessary.")]),e._v(" "),a("h3",{attrs:{id:"command-identifiers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#command-identifiers"}},[e._v("#")]),e._v(" Command identifiers")]),e._v(" "),a("p",[e._v("Identifiers of the virtual machine commands are described in the vm/cmds_list.go file.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("cmdPush")]),e._v(" – put a value from the Value field to the stack. For example, put numbers and lines to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdVar")]),e._v(" - put the value of a variable to the stack. Value contains a pointer to the VarInfo structure and information about the variable;")]),e._v(" "),a("li",[a("strong",[e._v("cmdExtend")]),e._v(" – put the value of an external variable to the stack. Value contains a string with the variable name (starting with $);")]),e._v(" "),a("li",[a("strong",[e._v("cmdCallExtend")]),e._v(" – call an external function (starting with $). The parameters of the function are obtained from the stack, and the results are placed to the stack. Value contains a function name (starting with $);")]),e._v(" "),a("li",[a("strong",[e._v("cmdPushStr")]),e._v(" – put the string in Value to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdCall")]),e._v(" - calls the virtual machine function. Value contains a "),a("strong",[e._v("ObjInfo")]),e._v(" structure. This command is applicable to the "),a("strong",[e._v("ObjExtFunc")]),e._v(" golang function and "),a("strong",[e._v("ObjFunc")]),e._v(" Needle function. If a function is called, its parameters will be obtained from the stack and the result values will be placed to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdCallVari")]),e._v(" - similar to the "),a("strong",[e._v("cmdCall")]),e._v(" command, it calls the virtual machine function. This command is used to call a function with a variable number of parameters;")]),e._v(" "),a("li",[a("strong",[e._v("cmdReturn")]),e._v(" - used to exit the function. The return values will be put to the stack, and the Value field is not used;")]),e._v(" "),a("li",[a("strong",[e._v("cmdIf")]),e._v(" – transfer control to the bytecode in the "),a("strong",[e._v("block")]),e._v(" structure, which is passed in the Value field. The control will be transferred to the stack only when the top element of the stack is called by the "),a("em",[e._v("valueToBool")]),e._v(" function and returned "),a("code",[e._v("true")]),e._v(". Otherwise, the control will be transferred to the next command;")]),e._v(" "),a("li",[a("strong",[e._v("cmdElse")]),e._v(" - this command works in the same way as the "),a("strong",[e._v("cmdIf")]),e._v(", but only when the top element of the stack is called by the valueToBool function and returned "),a("code",[e._v("false")]),e._v(", the control will be transferred to the specified block;")]),e._v(" "),a("li",[a("strong",[e._v("cmdAssignVar")]),e._v(" – get a list of variables of type "),a("strong",[e._v("VarInfo")]),e._v(" from Value. These variables use the "),a("strong",[e._v("cmdAssign")]),e._v(" command to get the value;")]),e._v(" "),a("li",[a("strong",[e._v("cmdAssign")]),e._v(" – assign the value in the stack to the variable obtained by the "),a("strong",[e._v("cmdAssignVar")]),e._v(" command;")]),e._v(" "),a("li",[a("strong",[e._v("cmdLabel")]),e._v(" - defines a label when control is returned during the while loop;")]),e._v(" "),a("li",[a("strong",[e._v("cmdContinue")]),e._v(" - this command transfers control to the "),a("strong",[e._v("cmdLabel")]),e._v(" label. When executing a new iteration of the loop, Value is not used;")]),e._v(" "),a("li",[a("strong",[e._v("cmdWhile")]),e._v(" – use valueToBool to check the top element of the stack. If this value is "),a("code",[e._v("true")]),e._v(", the "),a("strong",[e._v("block")]),e._v(" structure will be called from the value field;")]),e._v(" "),a("li",[a("strong",[e._v("cmdBreak")]),e._v(" - exits the loop;")]),e._v(" "),a("li",[a("strong",[e._v("cmdIndex")]),e._v(" – put the value in map or array into the stack by index, without using Value. For example, "),a("code",[e._v("(map | array) (index value) => (map | array [index value])")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSetIndex")]),e._v(" – assigns the value of the top element of the stack to elements of map or array, without using Value. For example, "),a("code",[e._v("(map | array) (index value) (value) => (map | array)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdFuncName")]),e._v(" - adds parameters that are passed using sequential descriptions divided by dot . For example, "),a("code",[e._v("func name => Func (...) .Name (...)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdUnwrapArr")]),e._v(" - defines a Boolean flag if the top element of the stack is an array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdMapInit")]),e._v(" – initializes the value of map;")]),e._v(" "),a("li",[a("strong",[e._v("cmdArrayInit")]),e._v(" – initializes the value of array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdError")]),e._v(" - this command is created when a contract or function terminates with a specified "),a("code",[e._v("error, warning, info")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"stack-operation-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stack-operation-commands"}},[e._v("#")]),e._v(" Stack operation commands")]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("In the current version, automatic type conversion is not fully applicable for these commands. For example,")])]),e._v(" "),a("blockquote",[a("p",[a("code",[e._v("string + float | int | decimal => float | int | decimal, float + int | str => float, but int + string => runtime error")]),e._v(".")])]),e._v(" "),a("p",[e._v("The following are commands for direct stack processing. The Value field is not used in these commands.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("cmdNot")]),e._v(" - logical negation. "),a("code",[e._v("(val) => (!ValueToBool(val))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSign")]),e._v(" - change of sign. "),a("code",[e._v("(val) => (-val)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAdd")]),e._v(" - addition. "),a("code",[e._v("(val1)(val2) => (val1 + val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSub")]),e._v(" - subtraction. "),a("code",[e._v("(val1)(val2) => (val1-val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdMul")]),e._v(" - multiplication. "),a("code",[e._v("(val1)(val2) => (val1 * val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdDiv")]),e._v(" - division. "),a("code",[e._v("(val1)(val2) => (val1 / val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAnd")]),e._v(" - logical AND. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) && valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdOr")]),e._v(" - logical OR. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) || valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdEqual")]),e._v(" - equality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 == val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotEq")]),e._v(" - inequality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 != val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdLess")]),e._v(" - less-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 (val1 >= val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdGreat")]),e._v(" - greater-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1> val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotGreat")]),e._v(" - less-than-or-equal comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 <= val2)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"runtime-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runtime-structure"}},[e._v("#")]),e._v(" Runtime structure")]),e._v(" "),a("p",[e._v("The execution of bytecodes will not affect the virtual machine. For example, it allows various functions and contracts to run simultaneously in a single virtual machine. The Runtime structure is used to run functions and contracts, as well as any expressions and bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type RunTime struct {\n stack []interface{}\n blocks []*blockStack\n vars []interface{}\n extend *map[string]interface{}\n vm *VM\n cost int64\n err error\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("stack")]),e._v(" - the stack to execute the bytecode;")]),e._v(" "),a("li",[a("strong",[e._v("blocks")]),e._v(" - block calls stack;")]),e._v(" "),a("li",[a("strong",[e._v("vars")]),e._v(" - stack of variables. Its variable will be added to the stack of variables when the bytecode is called in the block. After exiting the block, the size of the stack of variables will return to the previous value;")]),e._v(" "),a("li",[a("strong",[e._v("extend")]),e._v(" - a pointer to map with values of external variables ("),a("code",[e._v("$name")]),e._v(");")]),e._v(" "),a("li",[a("strong",[e._v("vm")]),e._v(" - a virtual machine pointer;")]),e._v(" "),a("li",[a("strong",[e._v("cost")]),e._v(" - fuel unit of the resulting cost of execution;")]),e._v(" "),a("li",[a("strong",[e._v("err")]),e._v(" - error occurred during execution.")])]),e._v(" "),a("h4",{attrs:{id:"blockstack-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockstack-structure"}},[e._v("#")]),e._v(" blockStack structure")]),e._v(" "),a("p",[e._v("The blockStack structure is used in the Runtime structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type blockStack struct {\n Block *Block\n Offset int\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Block")]),e._v(" - a pointer to the block being executed;")]),e._v(" "),a("li",[a("strong",[e._v("Offset")]),e._v(" – the offset of the last command executed in the bytecode of the specified block.")])]),e._v(" "),a("h3",{attrs:{id:"runcode-function"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runcode-function"}},[e._v("#")]),e._v(" RunCode function")]),e._v(" "),a("p",[e._v("Bytecodes are executed in the "),a("strong",[e._v("RunCode")]),e._v(" function. It contains a loop that performs the corresponding operation for each bytecode command. Before processing a bytecode, the data required must be initialized.")]),e._v(" "),a("p",[e._v("New blocks are added to other blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = append(rt.blocks, &blockStack{block, len(rt.vars)})\n")])])]),a("p",[e._v("Next, get the information of relevant parameters of the tail function. These parameters are contained in the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var namemap map[string][]interface{}\nif block.Type == ObjFunc && block.Info.(*FuncInfo).Names != nil {\n if rt.stack[len(rt.stack)-1] != nil {\n namemap = rt.stack[len(rt.stack)-1].(map[string][]interface{})\n }\n rt.stack = rt.stack[:len(rt.stack)-1]\n}\n")])])]),a("p",[e._v("Then, all variables defined in the current block must be initialized with their initial values.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("start := len(rt.stack)\nvaroff := len(rt.vars)\nfor vkey, vpar := range block.Vars {\n rt.cost--\n var value interface{}\n")])])]),a("p",[e._v("Since variables in the function are also variables, we need to retrieve them from the last element of the stack in the order described by the function itself.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if block.Type == ObjFunc && vkey = len(params.Params)-1 {\n")])])]),a("p",[e._v("If variable parameters passed belongs to a variable number of parameters, then these parameters will be combined into an array of variables.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" off := varoff + params.Offset[len(params.Params)-1]\n rt.vars[off] = append(rt.vars[off].([]interface{}), value)\n } else {\n rt.vars[varoff+params.Offset[i]] = value\n }\n }\n }\n}\n")])])]),a("p",[e._v("After that, all we have to do is delete values passed from the top of the stack as function parameters, thereby moving the stack. We have copied their values into a variable array.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if block.Type == ObjFunc {\n start -= len(block.Info.(*FuncInfo).Params)\n}\n")])])]),a("p",[e._v("When a bytecode command loop finished, we must clear the stack correctly.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("last := rt.blocks[len(rt.blocks)-1]\n")])])]),a("p",[e._v("Delete the current block from the stack of blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = rt.blocks[:len(rt.blocks)-1]\nif status == statusReturn {\n")])])]),a("p",[e._v("If successfully exited from a function already executed, we will add the return value to the end of the previous stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if last.Block.Type == ObjFunc {\n for count := len(last.Block.Info.(*FuncInfo).Results); count > 0; count-- {\n rt.stack[start] = rt.stack[len(rt.stack)-count]\n start++\n }\n status = statusNormal\n } else {\n")])])]),a("p",[e._v("As you can see, if we do not execute the function, then we will not restore the stack status and exit the function as is. The reason is that loops and conditional structures that have been executed in the function are also bytecode blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" return\n\n }\n}\n\nrt.stack = rt.stack[:start]\n")])])]),a("h3",{attrs:{id:"other-functions-for-operations-with-vm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("#")]),e._v(" Other functions for operations with VM")]),e._v(" "),a("p",[e._v("Your may create a virtual machine with the "),a("strong",[e._v("NewVM")]),e._v(" function. Each virtual machine will be added with four functions, such as "),a("strong",[e._v("ExecContract")]),e._v(", "),a("strong",[e._v("MemoryUsage")]),e._v(", "),a("strong",[e._v("CallContract")]),e._v(", and "),a("strong",[e._v("Settings")]),e._v(", through the "),a("strong",[e._v("Extend")]),e._v(" function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for key, item := range ext.Objects {\n fobj := reflect.ValueOf(item).Type()\n")])])]),a("p",[e._v("We traverse all the objects passed and only look at the functions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" switch fobj.Kind() {\n case reflect.Func:\n")])])]),a("p",[e._v("We fill the "),a("strong",[e._v("ExtFuncInfo")]),e._v(" structure according to the information received about the function, and add its structure to the top level map "),a("strong",[e._v("Objects")]),e._v(" by name.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" data := ExtFuncInfo{key, make([]reflect.Type, fobj.NumIn()), make([]reflect.Type, fobj.NumOut()),\n make([]string, fobj.NumIn()), fobj.IsVariadic(), item}\n for i := 0; i 0 && ((*lexems)[i-1].Type == isComma || (*lexems)[i-1].Type == lexOper) {\n continue main\n }\n for k := len(buffer) - 1; k >= 0; k-- {\n if buffer[k].Cmd == cmdSys {\n continue main\n }\n}\nbreak main\n\n")])])]),a("p",[e._v("In general, the algorithm itself corresponds to an algorithm for converting to inverse Polish notation. With the consideration of the calling of necessary contracts, functions, and indexes, as well as other things not encountered during parsing and options for parsing lexIdent type tokens, then, variables, functions or contracts with this name will be checked. If nothing is found and this is not a function or contract call, then it will indicate an error.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("objInfo, tobj := vm.findObj(lexem.Value.(string), block)\nif objInfo == nil && (!vm.Extern || i> *ind || i >= len(*lexems)-2 || (*lexems)[i+1].Type != isLPar) {\n return fmt.Errorf(`unknown identifier %s`, lexem.Value.(string))\n}\n")])])]),a("p",[e._v("We may encounter such a situation, and the contract call will be described later. In this example, if no functions or variables with the same name are found, then we think it is necessary to call a contract. In this compiled language, there is no difference between contracts and function calls. But we need to call the contract through the "),a("strong",[e._v("ExecContract")]),e._v(" function used in the bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if objInfo.Type == ObjContract {\n if objInfo.Value != nil {\n objContract = objInfo.Value.(*Block)\n }\n objInfo, tobj = vm.findObj(`ExecContract`, block)\n isContract = true\n}\n")])])]),a("p",[e._v("We record the number of variables so far in "),a("code",[e._v("count")]),e._v(", which will also be written to the stack along with the number of function parameters. In each subsequent detection of parameters, we only need to increase this number by one unit at the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("count := 0\nif (*lexems)[i+2].Type != isRPar {\n count++\n}\n")])])]),a("p",[e._v("We have a list Used of called parameters for contracts, then we need to mark the case of the contract is called. If the contract is called without parameters, we must add two empty parameters to call "),a("strong",[e._v("ExecContract")]),e._v(" to get at least two parameters.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('if isContract {\n name := StateName((*block)[0].Info.(uint32), lexem.Value.(string))\n for j := len(*block) - 1; j >= 0; j-- {\n topblock := (*block)[j]\n if topblock.Type == ObjContract {\n if topblock.Info.(*ContractInfo).Used == nil {\n topblock.Info.(*ContractInfo).Used = make(map[string]bool)\n }\n topblock.Info.(*ContractInfo).Used[name] = true\n }\n }\n bytecode = append(bytecode, &ByteCode{cmdPush, name})\n if count == 0 {\n count = 2\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n }\n count++\n}\n')])])]),a("p",[e._v("If we see that there is a square bracket next, then we add the "),a("strong",[e._v("cmdIndex")]),e._v(" command to get the value by the index.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if (*lexems)[i+1].Type == isLBrack {\n if objInfo == nil || objInfo.Type != ObjVar {\n return fmt.Errorf(`unknown variable %s`, lexem.Value.(string))\n }\n buffer = append(buffer, &ByteCode{cmdIndex, 0})\n}\n")])])]),a("p",[e._v("The "),a("strong",[e._v("CompileBlock")]),e._v(" function can generate object trees and expression-independent bytecodes. The compilation process is based on a finite state machine, just like a lexical analyzer, but with the following differences. First, we do not use symbols but tokens; second, we will immediately describe the "),a("em",[e._v("states")]),e._v(" variables in all states and transitions. It represents an array of objects indexed by token type. Each token has a structure of "),a("em",[e._v("compileState")]),e._v(", and a new state is specified in "),a("em",[e._v("NewState")]),e._v(". If it is clear what structure we have resolved, we can specify the function of the handler in the "),a("em",[e._v("Func")]),e._v(" field.")]),e._v(" "),a("p",[e._v("Let us review the main state as an example.")]),e._v(" "),a("p",[e._v("If we encounter a newline or comment, then we will remain in the same state. If we encounter the "),a("strong",[e._v("contract")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateContract")]),e._v(" and start parsing the structure. If we encounter the "),a("strong",[e._v("func")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateFunc")]),e._v(". If other tokens are received, the function generating error will be called.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateRoot\n lexNewLine: {stateRoot, 0},\n lexKeyword | (keyContract << 8): {stateContract | statePush, 0},\n lexKeyword | (keyFunc << 8): {stateFunc | statePush, 0},\n lexComment: {stateRoot, 0},\n 0: {errUnknownCmd, cfError},\n},\n")])])]),a("p",[e._v("Suppose we encountered the "),a("strong",[e._v("func")]),e._v(" keyword and we have changed the state to "),a("em",[e._v("stateFunc")]),e._v(". Since the function name must follow the "),a("strong",[e._v("func")]),e._v(" keyword, we will keep the same state when changing the function name. For all other tokens, we will generate corresponding errors. If we get the function name in the token identifier, then we go to the "),a("em",[e._v("stateFParams")]),e._v(" state, where we can get the parameters of the function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateFunc\n lexNewLine: {stateFunc, 0},\n lexIdent: {stateFParams, cfNameBlock},\n 0: {errMustName, cfError},\n},\n")])])]),a("p",[e._v("At the same time as the above operations, we will call the "),a("strong",[e._v("fNameBlock")]),e._v(" function. It should be noted that the Block structure is created with the statePush mark, where we get it from the buffer and fill it with the data we need. The "),a("strong",[e._v("fNameBlock")]),e._v(" function is suitable for contracts and functions (including those nested in them). It fills the "),a("em",[e._v("Info")]),e._v(" field with the corresponding structure and writes itself into the "),a("em",[e._v("Objects")]),e._v(" of the parent block. In this way, we can call the function or contract with the specified name. Similarly, we create corresponding functions for all states and variables. These functions are usually very small and perform some duties when constructing the virtual machine tree.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("func fNameBlock(buf *[]*Block, state int, lexem *Lexem) error {\n var itype int\n prev := (*buf)[len(*buf)-2]\n fblock := (*buf)[len(*buf)-1]\n name := lexem.Value.(string)\n switch state {\n case stateBlock:\n itype = ObjContract\n name = StateName((*buf)[0].Info.(uint32), name)\n fblock.Info = &ContractInfo{ID: uint32(len(prev.Children) - 1), Name: name,\n Owner: (*buf)[0].Owner}\n default:\n itype = ObjFunc\n fblock.Info = &FuncInfo{}\n }\n fblock.Type = itype\n prev.Objects[name] = &ObjInfo{Type: itype, Value: fblock}\n return nil\n}\n")])])]),a("p",[e._v("For the "),a("strong",[e._v("CompileBlock")]),e._v(" function, it just traverses all the tokens and switches states according to the tokens described in states. Almost all additional tokens correspond to additional program codes.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("statePush")]),e._v(" – adds the "),a("strong",[e._v("Block")]),e._v(" object to the object tree;")]),e._v(" "),a("li",[a("strong",[e._v("statePop")]),e._v(" - used when the block ends with a closing brace;")]),e._v(" "),a("li",[a("strong",[e._v("stateStay")]),e._v(" - you need to keep the current mark when changing to a new state;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBlock")]),e._v(" - transition to the "),a("strong",[e._v("stateBlock")]),e._v(" state for processing "),a("em",[e._v("while")]),e._v(" and "),a("em",[e._v("if")]),e._v(". After processing expressions, you need to process blocks within the braces;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBody")]),e._v(" - transition to the "),a("strong",[e._v("stateBody")]),e._v(" state;")]),e._v(" "),a("li",[a("strong",[e._v("stateFork")]),e._v(" - save the marked position. When the expression starts with an identifier or a name with "),a("code",[e._v("$")]),e._v(", we can make function calls or assignments;")]),e._v(" "),a("li",[a("strong",[e._v("stateToFork")]),e._v(" – used to get the token stored in "),a("strong",[e._v("stateFork")]),e._v(", which will be passed to the process function;")]),e._v(" "),a("li",[a("strong",[e._v("stateLabel")]),e._v(" – used to insert "),a("strong",[e._v("cmdLabel")]),e._v(" commands. "),a("em",[e._v("while")]),e._v(" structure requires this flag;")]),e._v(" "),a("li",[a("strong",[e._v("stateMustEval")]),e._v(" – check the availability of conditional expressions at the beginning of "),a("em",[e._v("if")]),e._v(" and "),a("em",[e._v("while")]),e._v(" structures.")])]),e._v(" "),a("p",[e._v("In addition to the "),a("strong",[e._v("CompileBlock")]),e._v(" function, the "),a("strong",[e._v("FlushBlock")]),e._v(" function should also be mentioned. But the problem is that the block tree is constructed independently of existing virtual machines. More precisely, we obtain information about functions and contracts that exist in a virtual machine, but we collect the compiled blocks into a separate tree. Otherwise, if an error occurs during compilation, we must roll back the virtual machine to the previous state. Therefore, we go to the compilation tree separately, but after the compilation is successful, the "),a("strong",[e._v("FlushContract")]),e._v(" function must be called. This function adds the completed block tree to the current virtual machine. The compilation phase is now complete.")]),e._v(" "),a("h2",{attrs:{id:"lexical-analyzer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexical-analyzer"}},[e._v("#")]),e._v(" Lexical analyzer")]),e._v(" "),a("p",[e._v("The lexical analyzer processes incoming strings and forms a sequence of tokens of the following types :")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - system token, for example: "),a("code",[e._v("{}, [], (), ,, .")]),e._v(" etc;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - operation token, for example: "),a("code",[e._v("+, -, /, \\, *")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - number;")]),e._v(" "),a("li",[a("strong",[e._v("lexident")]),e._v(" - identifier;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewline")]),e._v(" - newline character;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comment;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - keyword;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" - type;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" - reference to external variables or functions, for example: "),a("code",[e._v("$myname")]),e._v(".")])]),e._v(" "),a("p",[e._v("In the current version, a conversion table (finite state machine) is initially constructed with the help of the "),a("a",{attrs:{href:"#lextablelextablego"}},[e._v("script/lextable/lextable.go")]),e._v(" file to parse the tokens, which is written to the lex_table.go file. In general, you can get rid of the conversion table initially generated by the file and create a conversion table in the memory ("),a("code",[e._v("init()")]),e._v(") immediately upon startup. The lexical analysis itself occurs in the lexParser function in the "),a("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lextable-lextable-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lextable-lextable-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),a("p",[e._v("Here we define the alphabet to operate and describe how the finite state machine changes from one state to another based on the next received symbol.")]),e._v(" "),a("p",[a("em",[e._v("states")]),e._v(" is a JSON object containing a list of states.")]),e._v(" "),a("p",[e._v("Except for specific symbols, "),a("code",[e._v("d")]),e._v(" stands for all symbols not specified in the state.\n"),a("code",[e._v("n")]),e._v(" stands for 0x0a, "),a("code",[e._v("s")]),e._v(" stands for space, "),a("code",[e._v("q")]),e._v(" stands for backquote, "),a("code",[e._v("Q")]),e._v(" stands for double quote, "),a("code",[e._v("r")]),e._v(" stands for character >= 128, "),a("code",[e._v("a")]),e._v(" stands for AZ and az, and "),a("code",[e._v("1")]),e._v(" stands for 1- 9.")]),e._v(" "),a("p",[e._v("The name of these states are keys, and the possible values are listed in the value object. Then, there is a new state to make transitions for each group. Then there is the name of the token. If we need to return to the initial state, the third parameter is the service token, which indicates how to handle the current symbol.")]),e._v(" "),a("p",[e._v("For example, we have the main state and the incoming characters "),a("code",[e._v("/")]),e._v(", "),a("code",[e._v('"/": ["solidus", "", "push next"]')]),e._v(",")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("push")]),e._v(" - gives the command to remember that it is in a separate stack ;")]),e._v(" "),a("li",[a("strong",[e._v("next")]),e._v(" - goes to the next character, and at the same time we change the status to "),a("strong",[e._v("solidus")]),e._v(". After that, gets the next character and check the status of "),a("strong",[e._v("solidus")]),e._v(".")])]),e._v(" "),a("p",[e._v("If the next character has "),a("code",[e._v("/")]),e._v(" or "),a("code",[e._v("/*")]),e._v(", then we go to the comment "),a("strong",[e._v("comment")]),e._v(" state because they start with "),a("code",[e._v("//")]),e._v(" or "),a("code",[e._v("/*")]),e._v(". Obviously, each comment has a different state afterwards, because they end with a different symbol.")]),e._v(" "),a("p",[e._v("If the next character is not "),a("code",[e._v("/")]),e._v(" and "),a("code",[e._v("*")]),e._v(", then we record everything in the stack as "),a("strong",[e._v("lexOper")]),e._v(" type tags, clear the stack and return to the main state.")]),e._v(" "),a("p",[e._v("The following module converts the state tree into a numeric array and writes it into the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("p",[e._v("In the first loop:")]),e._v(" "),a("p",[e._v("We form an alphabet of valid symbols.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for ind, ch := range alphabet {\n i := byte(ind)\n")])])]),a("p",[e._v("In addition, in "),a("strong",[e._v("state2int")]),e._v(", we provide each state with its own sequence identifier.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" state2int := map[string]uint{`main`: 0}\n if err := json.Unmarshal([]byte(states), &data); err == nil {\n for key := range data {\n if key != `main` {\n state2int[key] = uint(len(state2int))\n")])])]),a("p",[e._v("When we traverse all states and each set in a state and each symbol in a set, we write a three-byte number [new state identifier (0 = main)] + [token type ( 0-no token)] + [token].\nThe bidimensionality of the "),a("em",[e._v("table")]),e._v(" array is that it is divided into states and 34 input symbols from the "),a("em",[e._v("alphabet")]),e._v(" array, which are arranged in the same order.\nWe are in the "),a("em",[e._v("main")]),e._v(" state on the zero row of the "),a("em",[e._v("table")]),e._v(". Take the first character, find its index in the "),a("em",[e._v("alphabet")]),e._v(" array, and get the value from the column with the given index. Starting from the value received, we receive the token in the low byte. If the parsing is complete, the second byte indicates the type of token received. In the third byte, we receive the index of the next new state.\nAll of these are described in more detail in the "),a("strong",[e._v("lexParser")]),e._v(" function in "),a("em",[e._v("lex.go")]),e._v(".\nIf you want to add some new characters, you need to add them to the "),a("em",[e._v("alphabet")]),e._v(" array and increase the quantity of the "),a("em",[e._v("AlphaSize")]),e._v(" constant. If you want to add a new symbol combination, it should be described in the status, similar to the existing options. After the above operation, run the "),a("em",[e._v("lextable.go")]),e._v(" file to update the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lex-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lex-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lex-go"}},[e._v("lex.go")])]),e._v(" "),a("p",[e._v("The "),a("strong",[e._v("lexParser")]),e._v(" function directly generates lexical analysis and returns an array of received tags based on incoming strings. Let us analyze the structure of tokens.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type Lexem struct {\n Type uint32 // Type of the lexem\n Value interface{} // Value of lexem\n Line uint32 // Line of the lexem\n Column uint32 // Position inside the line\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Type")]),e._v(" - token type. It has one of the following values: "),a("code",[e._v("lexSys, lexOper, lexNumber, lexIdent, lexString, lexComment, lexKeyword, lexType, lexExtend")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" – token value. The type of value depends on the token type, Let us analyze it in more detail:\n"),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - includes brackets, commas, etc. In this case, "),a("code",[e._v("Type = ch << 8 | lexSys")]),e._v(", please refer to the "),a("code",[e._v("isLPar ... isRBrack")]),e._v(" constant, and its value is uint32 bits;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - the value represents an equivalent character sequence in the form of uint32. See the "),a("code",[e._v("isNot ... isOr")]),e._v(" constants;")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - numbers are stored as int64 or float64. If the number has a decimal point, it is float64;")]),e._v(" "),a("li",[a("strong",[e._v("lexIdent")]),e._v(" - identifiers are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewLine")]),e._v(" - newline character. Also used to calculate the row and token position;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - lines are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comments are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - for keywords, only the corresponding indexes are stored, see the "),a("code",[e._v("keyContract ... keyTail")]),e._v(" constant. In this case "),a("code",[e._v("Type = KeyID << 8 | lexKeyword")]),e._v(". In addition, it should be noted that the "),a("code",[e._v("true, false, nil")]),e._v(" keywords will be immediately converted to lexNumber type tokens, and the corresponding "),a("code",[e._v("bool")]),e._v(" and "),a("code",[e._v("intreface {}")]),e._v(" types will be used;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" – this value contains the corresponding "),a("code",[e._v("reflect.Type")]),e._v(" type value;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" – identifiers beginning with a "),a("code",[e._v("$")]),e._v(". These variables and functions are passed from the outside and are therefore assigned to special types of tokens. This value contains the name as a string without a $ at the beginning.")])])]),e._v(" "),a("li",[a("strong",[e._v("Line")]),e._v(" - the line where the token is found;")]),e._v(" "),a("li",[a("strong",[e._v("Column")]),e._v(" - in-line position of the token.")])]),e._v(" "),a("p",[e._v("Let us analyze the "),a("strong",[e._v("lexParser")]),e._v(" function in detail. The "),a("strong",[e._v("todo")]),e._v(" function looks up the symbol index in the alphabet based on the current state and the incoming symbol, and obtains a new state, token identifier (if any), and other tokens from the conversion table. The parsing itself involves calling the "),a("strong",[e._v("todo")]),e._v(" function in turn for each next character and switching to a new state. Once the tag is received, we create the corresponding token in the output criteria and continue the parsing process. It should be noted that during the parsing process, we do not accumulate the token symbols into a separate stack or array, because we only save the offset of the start of the token. After getting the token, we move the offset of the next token to the current parsing position.")]),e._v(" "),a("p",[e._v("All that remains is to check the lexical status tokens used in the parsing:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexfPush")]),e._v(" - this token means that we start to accumulate symbols in a new token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfNext")]),e._v(" - the character must be added to the current token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfPop")]),e._v(" - the receipt of the token is complete. Usually, with this flag we have the identifier type of the parsed token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfSkip")]),e._v(' - this token is used to exclude characters from parsing. For example, the control slashes in the string are \\n \\r ". They will be automatically replaced during the lexical analysis stage.')])]),e._v(" "),a("h2",{attrs:{id:"needle-language"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle-language"}},[e._v("#")]),e._v(" Needle language")]),e._v(" "),a("h3",{attrs:{id:"lexemes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexemes"}},[e._v("#")]),e._v(" Lexemes")]),e._v(" "),a("p",[e._v("The source code of a program must be in UTF-8 encoding.")]),e._v(" "),a("p",[e._v("The following lexical types are processed:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Keywords")]),e._v(" - "),a("code",[e._v("action, break, conditions, continue, contract, data, else, error, false, func, If, info, nil, return, settings, true, var, warning, while")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Number")]),e._v(" - only decimal numbers are accepted. There are two basic types: "),a("strong",[e._v("int")]),e._v(" and "),a("strong",[e._v("float")]),e._v(". If the number has a decimal point, it becomes a float "),a("strong",[e._v("float")]),e._v(". "),a("strong",[e._v("int")]),e._v(" type is equivalent to "),a("strong",[e._v("int64")]),e._v(" in golang, while "),a("strong",[e._v("float")]),e._v(" type is equivalent to "),a("strong",[e._v("float64")]),e._v(" in golang.")]),e._v(" "),a("li",[a("strong",[e._v("String")]),e._v(" - the string can be enclosed in double quotes "),a("code",[e._v('("a string")')]),e._v(" or backquotes "),a("code",[e._v("(\\`a string\\`)")]),e._v(". Both types of strings can contain newline characters. Strings in double quotes can contain double quotes, newline characters, and carriage returns escaped with slashes. For example, "),a("code",[e._v('"This is a \\"first string\\".\\r\\nThis is a second string."')]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Comment")]),e._v(" - there are two types of comments. Single-line comments use two slashes (//). For example, // This is a single-line comment. Multi-line comments use slash and asterisk symbols and can span multiple lines. For example, "),a("code",[e._v("/* This is a multi-line comment */")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Identifier")]),e._v(" - the names of variables and functions composed of a-z and A-Z letters, UTF-8 symbols, numbers and underscores. The name can start with a letter, underscore, "),a("code",[e._v("@")]),e._v(" or "),a("code",[e._v("$")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" is the name of the variable defined in the "),a("strong",[e._v("data section")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" can also be used to define global variables in the scope of "),a("strong",[e._v("conditions")]),e._v(" and "),a("strong",[e._v("action sections")]),e._v(". Ecosystem contracts can be called using the "),a("code",[e._v("@")]),e._v(" symbol. For example: "),a("code",[e._v("@1NewTable(...)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#types"}},[e._v("#")]),e._v(" Types")]),e._v(" "),a("p",[e._v("Corresponding golang types are specified next to theNeedle types.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("bool")]),e._v(" - bool, "),a("strong",[e._v("false")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("bytes")]),e._v(" - []byte{}, an empty byte array by default;")]),e._v(" "),a("li",[a("strong",[e._v("int")]),e._v(" - int64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - uint64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("array")]),e._v(" - []interface{}, an empty array by default;")]),e._v(" "),a("li",[a("strong",[e._v("map")]),e._v(" - map[string]interface{}, an empty object array by default;")]),e._v(" "),a("li",[a("strong",[e._v("money")]),e._v(" - decimal. Decimal, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("float")]),e._v(" - float64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("string")]),e._v(" - string, an empty string by default;")]),e._v(" "),a("li",[a("strong",[e._v("file")]),e._v(" - map[string]interface{}, an empty object array by default.")])]),e._v(" "),a("p",[e._v("These types of variables are defined with the "),a("code",[e._v("var")]),e._v(" keyword. For example, "),a("code",[e._v("var var1, var2 int")]),e._v(". When defined in this way, a variable will be assigned with a default value by type.")]),e._v(" "),a("p",[e._v("All variable values are of the interface{} type, and then they are assigned to the required golang types. Therefore, for example, array and map types are golang types []interface{} and map[string]interface{}. Both types of arrays can contain elements of any type.")]),e._v(" "),a("h3",{attrs:{id:"expressions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expressions"}},[e._v("#")]),e._v(" Expressions")]),e._v(" "),a("p",[e._v("An expression may include arithmetic operations, logical operations, and function calls. All expressions are evaluated from left to right by priority of operators. If having an equal priority, operators are evaluated from left to right.")]),e._v(" "),a("p",[e._v("Priority of operations from high to low:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Function call and parentheses")]),e._v(" - when a function is called, passed parameters will be calculated from left to right;")]),e._v(" "),a("li",[a("strong",[e._v("Unary Operation")]),e._v(" - logical negation "),a("code",[e._v("!")]),e._v(" and arithmetic sign change "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Multiplication and Division")]),e._v(" - arithmetic multiplication "),a("code",[e._v("*")]),e._v(" and division "),a("code",[e._v("/")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Addition and Subtraction")]),e._v(" - arithmetic addition "),a("code",[e._v("+")]),e._v(" and subtraction "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical comparison")]),e._v(" - "),a("code",[e._v(">=>> >=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical equality and inequality")]),e._v(" - "),a("code",[e._v("== !=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical AND")]),e._v(" - "),a("code",[e._v("&&")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical OR")]),e._v(" - "),a("code",[e._v("||")]),e._v(".")])]),e._v(" "),a("p",[e._v("When evaluating logical AND and OR, both sides of the expression are evaluated in any case.")]),e._v(" "),a("p",[e._v("Needle has no type checking during compilation. When evaluating operands, an attempt is made to convert the type to a more complex type. The type of complexity order can be as follows: "),a("code",[e._v("string, int, float, money")]),e._v(". Only part of the type conversions is implemented. The string type supports addition operations, and the result will be string concatenation. For example, "),a("code",[e._v("string + string = string, money-int = money, int * float = float")]),e._v(".")]),e._v(" "),a("p",[e._v("For functions, type checking is performed on the "),a("code",[e._v("string")]),e._v(" and "),a("code",[e._v("int")]),e._v(" types during execution.")]),e._v(" "),a("p",[a("strong",[e._v("array")]),e._v(" and "),a("strong",[e._v("map")]),e._v(" types can be addressed by index. For the "),a("strong",[e._v("array")]),e._v(" type, the "),a("strong",[e._v("int")]),e._v(" value must be specified as the index. For the "),a("strong",[e._v("map")]),e._v(" type, a variable or "),a("strong",[e._v("string")]),e._v(" value must be specified. If you assign a value to an "),a("strong",[e._v("array")]),e._v(" element whose index is greater than the current maximum index, an empty element will be added to the array. The initial value of these elements is "),a("strong",[e._v("nil")]),e._v(". For example: .. code:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('var my array\nmy[5] = 0\nvar mymap map\nmymap["index"] = my[3]\n')])])]),a("p",[e._v("In expressions of conditional logical values (such as "),a("code",[e._v("if, while, &&, ||, !")]),e._v("), the type is automatically converted to a logical value. If the type is not the default value, it is true.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var mymap map\nvar val string\nif mymap && val {\n...\n}\n")])])]),a("h3",{attrs:{id:"scope"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#scope"}},[e._v("#")]),e._v(" Scope")]),e._v(" "),a("p",[e._v("Braces specify a block that can contain local scope variables. By default, the scope of a variable extends to its own blocks and all nested blocks. In a block, you can define a new variable using the name of an existing variable. However, in this case, external variables with the same name become unavailable.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var a int\na = 3\n{\n var a int\n a = 4\n Println(a) // 4\n}\nPrintln(a) // 3\n")])])]),a("h3",{attrs:{id:"contract-execution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-execution"}},[e._v("#")]),e._v(" Contract execution")]),e._v(" "),a("p",[e._v("When calling a contract, parameters defined in "),a("strong",[e._v("data")]),e._v(" must be passed to it. Before executing a contract, the virtual machine receives these parameters and assigns them to the corresponding variables ($Param). Then, the predefined "),a("strong",[e._v("conditions")]),e._v(" function and "),a("strong",[e._v("action")]),e._v(" function are called.")]),e._v(" "),a("p",[e._v("Errors that occur during contract execution can be divided into two types: form errors and environment errors. Form errors are generated using special commands: "),a("code",[e._v("error, warning, info")]),e._v(" and when the built-in function returns "),a("code",[e._v("err")]),e._v(" not equal to "),a("em",[e._v("nil")]),e._v(".")]),e._v(" "),a("p",[e._v("The Needle language does not handle exceptions. Any error will terminate the execution of contracts. Since a separate stack and structure for saving variable values are created when a contract is executed, the golang garbage collection mechanism will automatically delete these data when a contract is executed.")]),e._v(" "),a("h3",{attrs:{id:"backus-naur-form-bnf"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backus-naur-form-bnf"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"backus-naur-form-bnf"}},[e._v("Backus–Naur Form (BNF)")])]),e._v(" "),a("p",[e._v("In computer science, BNF is a notation technique for context-free syntax and is usually used to describe the syntax of the language used in computing.")]),e._v(" "),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("''''''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] ]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("' | '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'A' |'B' | ... |'Z' |'a' |'b' | ... |'z' | 0x80 | 0x81 | ... | 0xFF\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x20'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x09'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x0D 0x0A'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'!' |'\"' |'$' |''' |'(' |')' |'\\*' |'+' |',' |'-' |'.' |'/ '|'<' |'=' |'>' |'[' |'\\\\' |']' |'_' |'|' |'}' | '{' | | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( |'_') { |'_' | }\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | |'!' |'#' | ... |'[' |']' | ...\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{ |'\\\"' |'\\n' |'\\r'}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'\"' {}'\"' |'\\`' {}'\\`'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'='\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'==' |'!=' |'>' |'<' |'<=' |'>=' |'&&' |'||' |'\\*' |'/' |'+ '|'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {','}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'(' []')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" [{'.' '(' []')'}]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'{''}'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( | | | | | break | continue | return)\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'if [else ]'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'while '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'contract '{'[] {} [] []'}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'data '{' {} '}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" '\"'{}'\"'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'optional | image | file | hidden | text | polymap | map | address | signature:'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'conditions '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'action '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'func '('[{','}]')'[{}] [] '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {',' } \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'.''('[{','}]')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'var {','}'\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{492:function(e,t,a){"use strict";a.r(t);var n=a(51),s=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"compiler-and-virtual-machine"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#compiler-and-virtual-machine"}},[e._v("#")]),e._v(" Compiler and Virtual Machine")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#source-code-storage-and-compilation"}},[e._v("Source code storage and compilation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-machine-structures"}},[e._v("Virtual machine structures")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#vm-structure"}},[e._v("VM Structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-structure"}},[e._v("Block structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#objinfo-structure"}},[e._v("ObjInfo structure")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contractinfo-structure"}},[e._v("ContractInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fieldinfo-structure"}},[e._v("FieldInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#funcname-structure"}},[e._v("FuncName Structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#extfuncinfo-structure"}},[e._v("ExtFuncInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#varinfo-structure"}},[e._v("VarInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#objextend-value"}},[e._v("ObjExtend value")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-machine-commands"}},[e._v("Virtual machine commands")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#bytecode-structure"}},[e._v("ByteCode structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#command-identifiers"}},[e._v("Command identifiers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#stack-operation-commands"}},[e._v("Stack operation commands")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#runtime-structure"}},[e._v("Runtime structure")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockstack-structure"}},[e._v("blockStack structure")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#runcode-function"}},[e._v("RunCode function")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("Other functions for operations with VM")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#compiler"}},[e._v("Compiler")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#lexical-analyzer"}},[e._v("Lexical analyzer")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#needle-language"}},[e._v("Needle language")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#lexemes"}},[e._v("Lexemes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#types"}},[e._v("Types")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expressions"}},[e._v("Expressions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#scope"}},[e._v("Scope")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-execution"}},[e._v("Contract execution")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#backus-naur-form-bnf"}},[e._v("Backus–Naur Form (BNF)")])])])])]),e._v(" "),a("p",[e._v("This section involves program compilation and Needle language operations in the Virtual Machine (VM).")]),e._v(" "),a("h2",{attrs:{id:"source-code-storage-and-compilation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#source-code-storage-and-compilation"}},[e._v("#")]),e._v(" Source code storage and compilation")]),e._v(" "),a("p",[e._v("Contracts and functions are written with Golang and stored in the contract tables of ecosystems.")]),e._v(" "),a("p",[e._v("When a contract is executed, its source code will be read from the database and compiled into bytecode.")]),e._v(" "),a("p",[e._v("When a contract is changed, its source code will be updated and saved in the database. Then, the source code is compiled, thereby updating the bytecode in the corresponding virtual machine.")]),e._v(" "),a("p",[e._v("As bytecodes are not physically saved, it will be compiled anew when the program is executed again.")]),e._v(" "),a("p",[e._v("The entire source code described in the contract table of each ecosystem is compiled into a virtual machine in strict order, and the status of the virtual machine is the same on all nodes.")]),e._v(" "),a("p",[e._v("When the contract is called, the virtual machine will not change its status in any way. The execution of any contract or calling of any function occurs on a separate running stack created during each external call.")]),e._v(" "),a("p",[e._v("Each ecosystem can have a so-called virtual ecosystem, which can be used within a node in conjunction with tables outside the blockchain, without direct affection on the blockchain or other virtual ecosystems. In this case, the node hosting such a virtual ecosystem will compile its contract and create its own virtual machine.")]),e._v(" "),a("h2",{attrs:{id:"virtual-machine-structures"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-machine-structures"}},[e._v("#")]),e._v(" Virtual machine structures")]),e._v(" "),a("h3",{attrs:{id:"vm-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vm-structure"}},[e._v("#")]),e._v(" VM Structure")]),e._v(" "),a("p",[e._v("A virtual machine is organized in memory as a structure like below.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type VM struct {\n Block\n ExtCost func(string) int64\n FuncCallsDB map[string]struct{}\n Extern bool\n ShiftContract int64\n logger *log.Entry\n}\n")])])]),a("p",[e._v("A VM structure has the following elements:")]),e._v(" "),a("ul",[a("li",[e._v("Block - contains a "),a("a",{attrs:{href:"#block-structure"}},[e._v("block structure")]),e._v(";")]),e._v(" "),a("li",[e._v("ExtCost - a function returns the cost of executing an external golang function;")]),e._v(" "),a("li",[e._v("FuncCallsDB - a collection of Golang function names. This function returns the execution cost as the first parameter. These functions use EXPLAIN to calculate the cost of database processing;")]),e._v(" "),a("li",[e._v("Extern - a Boolean flag indicating whether a contract is an external contract. It is set to true when a VM is created. Contracts called are not displayed when the code is compiled. In other words, it allows to call the contract code determined in the future;")]),e._v(" "),a("li",[e._v("ShiftContract - ID of the first contract in the VM;")]),e._v(" "),a("li",[e._v("logger - VM error log output.")])]),e._v(" "),a("h3",{attrs:{id:"block-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-structure"}},[e._v("#")]),e._v(" Block structure")]),e._v(" "),a("p",[e._v("A virtual machine is a tree composed of "),a("strong",[e._v("Block type")]),e._v(" objects.")]),e._v(" "),a("p",[e._v("A block is an independent unit that contains some bytecodes. In simple terms, everything you put in the braces ("),a("code",[e._v("{}")]),e._v(") in the language is a block.")]),e._v(" "),a("p",[e._v("For example, the following code would create a block with functions. This block also contains another block with an if statement, which contains a block with a while statement.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("func my() {\n if true {\n while false {\n ...\n }\n }\n}\n")])])]),a("p",[e._v("The block is organized in the memory as a structure like below.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type Block struct {\n Objects map[string]*ObjInfo\n Type int\n Owner *OwnerInfo\n Info interface{}\n Parent *Block\n Vars []reflect.Type\n Code ByteCodes\n Children Blocks\n}\n")])])]),a("p",[e._v("A block structure consists of the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Objects")]),e._v(" - a map of internal objects of the pointer type "),a("a",{attrs:{href:"#objInfo-structure"}},[e._v("ObjInfo")]),e._v(". For example, if there is a variable in the block, you can get information about it by its name;")]),e._v(" "),a("li",[a("strong",[e._v("Type")]),e._v(" - the type of the block. For a function block, its type is "),a("strong",[e._v("ObjFunc")]),e._v("; for a contract block, its type is "),a("strong",[e._v("ObjContract")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - a structure of "),a("strong",[e._v("OwnerInfo")]),e._v(" pointer type. This structure contains information about the owner of the compiled contract, which is specified during contract compilation or obtained from the "),a("strong",[e._v("contracts")]),e._v(" table;")]),e._v(" "),a("li",[a("strong",[e._v("Info")]),e._v(" - it contains information about the object, which depends on the block type;")]),e._v(" "),a("li",[a("strong",[e._v("Parent")]),e._v(" - a pointer to the parent block;")]),e._v(" "),a("li",[a("strong",[e._v("Vars")]),e._v(" - an array containing the types of current block variables;")]),e._v(" "),a("li",[a("strong",[e._v("Code")]),e._v(" - the bytecode of the block itself, which will be executed when the control rights are passed to the block, for example, function calls or loop bodies;")]),e._v(" "),a("li",[a("strong",[e._v("Children")]),e._v(" - an array containing sub-blocks, such as function nesting, loops, conditional operators.")])]),e._v(" "),a("h3",{attrs:{id:"objinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#objinfo-structure"}},[e._v("#")]),e._v(" ObjInfo structure")]),e._v(" "),a("p",[e._v("The ObjInfo structure contains information about internal objects.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ObjInfo struct {\n Type int\n Value interface{}\n}\n")])])]),a("p",[e._v("The ObjInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Type")]),e._v(" is the object type, which has any of the following values:\n"),a("ul",[a("li",[a("strong",[e._v("ObjContract")]),e._v(" – "),a("a",{attrs:{href:"#contractInfo-structure"}},[e._v("contract")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("ObjFunc")]),e._v(" - function;")]),e._v(" "),a("li",[a("strong",[e._v("ObjExtFunc")]),e._v(" - external golang function;")]),e._v(" "),a("li",[a("strong",[e._v("ObjVar")]),e._v(" - variable;")]),e._v(" "),a("li",[a("strong",[e._v("ObjExtend")]),e._v(" - $name variable.")])])]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" – it contains the structure of each type.")])]),e._v(" "),a("h4",{attrs:{id:"contractinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contractinfo-structure"}},[e._v("#")]),e._v(" ContractInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjContract")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a "),a("strong",[e._v("ContractInfo")]),e._v(" structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ContractInfo struct {\n ID uint32\n Name string\n Owner *OwnerInfo\n Used map[string]bool\n Tx *[]*FieldInfo\n}\n")])])]),a("p",[e._v("The ContractInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ID")]),e._v(" - contract ID, displayed in the blockchain when calling the contract;")]),e._v(" "),a("li",[a("strong",[e._v("Name")]),e._v(" - contract name;")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - other information about the contract;")]),e._v(" "),a("li",[a("strong",[e._v("Used")]),e._v(" - map of contracts names that has been called;")]),e._v(" "),a("li",[a("strong",[e._v("Tx")]),e._v(" - a data array described in the "),a("RouterLink",{attrs:{to:"/topics/script.html#data-section"}},[e._v("data section")]),e._v(" of the contract.")],1)]),e._v(" "),a("h4",{attrs:{id:"fieldinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fieldinfo-structure"}},[e._v("#")]),e._v(" FieldInfo structure")]),e._v(" "),a("p",[e._v("The FieldInfo structure is used in the "),a("strong",[e._v("ContractInfo")]),e._v(" structure and describes elements in "),a("RouterLink",{attrs:{to:"/topics/script.html#data-section"}},[e._v("data section")]),e._v(" of a contract.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FieldInfo struct {\n Name string\n Type reflect.Type\n Original uint32\n Tags string\n}\n")])])]),a("p",[e._v("The FieldInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Name")]),e._v(" - field name;")]),e._v(" "),a("li",[a("strong",[e._v("Type")]),e._v(" - field type;")]),e._v(" "),a("li",[a("strong",[e._v("Original")]),e._v(" - optional field;")]),e._v(" "),a("li",[a("strong",[e._v("Tags")]),e._v(" - additional labels for this field.")])]),e._v(" "),a("h4",{attrs:{id:"funcinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#funcinfo-structure"}},[e._v("#")]),e._v(" FuncInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the ObjFunc type, and the Value field contains a FuncInfo structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FuncInfo struct {\n Params []reflect.Type\n Results []reflect.Type\n Names *map[string]FuncName\n Variadic bool\n ID uint32\n}\n")])])]),a("p",[e._v("The FuncInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Params")]),e._v(" - an array of parameter types;")]),e._v(" "),a("li",[a("strong",[e._v("Results")]),e._v(" - an array of returned types;")]),e._v(" "),a("li",[a("strong",[e._v("Names")]),e._v(" - map of data for tail functions, for example, "),a("code",[e._v("DBFind().Columns ()")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Variadic")]),e._v(" - true if the function can have a variable number of parameters;")]),e._v(" "),a("li",[a("strong",[e._v("ID")]),e._v(" - function ID.")])]),e._v(" "),a("h4",{attrs:{id:"funcname-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#funcname-structure"}},[e._v("#")]),e._v(" FuncName Structure")]),e._v(" "),a("p",[e._v("The FuncName structure is used for FuncInfo and describes the data of a tail function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FuncName struct {\n Params []reflect.Type\n Offset []int\n Variadic bool\n}\n")])])]),a("p",[e._v("The FuncName structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Params")]),e._v(" - an array of parameter types;")]),e._v(" "),a("li",[a("strong",[e._v("Offset")]),e._v(" - the array of offsets for these variables. In fact, the values of all parameters in a function can be initialized with the dot .;")]),e._v(" "),a("li",[a("strong",[e._v("Variadic")]),e._v(" - true if the tail function can have a variable number of parameters.")])]),e._v(" "),a("h4",{attrs:{id:"extfuncinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#extfuncinfo-structure"}},[e._v("#")]),e._v(" ExtFuncInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the ObjExtFunc type, and the Value field contains a ExtFuncInfo structure. It is used to describe golang functions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ExtFuncInfo struct {\n Name string\n Params []reflect.Type\n Results []reflect.Type\n Auto []string\n Variadic bool\n Func interface{}\n}\n")])])]),a("p",[e._v("The ExtFuncInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Name")]),e._v(", "),a("strong",[e._v("Params")]),e._v(", "),a("strong",[e._v("Results")]),e._v(" parameters have the same structure as "),a("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Auto")]),e._v(" - an array of variables. If any, passes to the function as an additional parameter. For example, a variable of type SmartContract sc;")]),e._v(" "),a("li",[a("strong",[e._v("Func")]),e._v(" - golang functions.")])]),e._v(" "),a("h4",{attrs:{id:"varinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#varinfo-structure"}},[e._v("#")]),e._v(" VarInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjVar")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a "),a("strong",[e._v("VarInfo")]),e._v(" structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type VarInfo struct {\n Obj *ObjInfo\n Owner *Block\n}\n")])])]),a("p",[e._v("The VarInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Obj")]),e._v(" - information about the type and value of the variable;")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - Pointer to the owner block.")])]),e._v(" "),a("h4",{attrs:{id:"objextend-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#objextend-value"}},[e._v("#")]),e._v(" ObjExtend value")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjExtend")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a string containing the name of the variable or function.")]),e._v(" "),a("h2",{attrs:{id:"virtual-machine-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-machine-commands"}},[e._v("#")]),e._v(" Virtual machine commands")]),e._v(" "),a("h3",{attrs:{id:"bytecode-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bytecode-structure"}},[e._v("#")]),e._v(" ByteCode structure")]),e._v(" "),a("p",[e._v("A bytecode is a sequence of "),a("strong",[e._v("ByteCode")]),e._v(" type structures.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ByteCode struct {\n Cmd uint16\n Value interface{}\n}\n")])])]),a("p",[e._v("This structure has the following fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Cmd")]),e._v(" - the identifier of the storage commands;")]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" - contains the operand (value).")])]),e._v(" "),a("p",[e._v("In general, commands perform an operation on the top element of the stack and writes the result value into it if necessary.")]),e._v(" "),a("h3",{attrs:{id:"command-identifiers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#command-identifiers"}},[e._v("#")]),e._v(" Command identifiers")]),e._v(" "),a("p",[e._v("Identifiers of the virtual machine commands are described in the vm/cmds_list.go file.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("cmdPush")]),e._v(" – put a value from the Value field to the stack. For example, put numbers and lines to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdVar")]),e._v(" - put the value of a variable to the stack. Value contains a pointer to the VarInfo structure and information about the variable;")]),e._v(" "),a("li",[a("strong",[e._v("cmdExtend")]),e._v(" – put the value of an external variable to the stack. Value contains a string with the variable name (starting with $);")]),e._v(" "),a("li",[a("strong",[e._v("cmdCallExtend")]),e._v(" – call an external function (starting with $). The parameters of the function are obtained from the stack, and the results are placed to the stack. Value contains a function name (starting with $);")]),e._v(" "),a("li",[a("strong",[e._v("cmdPushStr")]),e._v(" – put the string in Value to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdCall")]),e._v(" - calls the virtual machine function. Value contains a "),a("strong",[e._v("ObjInfo")]),e._v(" structure. This command is applicable to the "),a("strong",[e._v("ObjExtFunc")]),e._v(" golang function and "),a("strong",[e._v("ObjFunc")]),e._v(" Needle function. If a function is called, its parameters will be obtained from the stack and the result values will be placed to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdCallVari")]),e._v(" - similar to the "),a("strong",[e._v("cmdCall")]),e._v(" command, it calls the virtual machine function. This command is used to call a function with a variable number of parameters;")]),e._v(" "),a("li",[a("strong",[e._v("cmdReturn")]),e._v(" - used to exit the function. The return values will be put to the stack, and the Value field is not used;")]),e._v(" "),a("li",[a("strong",[e._v("cmdIf")]),e._v(" – transfer control to the bytecode in the "),a("strong",[e._v("block")]),e._v(" structure, which is passed in the Value field. The control will be transferred to the stack only when the top element of the stack is called by the "),a("em",[e._v("valueToBool")]),e._v(" function and returned "),a("code",[e._v("true")]),e._v(". Otherwise, the control will be transferred to the next command;")]),e._v(" "),a("li",[a("strong",[e._v("cmdElse")]),e._v(" - this command works in the same way as the "),a("strong",[e._v("cmdIf")]),e._v(", but only when the top element of the stack is called by the valueToBool function and returned "),a("code",[e._v("false")]),e._v(", the control will be transferred to the specified block;")]),e._v(" "),a("li",[a("strong",[e._v("cmdAssignVar")]),e._v(" – get a list of variables of type "),a("strong",[e._v("VarInfo")]),e._v(" from Value. These variables use the "),a("strong",[e._v("cmdAssign")]),e._v(" command to get the value;")]),e._v(" "),a("li",[a("strong",[e._v("cmdAssign")]),e._v(" – assign the value in the stack to the variable obtained by the "),a("strong",[e._v("cmdAssignVar")]),e._v(" command;")]),e._v(" "),a("li",[a("strong",[e._v("cmdLabel")]),e._v(" - defines a label when control is returned during the while loop;")]),e._v(" "),a("li",[a("strong",[e._v("cmdContinue")]),e._v(" - this command transfers control to the "),a("strong",[e._v("cmdLabel")]),e._v(" label. When executing a new iteration of the loop, Value is not used;")]),e._v(" "),a("li",[a("strong",[e._v("cmdWhile")]),e._v(" – use valueToBool to check the top element of the stack. If this value is "),a("code",[e._v("true")]),e._v(", the "),a("strong",[e._v("block")]),e._v(" structure will be called from the value field;")]),e._v(" "),a("li",[a("strong",[e._v("cmdBreak")]),e._v(" - exits the loop;")]),e._v(" "),a("li",[a("strong",[e._v("cmdIndex")]),e._v(" – put the value in map or array into the stack by index, without using Value. For example, "),a("code",[e._v("(map | array) (index value) => (map | array [index value])")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSetIndex")]),e._v(" – assigns the value of the top element of the stack to elements of map or array, without using Value. For example, "),a("code",[e._v("(map | array) (index value) (value) => (map | array)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdFuncName")]),e._v(" - adds parameters that are passed using sequential descriptions divided by dot . For example, "),a("code",[e._v("func name => Func (...) .Name (...)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdUnwrapArr")]),e._v(" - defines a Boolean flag if the top element of the stack is an array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdMapInit")]),e._v(" – initializes the value of map;")]),e._v(" "),a("li",[a("strong",[e._v("cmdArrayInit")]),e._v(" – initializes the value of array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdError")]),e._v(" - this command is created when a contract or function terminates with a specified "),a("code",[e._v("error, warning, info")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"stack-operation-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stack-operation-commands"}},[e._v("#")]),e._v(" Stack operation commands")]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("In the current version, automatic type conversion is not fully applicable for these commands. For example,")])]),e._v(" "),a("blockquote",[a("p",[a("code",[e._v("string + float | int | decimal => float | int | decimal, float + int | str => float, but int + string => runtime error")]),e._v(".")])]),e._v(" "),a("p",[e._v("The following are commands for direct stack processing. The Value field is not used in these commands.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("cmdNot")]),e._v(" - logical negation. "),a("code",[e._v("(val) => (!ValueToBool(val))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSign")]),e._v(" - change of sign. "),a("code",[e._v("(val) => (-val)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAdd")]),e._v(" - addition. "),a("code",[e._v("(val1)(val2) => (val1 + val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSub")]),e._v(" - subtraction. "),a("code",[e._v("(val1)(val2) => (val1-val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdMul")]),e._v(" - multiplication. "),a("code",[e._v("(val1)(val2) => (val1 * val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdDiv")]),e._v(" - division. "),a("code",[e._v("(val1)(val2) => (val1 / val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAnd")]),e._v(" - logical AND. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) && valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdOr")]),e._v(" - logical OR. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) || valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdEqual")]),e._v(" - equality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 == val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotEq")]),e._v(" - inequality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 != val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdLess")]),e._v(" - less-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 (val1 >= val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdGreat")]),e._v(" - greater-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1> val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotGreat")]),e._v(" - less-than-or-equal comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 <= val2)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"runtime-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runtime-structure"}},[e._v("#")]),e._v(" Runtime structure")]),e._v(" "),a("p",[e._v("The execution of bytecodes will not affect the virtual machine. For example, it allows various functions and contracts to run simultaneously in a single virtual machine. The Runtime structure is used to run functions and contracts, as well as any expressions and bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type RunTime struct {\n stack []interface{}\n blocks []*blockStack\n vars []interface{}\n extend *map[string]interface{}\n vm *VM\n cost int64\n err error\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("stack")]),e._v(" - the stack to execute the bytecode;")]),e._v(" "),a("li",[a("strong",[e._v("blocks")]),e._v(" - block calls stack;")]),e._v(" "),a("li",[a("strong",[e._v("vars")]),e._v(" - stack of variables. Its variable will be added to the stack of variables when the bytecode is called in the block. After exiting the block, the size of the stack of variables will return to the previous value;")]),e._v(" "),a("li",[a("strong",[e._v("extend")]),e._v(" - a pointer to map with values of external variables ("),a("code",[e._v("$name")]),e._v(");")]),e._v(" "),a("li",[a("strong",[e._v("vm")]),e._v(" - a virtual machine pointer;")]),e._v(" "),a("li",[a("strong",[e._v("cost")]),e._v(" - fuel unit of the resulting cost of execution;")]),e._v(" "),a("li",[a("strong",[e._v("err")]),e._v(" - error occurred during execution.")])]),e._v(" "),a("h4",{attrs:{id:"blockstack-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockstack-structure"}},[e._v("#")]),e._v(" blockStack structure")]),e._v(" "),a("p",[e._v("The blockStack structure is used in the Runtime structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type blockStack struct {\n Block *Block\n Offset int\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Block")]),e._v(" - a pointer to the block being executed;")]),e._v(" "),a("li",[a("strong",[e._v("Offset")]),e._v(" – the offset of the last command executed in the bytecode of the specified block.")])]),e._v(" "),a("h3",{attrs:{id:"runcode-function"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runcode-function"}},[e._v("#")]),e._v(" RunCode function")]),e._v(" "),a("p",[e._v("Bytecodes are executed in the "),a("strong",[e._v("RunCode")]),e._v(" function. It contains a loop that performs the corresponding operation for each bytecode command. Before processing a bytecode, the data required must be initialized.")]),e._v(" "),a("p",[e._v("New blocks are added to other blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = append(rt.blocks, &blockStack{block, len(rt.vars)})\n")])])]),a("p",[e._v("Next, get the information of relevant parameters of the tail function. These parameters are contained in the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var namemap map[string][]interface{}\nif block.Type == ObjFunc && block.Info.(*FuncInfo).Names != nil {\n if rt.stack[len(rt.stack)-1] != nil {\n namemap = rt.stack[len(rt.stack)-1].(map[string][]interface{})\n }\n rt.stack = rt.stack[:len(rt.stack)-1]\n}\n")])])]),a("p",[e._v("Then, all variables defined in the current block must be initialized with their initial values.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("start := len(rt.stack)\nvaroff := len(rt.vars)\nfor vkey, vpar := range block.Vars {\n rt.cost--\n var value interface{}\n")])])]),a("p",[e._v("Since variables in the function are also variables, we need to retrieve them from the last element of the stack in the order described by the function itself.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if block.Type == ObjFunc && vkey = len(params.Params)-1 {\n")])])]),a("p",[e._v("If variable parameters passed belongs to a variable number of parameters, then these parameters will be combined into an array of variables.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" off := varoff + params.Offset[len(params.Params)-1]\n rt.vars[off] = append(rt.vars[off].([]interface{}), value)\n } else {\n rt.vars[varoff+params.Offset[i]] = value\n }\n }\n }\n}\n")])])]),a("p",[e._v("After that, all we have to do is delete values passed from the top of the stack as function parameters, thereby moving the stack. We have copied their values into a variable array.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if block.Type == ObjFunc {\n start -= len(block.Info.(*FuncInfo).Params)\n}\n")])])]),a("p",[e._v("When a bytecode command loop finished, we must clear the stack correctly.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("last := rt.blocks[len(rt.blocks)-1]\n")])])]),a("p",[e._v("Delete the current block from the stack of blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = rt.blocks[:len(rt.blocks)-1]\nif status == statusReturn {\n")])])]),a("p",[e._v("If successfully exited from a function already executed, we will add the return value to the end of the previous stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if last.Block.Type == ObjFunc {\n for count := len(last.Block.Info.(*FuncInfo).Results); count > 0; count-- {\n rt.stack[start] = rt.stack[len(rt.stack)-count]\n start++\n }\n status = statusNormal\n } else {\n")])])]),a("p",[e._v("As you can see, if we do not execute the function, then we will not restore the stack status and exit the function as is. The reason is that loops and conditional structures that have been executed in the function are also bytecode blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" return\n\n }\n}\n\nrt.stack = rt.stack[:start]\n")])])]),a("h3",{attrs:{id:"other-functions-for-operations-with-vm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("#")]),e._v(" Other functions for operations with VM")]),e._v(" "),a("p",[e._v("Your may create a virtual machine with the "),a("strong",[e._v("NewVM")]),e._v(" function. Each virtual machine will be added with four functions, such as "),a("strong",[e._v("ExecContract")]),e._v(", "),a("strong",[e._v("MemoryUsage")]),e._v(", "),a("strong",[e._v("CallContract")]),e._v(", and "),a("strong",[e._v("Settings")]),e._v(", through the "),a("strong",[e._v("Extend")]),e._v(" function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for key, item := range ext.Objects {\n fobj := reflect.ValueOf(item).Type()\n")])])]),a("p",[e._v("We traverse all the objects passed and only look at the functions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" switch fobj.Kind() {\n case reflect.Func:\n")])])]),a("p",[e._v("We fill the "),a("strong",[e._v("ExtFuncInfo")]),e._v(" structure according to the information received about the function, and add its structure to the top level map "),a("strong",[e._v("Objects")]),e._v(" by name.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" data := ExtFuncInfo{key, make([]reflect.Type, fobj.NumIn()), make([]reflect.Type, fobj.NumOut()),\n make([]string, fobj.NumIn()), fobj.IsVariadic(), item}\n for i := 0; i 0 && ((*lexems)[i-1].Type == isComma || (*lexems)[i-1].Type == lexOper) {\n continue main\n }\n for k := len(buffer) - 1; k >= 0; k-- {\n if buffer[k].Cmd == cmdSys {\n continue main\n }\n}\nbreak main\n\n")])])]),a("p",[e._v("In general, the algorithm itself corresponds to an algorithm for converting to inverse Polish notation. With the consideration of the calling of necessary contracts, functions, and indexes, as well as other things not encountered during parsing and options for parsing lexIdent type tokens, then, variables, functions or contracts with this name will be checked. If nothing is found and this is not a function or contract call, then it will indicate an error.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("objInfo, tobj := vm.findObj(lexem.Value.(string), block)\nif objInfo == nil && (!vm.Extern || i> *ind || i >= len(*lexems)-2 || (*lexems)[i+1].Type != isLPar) {\n return fmt.Errorf(`unknown identifier %s`, lexem.Value.(string))\n}\n")])])]),a("p",[e._v("We may encounter such a situation, and the contract call will be described later. In this example, if no functions or variables with the same name are found, then we think it is necessary to call a contract. In this compiled language, there is no difference between contracts and function calls. But we need to call the contract through the "),a("strong",[e._v("ExecContract")]),e._v(" function used in the bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if objInfo.Type == ObjContract {\n if objInfo.Value != nil {\n objContract = objInfo.Value.(*Block)\n }\n objInfo, tobj = vm.findObj(`ExecContract`, block)\n isContract = true\n}\n")])])]),a("p",[e._v("We record the number of variables so far in "),a("code",[e._v("count")]),e._v(", which will also be written to the stack along with the number of function parameters. In each subsequent detection of parameters, we only need to increase this number by one unit at the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("count := 0\nif (*lexems)[i+2].Type != isRPar {\n count++\n}\n")])])]),a("p",[e._v("We have a list Used of called parameters for contracts, then we need to mark the case of the contract is called. If the contract is called without parameters, we must add two empty parameters to call "),a("strong",[e._v("ExecContract")]),e._v(" to get at least two parameters.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('if isContract {\n name := StateName((*block)[0].Info.(uint32), lexem.Value.(string))\n for j := len(*block) - 1; j >= 0; j-- {\n topblock := (*block)[j]\n if topblock.Type == ObjContract {\n if topblock.Info.(*ContractInfo).Used == nil {\n topblock.Info.(*ContractInfo).Used = make(map[string]bool)\n }\n topblock.Info.(*ContractInfo).Used[name] = true\n }\n }\n bytecode = append(bytecode, &ByteCode{cmdPush, name})\n if count == 0 {\n count = 2\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n }\n count++\n}\n')])])]),a("p",[e._v("If we see that there is a square bracket next, then we add the "),a("strong",[e._v("cmdIndex")]),e._v(" command to get the value by the index.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if (*lexems)[i+1].Type == isLBrack {\n if objInfo == nil || objInfo.Type != ObjVar {\n return fmt.Errorf(`unknown variable %s`, lexem.Value.(string))\n }\n buffer = append(buffer, &ByteCode{cmdIndex, 0})\n}\n")])])]),a("p",[e._v("The "),a("strong",[e._v("CompileBlock")]),e._v(" function can generate object trees and expression-independent bytecodes. The compilation process is based on a finite state machine, just like a lexical analyzer, but with the following differences. First, we do not use symbols but tokens; second, we will immediately describe the "),a("em",[e._v("states")]),e._v(" variables in all states and transitions. It represents an array of objects indexed by token type. Each token has a structure of "),a("em",[e._v("compileState")]),e._v(", and a new state is specified in "),a("em",[e._v("NewState")]),e._v(". If it is clear what structure we have resolved, we can specify the function of the handler in the "),a("em",[e._v("Func")]),e._v(" field.")]),e._v(" "),a("p",[e._v("Let us review the main state as an example.")]),e._v(" "),a("p",[e._v("If we encounter a newline or comment, then we will remain in the same state. If we encounter the "),a("strong",[e._v("contract")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateContract")]),e._v(" and start parsing the structure. If we encounter the "),a("strong",[e._v("func")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateFunc")]),e._v(". If other tokens are received, the function generating error will be called.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateRoot\n lexNewLine: {stateRoot, 0},\n lexKeyword | (keyContract << 8): {stateContract | statePush, 0},\n lexKeyword | (keyFunc << 8): {stateFunc | statePush, 0},\n lexComment: {stateRoot, 0},\n 0: {errUnknownCmd, cfError},\n},\n")])])]),a("p",[e._v("Suppose we encountered the "),a("strong",[e._v("func")]),e._v(" keyword and we have changed the state to "),a("em",[e._v("stateFunc")]),e._v(". Since the function name must follow the "),a("strong",[e._v("func")]),e._v(" keyword, we will keep the same state when changing the function name. For all other tokens, we will generate corresponding errors. If we get the function name in the token identifier, then we go to the "),a("em",[e._v("stateFParams")]),e._v(" state, where we can get the parameters of the function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateFunc\n lexNewLine: {stateFunc, 0},\n lexIdent: {stateFParams, cfNameBlock},\n 0: {errMustName, cfError},\n},\n")])])]),a("p",[e._v("At the same time as the above operations, we will call the "),a("strong",[e._v("fNameBlock")]),e._v(" function. It should be noted that the Block structure is created with the statePush mark, where we get it from the buffer and fill it with the data we need. The "),a("strong",[e._v("fNameBlock")]),e._v(" function is suitable for contracts and functions (including those nested in them). It fills the "),a("em",[e._v("Info")]),e._v(" field with the corresponding structure and writes itself into the "),a("em",[e._v("Objects")]),e._v(" of the parent block. In this way, we can call the function or contract with the specified name. Similarly, we create corresponding functions for all states and variables. These functions are usually very small and perform some duties when constructing the virtual machine tree.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("func fNameBlock(buf *[]*Block, state int, lexem *Lexem) error {\n var itype int\n prev := (*buf)[len(*buf)-2]\n fblock := (*buf)[len(*buf)-1]\n name := lexem.Value.(string)\n switch state {\n case stateBlock:\n itype = ObjContract\n name = StateName((*buf)[0].Info.(uint32), name)\n fblock.Info = &ContractInfo{ID: uint32(len(prev.Children) - 1), Name: name,\n Owner: (*buf)[0].Owner}\n default:\n itype = ObjFunc\n fblock.Info = &FuncInfo{}\n }\n fblock.Type = itype\n prev.Objects[name] = &ObjInfo{Type: itype, Value: fblock}\n return nil\n}\n")])])]),a("p",[e._v("For the "),a("strong",[e._v("CompileBlock")]),e._v(" function, it just traverses all the tokens and switches states according to the tokens described in states. Almost all additional tokens correspond to additional program codes.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("statePush")]),e._v(" – adds the "),a("strong",[e._v("Block")]),e._v(" object to the object tree;")]),e._v(" "),a("li",[a("strong",[e._v("statePop")]),e._v(" - used when the block ends with a closing brace;")]),e._v(" "),a("li",[a("strong",[e._v("stateStay")]),e._v(" - you need to keep the current mark when changing to a new state;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBlock")]),e._v(" - transition to the "),a("strong",[e._v("stateBlock")]),e._v(" state for processing "),a("em",[e._v("while")]),e._v(" and "),a("em",[e._v("if")]),e._v(". After processing expressions, you need to process blocks within the braces;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBody")]),e._v(" - transition to the "),a("strong",[e._v("stateBody")]),e._v(" state;")]),e._v(" "),a("li",[a("strong",[e._v("stateFork")]),e._v(" - save the marked position. When the expression starts with an identifier or a name with "),a("code",[e._v("$")]),e._v(", we can make function calls or assignments;")]),e._v(" "),a("li",[a("strong",[e._v("stateToFork")]),e._v(" – used to get the token stored in "),a("strong",[e._v("stateFork")]),e._v(", which will be passed to the process function;")]),e._v(" "),a("li",[a("strong",[e._v("stateLabel")]),e._v(" – used to insert "),a("strong",[e._v("cmdLabel")]),e._v(" commands. "),a("em",[e._v("while")]),e._v(" structure requires this flag;")]),e._v(" "),a("li",[a("strong",[e._v("stateMustEval")]),e._v(" – check the availability of conditional expressions at the beginning of "),a("em",[e._v("if")]),e._v(" and "),a("em",[e._v("while")]),e._v(" structures.")])]),e._v(" "),a("p",[e._v("In addition to the "),a("strong",[e._v("CompileBlock")]),e._v(" function, the "),a("strong",[e._v("FlushBlock")]),e._v(" function should also be mentioned. But the problem is that the block tree is constructed independently of existing virtual machines. More precisely, we obtain information about functions and contracts that exist in a virtual machine, but we collect the compiled blocks into a separate tree. Otherwise, if an error occurs during compilation, we must roll back the virtual machine to the previous state. Therefore, we go to the compilation tree separately, but after the compilation is successful, the "),a("strong",[e._v("FlushContract")]),e._v(" function must be called. This function adds the completed block tree to the current virtual machine. The compilation phase is now complete.")]),e._v(" "),a("h2",{attrs:{id:"lexical-analyzer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexical-analyzer"}},[e._v("#")]),e._v(" Lexical analyzer")]),e._v(" "),a("p",[e._v("The lexical analyzer processes incoming strings and forms a sequence of tokens of the following types :")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - system token, for example: "),a("code",[e._v("{}, [], (), ,, .")]),e._v(" etc;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - operation token, for example: "),a("code",[e._v("+, -, /, \\, *")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - number;")]),e._v(" "),a("li",[a("strong",[e._v("lexident")]),e._v(" - identifier;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewline")]),e._v(" - newline character;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comment;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - keyword;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" - type;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" - reference to external variables or functions, for example: "),a("code",[e._v("$myname")]),e._v(".")])]),e._v(" "),a("p",[e._v("In the current version, a conversion table (finite state machine) is initially constructed with the help of the "),a("a",{attrs:{href:"#lextablelextablego"}},[e._v("script/lextable/lextable.go")]),e._v(" file to parse the tokens, which is written to the lex_table.go file. In general, you can get rid of the conversion table initially generated by the file and create a conversion table in the memory ("),a("code",[e._v("init()")]),e._v(") immediately upon startup. The lexical analysis itself occurs in the lexParser function in the "),a("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lextable-lextable-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lextable-lextable-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),a("p",[e._v("Here we define the alphabet to operate and describe how the finite state machine changes from one state to another based on the next received symbol.")]),e._v(" "),a("p",[a("em",[e._v("states")]),e._v(" is a JSON object containing a list of states.")]),e._v(" "),a("p",[e._v("Except for specific symbols, "),a("code",[e._v("d")]),e._v(" stands for all symbols not specified in the state.\n"),a("code",[e._v("n")]),e._v(" stands for 0x0a, "),a("code",[e._v("s")]),e._v(" stands for space, "),a("code",[e._v("q")]),e._v(" stands for backquote, "),a("code",[e._v("Q")]),e._v(" stands for double quote, "),a("code",[e._v("r")]),e._v(" stands for character >= 128, "),a("code",[e._v("a")]),e._v(" stands for AZ and az, and "),a("code",[e._v("1")]),e._v(" stands for 1- 9.")]),e._v(" "),a("p",[e._v("The name of these states are keys, and the possible values are listed in the value object. Then, there is a new state to make transitions for each group. Then there is the name of the token. If we need to return to the initial state, the third parameter is the service token, which indicates how to handle the current symbol.")]),e._v(" "),a("p",[e._v("For example, we have the main state and the incoming characters "),a("code",[e._v("/")]),e._v(", "),a("code",[e._v('"/": ["solidus", "", "push next"]')]),e._v(",")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("push")]),e._v(" - gives the command to remember that it is in a separate stack ;")]),e._v(" "),a("li",[a("strong",[e._v("next")]),e._v(" - goes to the next character, and at the same time we change the status to "),a("strong",[e._v("solidus")]),e._v(". After that, gets the next character and check the status of "),a("strong",[e._v("solidus")]),e._v(".")])]),e._v(" "),a("p",[e._v("If the next character has "),a("code",[e._v("/")]),e._v(" or "),a("code",[e._v("/*")]),e._v(", then we go to the comment "),a("strong",[e._v("comment")]),e._v(" state because they start with "),a("code",[e._v("//")]),e._v(" or "),a("code",[e._v("/*")]),e._v(". Obviously, each comment has a different state afterwards, because they end with a different symbol.")]),e._v(" "),a("p",[e._v("If the next character is not "),a("code",[e._v("/")]),e._v(" and "),a("code",[e._v("*")]),e._v(", then we record everything in the stack as "),a("strong",[e._v("lexOper")]),e._v(" type tags, clear the stack and return to the main state.")]),e._v(" "),a("p",[e._v("The following module converts the state tree into a numeric array and writes it into the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("p",[e._v("In the first loop:")]),e._v(" "),a("p",[e._v("We form an alphabet of valid symbols.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for ind, ch := range alphabet {\n i := byte(ind)\n")])])]),a("p",[e._v("In addition, in "),a("strong",[e._v("state2int")]),e._v(", we provide each state with its own sequence identifier.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" state2int := map[string]uint{`main`: 0}\n if err := json.Unmarshal([]byte(states), &data); err == nil {\n for key := range data {\n if key != `main` {\n state2int[key] = uint(len(state2int))\n")])])]),a("p",[e._v("When we traverse all states and each set in a state and each symbol in a set, we write a three-byte number [new state identifier (0 = main)] + [token type ( 0-no token)] + [token].\nThe bidimensionality of the "),a("em",[e._v("table")]),e._v(" array is that it is divided into states and 34 input symbols from the "),a("em",[e._v("alphabet")]),e._v(" array, which are arranged in the same order.\nWe are in the "),a("em",[e._v("main")]),e._v(" state on the zero row of the "),a("em",[e._v("table")]),e._v(". Take the first character, find its index in the "),a("em",[e._v("alphabet")]),e._v(" array, and get the value from the column with the given index. Starting from the value received, we receive the token in the low byte. If the parsing is complete, the second byte indicates the type of token received. In the third byte, we receive the index of the next new state.\nAll of these are described in more detail in the "),a("strong",[e._v("lexParser")]),e._v(" function in "),a("em",[e._v("lex.go")]),e._v(".\nIf you want to add some new characters, you need to add them to the "),a("em",[e._v("alphabet")]),e._v(" array and increase the quantity of the "),a("em",[e._v("AlphaSize")]),e._v(" constant. If you want to add a new symbol combination, it should be described in the status, similar to the existing options. After the above operation, run the "),a("em",[e._v("lextable.go")]),e._v(" file to update the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lex-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lex-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lex-go"}},[e._v("lex.go")])]),e._v(" "),a("p",[e._v("The "),a("strong",[e._v("lexParser")]),e._v(" function directly generates lexical analysis and returns an array of received tags based on incoming strings. Let us analyze the structure of tokens.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type Lexem struct {\n Type uint32 // Type of the lexem\n Value interface{} // Value of lexem\n Line uint32 // Line of the lexem\n Column uint32 // Position inside the line\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Type")]),e._v(" - token type. It has one of the following values: "),a("code",[e._v("lexSys, lexOper, lexNumber, lexIdent, lexString, lexComment, lexKeyword, lexType, lexExtend")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" – token value. The type of value depends on the token type, Let us analyze it in more detail:\n"),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - includes brackets, commas, etc. In this case, "),a("code",[e._v("Type = ch << 8 | lexSys")]),e._v(", please refer to the "),a("code",[e._v("isLPar ... isRBrack")]),e._v(" constant, and its value is uint32 bits;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - the value represents an equivalent character sequence in the form of uint32. See the "),a("code",[e._v("isNot ... isOr")]),e._v(" constants;")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - numbers are stored as int64 or float64. If the number has a decimal point, it is float64;")]),e._v(" "),a("li",[a("strong",[e._v("lexIdent")]),e._v(" - identifiers are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewLine")]),e._v(" - newline character. Also used to calculate the row and token position;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - lines are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comments are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - for keywords, only the corresponding indexes are stored, see the "),a("code",[e._v("keyContract ... keyTail")]),e._v(" constant. In this case "),a("code",[e._v("Type = KeyID << 8 | lexKeyword")]),e._v(". In addition, it should be noted that the "),a("code",[e._v("true, false, nil")]),e._v(" keywords will be immediately converted to lexNumber type tokens, and the corresponding "),a("code",[e._v("bool")]),e._v(" and "),a("code",[e._v("intreface {}")]),e._v(" types will be used;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" – this value contains the corresponding "),a("code",[e._v("reflect.Type")]),e._v(" type value;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" – identifiers beginning with a "),a("code",[e._v("$")]),e._v(". These variables and functions are passed from the outside and are therefore assigned to special types of tokens. This value contains the name as a string without a $ at the beginning.")])])]),e._v(" "),a("li",[a("strong",[e._v("Line")]),e._v(" - the line where the token is found;")]),e._v(" "),a("li",[a("strong",[e._v("Column")]),e._v(" - in-line position of the token.")])]),e._v(" "),a("p",[e._v("Let us analyze the "),a("strong",[e._v("lexParser")]),e._v(" function in detail. The "),a("strong",[e._v("todo")]),e._v(" function looks up the symbol index in the alphabet based on the current state and the incoming symbol, and obtains a new state, token identifier (if any), and other tokens from the conversion table. The parsing itself involves calling the "),a("strong",[e._v("todo")]),e._v(" function in turn for each next character and switching to a new state. Once the tag is received, we create the corresponding token in the output criteria and continue the parsing process. It should be noted that during the parsing process, we do not accumulate the token symbols into a separate stack or array, because we only save the offset of the start of the token. After getting the token, we move the offset of the next token to the current parsing position.")]),e._v(" "),a("p",[e._v("All that remains is to check the lexical status tokens used in the parsing:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexfPush")]),e._v(" - this token means that we start to accumulate symbols in a new token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfNext")]),e._v(" - the character must be added to the current token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfPop")]),e._v(" - the receipt of the token is complete. Usually, with this flag we have the identifier type of the parsed token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfSkip")]),e._v(' - this token is used to exclude characters from parsing. For example, the control slashes in the string are \\n \\r ". They will be automatically replaced during the lexical analysis stage.')])]),e._v(" "),a("h2",{attrs:{id:"needle-language"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle-language"}},[e._v("#")]),e._v(" Needle language")]),e._v(" "),a("h3",{attrs:{id:"lexemes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexemes"}},[e._v("#")]),e._v(" Lexemes")]),e._v(" "),a("p",[e._v("The source code of a program must be in UTF-8 encoding.")]),e._v(" "),a("p",[e._v("The following lexical types are processed:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Keywords")]),e._v(" - "),a("code",[e._v("action, break, conditions, continue, contract, data, else, error, false, func, If, info, nil, return, settings, true, var, warning, while")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Number")]),e._v(" - only decimal numbers are accepted. There are two basic types: "),a("strong",[e._v("int")]),e._v(" and "),a("strong",[e._v("float")]),e._v(". If the number has a decimal point, it becomes a float "),a("strong",[e._v("float")]),e._v(". "),a("strong",[e._v("int")]),e._v(" type is equivalent to "),a("strong",[e._v("int64")]),e._v(" in golang, while "),a("strong",[e._v("float")]),e._v(" type is equivalent to "),a("strong",[e._v("float64")]),e._v(" in golang.")]),e._v(" "),a("li",[a("strong",[e._v("String")]),e._v(" - the string can be enclosed in double quotes "),a("code",[e._v('("a string")')]),e._v(" or backquotes "),a("code",[e._v("(\\`a string\\`)")]),e._v(". Both types of strings can contain newline characters. Strings in double quotes can contain double quotes, newline characters, and carriage returns escaped with slashes. For example, "),a("code",[e._v('"This is a \\"first string\\".\\r\\nThis is a second string."')]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Comment")]),e._v(" - there are two types of comments. Single-line comments use two slashes (//). For example, // This is a single-line comment. Multi-line comments use slash and asterisk symbols and can span multiple lines. For example, "),a("code",[e._v("/* This is a multi-line comment */")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Identifier")]),e._v(" - the names of variables and functions composed of a-z and A-Z letters, UTF-8 symbols, numbers and underscores. The name can start with a letter, underscore, "),a("code",[e._v("@")]),e._v(" or "),a("code",[e._v("$")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" is the name of the variable defined in the "),a("strong",[e._v("data section")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" can also be used to define global variables in the scope of "),a("strong",[e._v("conditions")]),e._v(" and "),a("strong",[e._v("action sections")]),e._v(". Ecosystem contracts can be called using the "),a("code",[e._v("@")]),e._v(" symbol. For example: "),a("code",[e._v("@1NewTable(...)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#types"}},[e._v("#")]),e._v(" Types")]),e._v(" "),a("p",[e._v("Corresponding golang types are specified next to theNeedle types.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("bool")]),e._v(" - bool, "),a("strong",[e._v("false")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("bytes")]),e._v(" - []byte{}, an empty byte array by default;")]),e._v(" "),a("li",[a("strong",[e._v("int")]),e._v(" - int64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - uint64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("array")]),e._v(" - []interface{}, an empty array by default;")]),e._v(" "),a("li",[a("strong",[e._v("map")]),e._v(" - map[string]interface{}, an empty object array by default;")]),e._v(" "),a("li",[a("strong",[e._v("money")]),e._v(" - decimal. Decimal, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("float")]),e._v(" - float64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("string")]),e._v(" - string, an empty string by default;")]),e._v(" "),a("li",[a("strong",[e._v("file")]),e._v(" - map[string]interface{}, an empty object array by default.")])]),e._v(" "),a("p",[e._v("These types of variables are defined with the "),a("code",[e._v("var")]),e._v(" keyword. For example, "),a("code",[e._v("var var1, var2 int")]),e._v(". When defined in this way, a variable will be assigned with a default value by type.")]),e._v(" "),a("p",[e._v("All variable values are of the interface{} type, and then they are assigned to the required golang types. Therefore, for example, array and map types are golang types []interface{} and map[string]interface{}. Both types of arrays can contain elements of any type.")]),e._v(" "),a("h3",{attrs:{id:"expressions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expressions"}},[e._v("#")]),e._v(" Expressions")]),e._v(" "),a("p",[e._v("An expression may include arithmetic operations, logical operations, and function calls. All expressions are evaluated from left to right by priority of operators. If having an equal priority, operators are evaluated from left to right.")]),e._v(" "),a("p",[e._v("Priority of operations from high to low:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Function call and parentheses")]),e._v(" - when a function is called, passed parameters will be calculated from left to right;")]),e._v(" "),a("li",[a("strong",[e._v("Unary Operation")]),e._v(" - logical negation "),a("code",[e._v("!")]),e._v(" and arithmetic sign change "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Multiplication and Division")]),e._v(" - arithmetic multiplication "),a("code",[e._v("*")]),e._v(" and division "),a("code",[e._v("/")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Addition and Subtraction")]),e._v(" - arithmetic addition "),a("code",[e._v("+")]),e._v(" and subtraction "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical comparison")]),e._v(" - "),a("code",[e._v(">=>> >=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical equality and inequality")]),e._v(" - "),a("code",[e._v("== !=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical AND")]),e._v(" - "),a("code",[e._v("&&")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical OR")]),e._v(" - "),a("code",[e._v("||")]),e._v(".")])]),e._v(" "),a("p",[e._v("When evaluating logical AND and OR, both sides of the expression are evaluated in any case.")]),e._v(" "),a("p",[e._v("Needle has no type checking during compilation. When evaluating operands, an attempt is made to convert the type to a more complex type. The type of complexity order can be as follows: "),a("code",[e._v("string, int, float, money")]),e._v(". Only part of the type conversions is implemented. The string type supports addition operations, and the result will be string concatenation. For example, "),a("code",[e._v("string + string = string, money-int = money, int * float = float")]),e._v(".")]),e._v(" "),a("p",[e._v("For functions, type checking is performed on the "),a("code",[e._v("string")]),e._v(" and "),a("code",[e._v("int")]),e._v(" types during execution.")]),e._v(" "),a("p",[a("strong",[e._v("array")]),e._v(" and "),a("strong",[e._v("map")]),e._v(" types can be addressed by index. For the "),a("strong",[e._v("array")]),e._v(" type, the "),a("strong",[e._v("int")]),e._v(" value must be specified as the index. For the "),a("strong",[e._v("map")]),e._v(" type, a variable or "),a("strong",[e._v("string")]),e._v(" value must be specified. If you assign a value to an "),a("strong",[e._v("array")]),e._v(" element whose index is greater than the current maximum index, an empty element will be added to the array. The initial value of these elements is "),a("strong",[e._v("nil")]),e._v(". For example: .. code:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('var my array\nmy[5] = 0\nvar mymap map\nmymap["index"] = my[3]\n')])])]),a("p",[e._v("In expressions of conditional logical values (such as "),a("code",[e._v("if, while, &&, ||, !")]),e._v("), the type is automatically converted to a logical value. If the type is not the default value, it is true.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var mymap map\nvar val string\nif mymap && val {\n...\n}\n")])])]),a("h3",{attrs:{id:"scope"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#scope"}},[e._v("#")]),e._v(" Scope")]),e._v(" "),a("p",[e._v("Braces specify a block that can contain local scope variables. By default, the scope of a variable extends to its own blocks and all nested blocks. In a block, you can define a new variable using the name of an existing variable. However, in this case, external variables with the same name become unavailable.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var a int\na = 3\n{\n var a int\n a = 4\n Println(a) // 4\n}\nPrintln(a) // 3\n")])])]),a("h3",{attrs:{id:"contract-execution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-execution"}},[e._v("#")]),e._v(" Contract execution")]),e._v(" "),a("p",[e._v("When calling a contract, parameters defined in "),a("strong",[e._v("data")]),e._v(" must be passed to it. Before executing a contract, the virtual machine receives these parameters and assigns them to the corresponding variables ($Param). Then, the predefined "),a("strong",[e._v("conditions")]),e._v(" function and "),a("strong",[e._v("action")]),e._v(" function are called.")]),e._v(" "),a("p",[e._v("Errors that occur during contract execution can be divided into two types: form errors and environment errors. Form errors are generated using special commands: "),a("code",[e._v("error, warning, info")]),e._v(" and when the built-in function returns "),a("code",[e._v("err")]),e._v(" not equal to "),a("em",[e._v("nil")]),e._v(".")]),e._v(" "),a("p",[e._v("The Needle language does not handle exceptions. Any error will terminate the execution of contracts. Since a separate stack and structure for saving variable values are created when a contract is executed, the golang garbage collection mechanism will automatically delete these data when a contract is executed.")]),e._v(" "),a("h3",{attrs:{id:"backus-naur-form-bnf"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backus-naur-form-bnf"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"backus-naur-form-bnf"}},[e._v("Backus–Naur Form (BNF)")])]),e._v(" "),a("p",[e._v("In computer science, BNF is a notation technique for context-free syntax and is usually used to describe the syntax of the language used in computing.")]),e._v(" "),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("''''''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] ]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("' | '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'A' |'B' | ... |'Z' |'a' |'b' | ... |'z' | 0x80 | 0x81 | ... | 0xFF\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x20'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x09'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x0D 0x0A'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'!' |'\"' |'$' |''' |'(' |')' |'\\*' |'+' |',' |'-' |'.' |'/ '|'<' |'=' |'>' |'[' |'\\\\' |']' |'_' |'|' |'}' | '{' | | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( |'_') { |'_' | }\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | |'!' |'#' | ... |'[' |']' | ...\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{ |'\\\"' |'\\n' |'\\r'}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'\"' {}'\"' |'\\`' {}'\\`'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'='\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'==' |'!=' |'>' |'<' |'<=' |'>=' |'&&' |'||' |'\\*' |'/' |'+ '|'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {','}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'(' []')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" [{'.' '(' []')'}]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'{''}'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( | | | | | break | continue | return)\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'if [else ]'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'while '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'contract '{'[] {} [] []'}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'data '{' {} '}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" '\"'{}'\"'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'optional | image | file | hidden | text | polymap | map | address | signature:'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'conditions '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'action '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'func '('[{','}]')'[{}] [] '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {',' } \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'.''('[{','}]')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'var {','}'\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/113.fe55a09e.js b/assets/js/113.fc4cffc4.js similarity index 97% rename from assets/js/113.fe55a09e.js rename to assets/js/113.fc4cffc4.js index fc80901..2dc61cf 100644 --- a/assets/js/113.fe55a09e.js +++ b/assets/js/113.fc4cffc4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{491:function(t,r,e){"use strict";e.r(r);var a=e(51),o=Object(a.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-dokumantasyon"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-dokumantasyon"}},[t._v("#")]),t._v(" IBAX Dokümantasyon")]),t._v(" "),e("h2",{attrs:{id:"konsept"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#konsept"}},[t._v("#")]),t._v(" Konsept")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html"}},[t._v("IBAX Genel Bakış")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/concepts/blockchain-layers.html"}},[t._v("The IBAX Network")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/concepts/consensus.html"}},[t._v("Proof-of-Authority Konsensüs")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/concepts/thesaurus.html"}},[t._v("Terimler ve tanımlar")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/concepts/faq.html"}},[t._v("SSS")])],1)]),t._v(" "),e("h2",{attrs:{id:"ogretici"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ogretici"}},[t._v("#")]),t._v(" Öğretici")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/tr-TR/tutorials/app_tutorial.html"}},[t._v("Uygulama geliştirme eğitimi")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),e("h2",{attrs:{id:"kılavuz"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kılavuz"}},[t._v("#")]),t._v(" Kılavuz")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html"}},[t._v("Akıllı Kontratlar")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html"}},[t._v("Şablon Dili")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/topics/vm.html"}},[t._v("Derleyici ve Sanal Makine")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/topics/daemons.html"}},[t._v("Daemon")])],1)]),t._v(" "),e("h2",{attrs:{id:"referans"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#referans"}},[t._v("#")]),t._v(" Referans")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/reference/platform-parameters.html"}},[t._v("Platform Parametreleri")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/reference/backend-config.html"}},[t._v("Sunucu yapılandırma dosyası")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/reference/desync_monitor.html"}},[t._v("Senkronize İzleme Aracı")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),e("h2",{attrs:{id:"dagıtım"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dagıtım"}},[t._v("#")]),t._v(" Dağıtım")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/tr-TR/howtos/deployment.html"}},[t._v("Bir IBAX Ağının Kurulması")])],1)])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{493:function(t,r,e){"use strict";e.r(r);var a=e(51),o=Object(a.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-dokumantasyon"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-dokumantasyon"}},[t._v("#")]),t._v(" IBAX Dokümantasyon")]),t._v(" "),e("h2",{attrs:{id:"konsept"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#konsept"}},[t._v("#")]),t._v(" Konsept")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html"}},[t._v("IBAX Genel Bakış")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/concepts/blockchain-layers.html"}},[t._v("The IBAX Network")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/concepts/consensus.html"}},[t._v("Proof-of-Authority Konsensüs")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/concepts/thesaurus.html"}},[t._v("Terimler ve tanımlar")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/concepts/faq.html"}},[t._v("SSS")])],1)]),t._v(" "),e("h2",{attrs:{id:"ogretici"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ogretici"}},[t._v("#")]),t._v(" Öğretici")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/tr-TR/tutorials/app_tutorial.html"}},[t._v("Uygulama geliştirme eğitimi")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),e("h2",{attrs:{id:"kılavuz"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kılavuz"}},[t._v("#")]),t._v(" Kılavuz")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html"}},[t._v("Akıllı Kontratlar")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html"}},[t._v("Şablon Dili")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/topics/vm.html"}},[t._v("Derleyici ve Sanal Makine")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/topics/daemons.html"}},[t._v("Daemon")])],1)]),t._v(" "),e("h2",{attrs:{id:"referans"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#referans"}},[t._v("#")]),t._v(" Referans")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/reference/platform-parameters.html"}},[t._v("Platform Parametreleri")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/reference/backend-config.html"}},[t._v("Sunucu yapılandırma dosyası")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/reference/desync_monitor.html"}},[t._v("Senkronize İzleme Aracı")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/tr-TR/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),e("h2",{attrs:{id:"dagıtım"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dagıtım"}},[t._v("#")]),t._v(" Dağıtım")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/tr-TR/howtos/deployment.html"}},[t._v("Bir IBAX Ağının Kurulması")])],1)])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/114.2d7b1c8b.js b/assets/js/114.59f7a81c.js similarity index 99% rename from assets/js/114.2d7b1c8b.js rename to assets/js/114.59f7a81c.js index ee88914..784d8b7 100644 --- a/assets/js/114.2d7b1c8b.js +++ b/assets/js/114.59f7a81c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{495:function(a,e,i){"use strict";i.r(e);var l=i(51),r=Object(l.a)({},(function(){var a=this,e=a.$createElement,i=a._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[i("h1",{attrs:{id:"ibax-genel-bakıs"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ibax-genel-bakıs"}},[a._v("#")]),a._v(" IBAX Genel Bakış")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Ibax-Genel-Bak%C4%B1%C5%9F"}},[a._v("IBAX Genel Bakış")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#%C3%B6zellikler"}},[a._v("Özellikler")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#mimari"}},[a._v("Mimari")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#a%C4%9F"}},[a._v("Ağ")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#honor-node"}},[a._v("Honor Node")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#%C4%B0%C5%9Flemler"}},[a._v("İşlemler")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#a%C4%9F-protokol%C3%BC"}},[a._v("Ağ protokolü")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#blok-ve-i%C5%9Flem-do%C4%9Frulama"}},[a._v("Blok ve işlem doğrulama")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#veri-taban%C4%B1"}},[a._v("Veri tabanı")])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#ecolib"}},[a._v("ECOLIB")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#ide"}},[a._v("IDE")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#uygulamalar"}},[a._v("Uygulamalar")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#tablolar"}},[a._v("Tablolar")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Ekosistem-Parametreleri"}},[a._v("Ekosistem Parametreleri")])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Eri%C5%9Fim-haklar%C4%B1-kontrol-mekanizmas%C4%B1"}},[a._v("Erişim hakları kontrol mekanizması")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Eri%C5%9Fim-haklar%C4%B1-y%C3%B6netimi"}},[a._v("Erişim hakları yönetimi")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#%C3%96zel-haklar"}},[a._v("Özel haklar")])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Sanal-%C3%B6zel-ekosistem"}},[a._v("Sanal özel ekosistem")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Web-kaynaklar%C4%B1na-y%C3%B6nelik-istekler"}},[a._v("Web kaynaklarına yönelik istekler")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Veri-okuma-haklar%C4%B1"}},[a._v("Veri okuma hakları")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#CLB-olu%C5%9Fturma"}},[a._v("CLB oluşturma")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#CLB-kullan%C4%B1m%C4%B1"}},[a._v("CLB kullanımı")])])])])])])]),a._v(" "),i("h2",{attrs:{id:"ozellikler"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ozellikler"}},[a._v("#")]),a._v(" Özellikler")]),a._v(" "),i("p",[a._v("IBAX Ağı (IBAX), entegre bir uygulama geliştirme ortamına (IDE) sahiptir. Veriler, kullanıcı sayfaları ve akıllı sözleşmeler için çok seviyeli bir erişim kontrol sistemidir.")]),a._v(" "),i("p",[a._v("Yapısı ve işlevleri açısından IBAX, mevcut çoğu blok zinciri platformundan oldukça farklıdır:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("IBAX uygulamalarının geliştirilmesi ve kullanımı, "),i("strong",[a._v("ekosistem")]),a._v(" adı verilen özerk bir yazılım ortamındadır. Her ekosistemin başlangıçta yaratıcı tarafından belirlenen kendi üyelik kuralları vardır;")])]),a._v(" "),i("li",[i("p",[i("font",{attrs:{color:"Red"}},[a._v("veritabanı tablosu")]),a._v(" kayıtlarında veya güncellemelerinde yer alan veriler gibi ekosistem faaliyetleri, "),i("strong",[a._v("akıllı sözleşmeler")]),a._v(" ile oluşturulan "),i("strong",[a._v("kayıtlara")]),a._v(" dayanmaktadır. Diğer blok zinciri platformlarının çoğunda, faaliyetler hesaplar arasındaki işlem alışverişine dayanır;")],1)]),a._v(" "),i("li",[i("p",[i("strong",[a._v("Kayıtlara")]),a._v(" erişim ve ekosistem üyeleri arasındaki ilişkilerin kontrolü, "),i("strong",[a._v("akıllı yasalar")]),a._v(" adı verilen bir dizi kural tarafından yönetilir.")])])]),a._v(" "),i("h2",{attrs:{id:"mimari"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#mimari"}},[a._v("#")]),a._v(" Mimari")]),a._v(" "),i("h3",{attrs:{id:"ag"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ag"}},[a._v("#")]),a._v(" Ağ")]),a._v(" "),i("p",[a._v("IBAX, eşler arası (P2P) bir ağ üzerine kurulmuştur.")]),a._v(" "),i("p",[a._v("Ağdaki koruyucu düğümler, IBAX'in blok zincirinin en son durumunu kaydeden blok zinciri veritabanının en son sürümünü depolar.")]),a._v(" "),i("p",[a._v("Ağ kullanıcıları, "),i("strong",[a._v("Weaver")]),a._v(" veya REST API komutları aracılığıyla koruyucu düğüm veritabanından istek göndererek veri alabilir. Kullanıcılar tarafından imzalandıktan sonra, yeni istekler ikili biçimde işlem olarak ağa gönderilir. Esasen, bu işlemler ilgili veritabanı kayıtlarını değiştirme komutlarıdır. İşlemler bloklar halinde toplanır ve bu bloklar tüm ağ düğümlerinin blok zincirlerine gönderilir. Her bir koruyucu düğüm, bloktaki işlemleri işleyecek ve böylece veritabanındaki ilgili verileri güncelleyecektir.")]),a._v(" "),i("h3",{attrs:{id:"honor-node"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[a._v("#")]),a._v(" Honor Node")]),a._v(" "),i("p",[a._v("Ağda yeni bloklar oluşturma ayrıcalığına sahip olan bir koruyucu düğüme Honor Node denir. Maksimum Honor Node sayısı, onur düğümlerinin sayısının sınırlı olduğunu gösteren platform parametreleri tablosunda no_of_nodes ile tanımlanır.")]),a._v(" "),i("p",[a._v("Bir Honor Node, IBAX Kamu Ağının temel bileşenlerinden biridir. İşlemleri yürütür ve doğrular, diğer düğümlerden işlem bilgilerini toplar, işlemleri kuyruğa ekler ve onay mekanizmasını kullanarak yeni blokların doğruluğunu ve geçerliliğini doğrular. Genellikle iki durumu vardır: paketleme ve paketleme.")]),a._v(" "),i("p",[a._v("Paketleme durumundaki bir Honor Node en yüksek performansı sunar. İşlem kuyruğundan yürütülecek işlem isteklerini alır ve işlemlerin imza geçerliliğini ve doğruluğunu doğrular, örn. transfer tutarı, işlem işlemleri için izin ve işlemlerin doğru yürütülmesi. Tüm parasal işlemler, doğru veya yanlış (yanlış işlemler geri alınacaktır), bloğa yazılacaktır. Yanlış işlemler cezai bir gaz ücretine tabi olacaktır. Gerçekleştirilen işlemler blok ile birlikte diğer Honor Node yayın yoluyla bildirilir.")]),a._v(" "),i("p",[a._v("Paketleme olmayan durumdaki bir Honor Node, paketleme düğümü tarafından oluşturulan blok içi işlemlerin doğru bir şekilde yürütülmesini sağlamak için temel olarak blok doğrulamasından sorumludur. Bir anormallik durumunda, istisna işleme mekanizmasını tetikler ve IBAX Ağı geri dönerek bloğu yeniden doğrular.")]),a._v(" "),i("p",[a._v("İşlem yürütme verimliliğini sağlamak için Honor Nodeları, işlem bilgilerini sürekli olarak toplar.")]),a._v(" "),i("h3",{attrs:{id:"islemler"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#islemler"}},[a._v("#")]),a._v(" İşlemler")]),a._v(" "),i("p",[i("strong",[a._v("Akıllı sözleşmeleri")]),a._v(" uygulamak için kullanılan veriler de dahil olmak üzere işlemler Weaver tarafından oluşturulur.")]),a._v(" "),i("p",[a._v("İşlemler, kullanıcılar tarafından özel bir anahtarla imzalanır. Özel anahtar ve Weaver'ın imza işlevi tarayıcılarda, yazılım istemcilerinde, SIM kartlarda veya özel fiziksel cihazlarda saklanabilir. Mevcut uygulamada, özel anahtar ECDSA algoritması ile şifrelenir ve Weaver tarafında saklanır. Tüm işlemler ECDSA algoritması ile imzalanır.")]),a._v(" "),i("p",[a._v("Bir işlemin yapısı aşağıdaki biçime uygundur:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Kimlik - uygulanan sözleşmenin kimliği;")])]),a._v(" "),i("li",[i("p",[a._v("Params - sözleşmeye gönderilen parametreler;")])]),a._v(" "),i("li",[i("p",[a._v("Anahtar Kimliği - İşlemi gönderen kullanıcının kimliği;")])]),a._v(" "),i("li",[i("p",[a._v("PublicKey - onur düğümünün genel anahtarı;")])]),a._v(" "),i("li",[i("p",[a._v("Zaman - işlem tarafından oluşturulan zaman damgası;")])]),a._v(" "),i("li",[i("p",[a._v("EcosystemID - İşlemin yapıldığı ekosistemin kimliği;")])]),a._v(" "),i("li",[i("p",[a._v("TokenEcosystem - Ekosistemin kimliği, varsayılan olarak 1 ve içindeki jetonlar, işlem maliyetlerini karşılamak için kullanılır.")])])]),a._v(" "),i("h3",{attrs:{id:"ag-protokolu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ag-protokolu"}},[a._v("#")]),a._v(" Ağ Protokolü")]),a._v(" "),i("p",[a._v("İşlemler, biçimlerin doğru olduğundan emin olmak için temel doğrulamaya tabi tutuldukları ve ardından kuyruğa eklendiği, kullanıcılar tarafından onur düğümlerine gönderilecek. İşlemler ayrıca ağdaki diğer onur düğümlerine gönderilir ve ilgili kuyruğa eklenir.")]),a._v(" "),i("p",[a._v("Bir honor node, "),i("strong",[a._v("full_nodes")]),a._v(" platform parametresi ve özel bir algoritma tarafından belirlenen belirli bir süre içinde yeni bloklar oluşturma ayrıcalığına sahiptir. Onur düğümleri, işlemleri kuyruklardan alır ve bunları blok oluşturucuya gönderir. Yeni bir blok oluştururken, bu bloktaki işlemler de işlenecektir: her işlem, işlem parametrelerine karşılık gelen sözleşmenin uygulandığı bir sanal makineye gönderilir, böylece veritabanındaki kayıtlar güncellenir.")]),a._v(" "),i("p",[a._v("Diğer ağlardaki diğer onur düğümlerine göndermeden önce hata olmadığından emin olmak için yeni bloklar doğrulanmalıdır.")]),a._v(" "),i("p",[a._v("Başka bir onur düğümü tarafından alındığında blok kuyruğuna ve doğrulamadan sonra, bloktaki işlemleri işlemek ve böylece veri tabanındaki kayıtları güncellemek için bulunduğu onur düğümünün blok zincirine yeni bir blok eklenecektir.")]),a._v(" "),i("h3",{attrs:{id:"blok-ve-islem-dogrulama"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#blok-ve-islem-dogrulama"}},[a._v("#")]),a._v(" Blok ve işlem doğrulama")]),a._v(" "),i("p",[a._v("Yeni bir blok oluşturduktan veya aldıktan sonra, aşağıdakileri kapsayan diğer tüm honor nodelarında doğrulanacaktır:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Alınan verinin ilk baytı 0 olmalıdır. Değilse, alınan veri blok olarak kabul edilmeyecektir;")])]),a._v(" "),i("li",[i("p",[a._v("Alınan blok oluşturma zaman damgası, geçerli zaman damgasından önce olmalıdır;")])]),a._v(" "),i("li",[i("p",[a._v("Blok oluşturma zaman damgası, onur düğümünün yeni bloklar oluşturma ayrıcalığına sahip olduğu zaman aralığına karşılık gelmelidir;")])]),a._v(" "),i("li",[i("p",[a._v("Yeni bir bloğun yüksekliği, mevcut blok zincirindeki en büyük bloğun yüksekliğinden daha büyük olmalıdır;")])]),a._v(" "),i("li",[i("p",[a._v("Bloktaki tüm işlemler için izin verilen maksimum harcamaları aşamaz;")])]),a._v(" "),i("li",[i("p",[a._v("Blok, bulunduğu düğümün gizli anahtarı ile uygun şekilde imzalanmalıdır. İmza verileri şunları içermelidir:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Bloğun yüksekliği, önceki bloğun hash'i, bloğun zaman damgası, bloğun bulunduğu ekosistemin kimliği ve bloğun onur düğümünün hesap adresi;")])]),a._v(" "),i("li",[i("p",[a._v("Platform parametresi full_nodes dizisindeki onur düğümünün konumu, bloktaki tüm işlemlerin Merkel Kökü (MrklRoot) ve önceki bloğun geri dönüş karması.")])])])])]),a._v(" "),i("p",[a._v("Bloktaki her işlemin doğruluğunu aşağıdaki yöntemlerle kontrol etmek için:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Her işlemin hash'i benzersiz olmalıdır;")])]),a._v(" "),i("li",[i("p",[a._v("Anahtar imzalı bir işlem sınırı aşamaz ("),i("RouterLink",{attrs:{to:"/tr-TR/reference/platform-parameters.html#max-tx-block-per-user"}},[a._v("max_tx_block_per_user")]),a._v(");")],1)]),a._v(" "),i("li",[i("p",[a._v("Maksimum işlem boyutu sınırını aşamaz ("),i("RouterLink",{attrs:{to:"/tr-TR/reference/platform-parameters.html#max-tx-size"}},[a._v("max_tx_size")]),a._v(");")],1)]),a._v(" "),i("li",[i("p",[a._v("İşlem süresi, blok oluşturma süresinden daha büyük veya blok oluşturma süresi artı 600 saniyeden daha büyük olamaz ve blok oluşturma süresi eksi 86400 saniyeden daha az olamaz;")])]),a._v(" "),i("li",[i("p",[a._v("İşlem düzgün bir şekilde imzalanmalıdır;")])]),a._v(" "),i("li",[i("p",[a._v("Sözleşmeyi uygulayan kullanıcının işlem bedelini ödemesi için hesabında yeterli token olması gerekir.")])])]),a._v(" "),i("h3",{attrs:{id:"veri-tabanı"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#veri-tabanı"}},[a._v("#")]),a._v(" Veri tabanı")]),a._v(" "),i("p",[a._v("IBAX Ağının temel veri depolama katmanı, tamamen halka açık bir 'PGSQL' veritabanıdır. IBAX İşletim Sistemi Platformunun izin tasarımına dayalı olarak, kullanıcıların veri güvenliği konusunda endişelenmesine gerek yoktur. Nesne yönelimli tasarım felsefesi ile IBAX Ağı, verileri ilişkisel bir PGSQL veritabanı aracılığıyla önceden derler ve veri işleme verimliliğini artırır.")]),a._v(" "),i("p",[a._v("Teknik bir uzmansanız aşağıdakiler ilginizi çekebilir veya değilseniz sadece atlayabilirsiniz.\n① Adında sayı öneki olmayan tüm tablolar, IBAX Network Basic'in izin tablolarına aittir;\n② Adında bir sayı öneki olan tüm tablolar ecoLibs'in izin tablolarına aittir.")]),a._v(" "),i("h2",{attrs:{id:"ecolib"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[a._v("#")]),a._v(" ECOLIB")]),a._v(" "),i("p",[a._v("Kullanıcılar, hatta sıradan kullanıcılar için IBAX Ağ Sistemi Platformunda kendilerine ait bir ecoLib oluşturmak oldukça kolaydır. ecoLib oluşturmanın tek bir tıklamayla gerçekleştiği bir uygulamayı entegre ettik ve geliştirdik.")]),a._v(" "),i("p",[a._v("Bir ecoLib oluştururken, ekosistem parametrelerini ve kurallarını yapılandırabilir ve yönetici hesabını ve ücretlendirme modelini ayarlayabilirsiniz. En önemlisi, DPoA fikir birliğini ecoLibs içinde daha iyi uygulamak için, içerik oluşturucular bunu kendi sözleşmelerini yazarak veya içe aktararak kurabilirler.")]),a._v(" "),i("p",[a._v("Sözleşme şablonlarını içe aktararak ecoLib belirteçlerinin hızla yayılmasını destekliyoruz.")]),a._v(" "),i("p",[a._v("Konsensüs ve yönetim izinlerindeki farklılıklar nedeniyle, ecoLib'ler merkezi olmayan ve merkezi olmayanlara ayrılır. Türlerine göre belirli bir avantaj veya dezavantajı yoktur. Servis ihtiyaçlarınıza uygun olanı seçmelisiniz. Şimdilik iyiyse ama gelecek için değilse ne yapmalı? IBAX Ağ Sistemi Platformunda ecoLib parametrelerini, hatta mutabakat mekanizmasını, belirteci ve yönetişim yöntemini değiştirebilirsiniz. Her şeyi ecoLib yöneticisi veya üyeleri (ecoLib türüne bağlı olarak) tarafından sağlanan öz-yönetim mekanizmasına bırakabilirsiniz.")]),a._v(" "),i("p",[a._v("IBAX Ağ Sistemi Platformunda, bir ecoLib, bağımsız veritabanı tabloları ve alanları tasarlamak ve bunlara erişmek için eksiksiz veri kontrol izinlerine ve izinlerine sahiptir. Veri denetimi izin tasarımında, bir alan mantıksal bir ifadeyi karşıladığında tetiklemeyi destekleriz. Bu özellik, izleme, mantıksal tatmin ve zamana ve belirli koşullara göre tetikleme gibi özel hizmetlerde hayal gücü alanı sağlar.")]),a._v(" "),i("p",[a._v("Bir ecoLib'de birden fazla DApp olabilir ve bunların her birinin bağımsız parametreleri olabilir. ecoLib, istediğiniz her şeyi uygulayabileceğiniz bir platform gibidir.")]),a._v(" "),i("p",[a._v("Ekosistem geliştiricilerini daha iyi desteklemek için Weaver düzenleme, yönetim ve geliştirme aracını sağlıyoruz. Ekosistem geliştirme, bakım ve yönetim maliyetlerini büyük ölçüde azaltacaktır.")]),a._v(" "),i("h3",{attrs:{id:"ide"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[a._v("#")]),a._v(" IDE")]),a._v(" "),i("p",[a._v("Weaver, yazılım geliştiricilerin blok zinciri teknolojisini derinlemesine anlamalarını gerektirmeyen blok zinciri uygulamaları oluşturmak için eksiksiz bir entegre geliştirme ortamına (IDE) sahiptir.")]),a._v(" "),i("p",[a._v("Weaver, herhangi bir yazılım modülünün desteği olmadan ekosistemde uygulamalar oluşturmak için gereken bir tablo yönetim aracı, sözleşme düzenleyici, sayfa düzenleyici ve diğer işlevleri sağlar.")]),a._v(" "),i("p",[a._v("IDE temel olarak aşağıdaki bölümleri içerir:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("ekosistem parametrelerinin listesi;")])]),a._v(" "),i("li",[i("p",[a._v("sözleşme editörü;")])]),a._v(" "),i("li",[i("p",[a._v("tablo yönetim aracı;")])]),a._v(" "),i("li",[i("p",[a._v("sayfa editörü ve görsel sayfa tasarımcısı;")])]),a._v(" "),i("li",[i("p",[a._v("çoklu dil kaynakları düzenleyicisi;")])]),a._v(" "),i("li",[i("p",[a._v("uygulama içe/dışa aktarma işlevleri.")])])]),a._v(" "),i("h3",{attrs:{id:"uygulamalar"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#uygulamalar"}},[a._v("#")]),a._v(" Uygulamalar")]),a._v(" "),i("p",[a._v('Bir uygulama, yapılandırma için erişim haklarına sahip veritabanı tabloları, akıllı sözleşmeler ve kullanıcı sayfaları gibi bir öğeler topluluğudur. Uygulama öğesinin ait olduğu ekosistem, "@1ElementName" gibi öğe adındaki önekle belirtilir; burada ekosistem kimliği, "@" simgesinden sonra "1" sayısıyla belirtilir. Mevcut ekosistemdeki uygulama öğelerini kullanırken "@1" öneki atlanabilir. Bu uygulamalar, faydalı işlevleri yerine getirebilir veya çeşitli hizmetleri uygulayabilir.')]),a._v(" "),i("h3",{attrs:{id:"tablolar"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tablolar"}},[a._v("#")]),a._v(" Tablolar")]),a._v(" "),i("p",[a._v("IBAX'ın veritabanında, her ekosistem sınırsız sayıda tablo oluşturabilir. Belirli bir ekosistemin tabloları, Weaver'da görüntülenmeyecek olan ekosistem kimliğini içeren bir ön ek ile tanımlanabilir.")]),a._v(" "),i("p",[a._v("Bir masa hiçbir şekilde bağlı değildir ve belirli bir sözleşmeye aittir. Tablonun erişim hakları kapsamındaki tüm uygulamalar tarafından kullanılabilir.")]),a._v(" "),i("p",[a._v("Her ekosistem, uygulamalarını geliştirmek için bir dizi veri tablosu oluşturabilir veya muhtemelen, tablo adı önekini belirterek diğer ekosistemlerin veri tablolarına erişebilir.")]),a._v(" "),i("p",[a._v("Akıllı yasalar aracılığıyla erişim haklarını yapılandırarak, veriler tablolara kaydedilir. Hak yönetimi için akıllı yasalar kullanılır.")]),a._v(" "),i("blockquote",[i("p",[a._v("Tablo tablo yönetim aracı")])]),a._v(" "),i("p",[a._v("Tablo yönetimi aracını, analiz cihazı tablosunu listele:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Tabloların listesini ve girişlerini görüntüleyin;")])]),a._v(" "),i("li",[i("p",[a._v("Yeni tablolar oluşturun;")])]),a._v(" "),i("li",[i("p",[a._v("Bir tablo alanı ekleyin ve "),i("code",[a._v("Text, Date/Time, Varchar, Character, JSON, Number, Money, Double, Binary")]),a._v(" gibi veri tipini belirtin;")])]),a._v(" "),i("li",[i("p",[a._v("Ekleme, güncelleme verileri ve tablo yapısını değiştirme ayrıcalıklarını yönetin.")])])]),a._v(" "),i("blockquote",[i("p",[a._v("Tablo veri işleme")])]),a._v(" "),i("p",[a._v("Daha iyi veritabanı işlemesi için hem Needle hem de Logicor, tablolardan değerleri ve veri dizilerini almak için kullanılan "),i("strong",[a._v("DBFind")]),a._v(" işlevine sahiptir.")]),a._v(" "),i("p",[a._v("Sözleşme dili "),i("strong",[a._v("DBInsert")]),a._v(" işlevi tablolara giriş eklemek için kullanılır. "),i("strong",[a._v("DBUpdate")]),a._v(" ve "),i("strong",[a._v("DBUpdateExt")]),a._v(" işlevleri, mevcut bir girdinin değerini güncellemek için kullanılır. Güncelleme sırasında tablolardaki ilgili veriler güncellenecek ve blok zinciri tüm geçmiş işlemleri korurken yeni işlemler ekleyecektir. Tablolardaki veriler yalnızca değiştirilebilir ve silinemez.")]),a._v(" "),i("p",[a._v("Sözleşme uygulama süresini en aza indirmek için "),i("strong",[a._v("DBFind")]),a._v(" işlevi aynı anda birden çok tabloyu sorgulayamaz ve JOIN desteklenmez. Bu nedenle, uygulama tablolarını normalleştirmemeyi, mevcut tüm bilgileri girişlerde saklamanızı veya diğer tablolarda bulunan bilgileri tekrarlamanızı öneririz. Bu zorunlu değildir ancak bir blockchain uygulaması için gereklidir. Bu durumda veriler, ilişkisel bir veritabanında eşzamanlı olarak güncellenmesine rağmen, diğer tablolardaki aynı veriler güncellense bile güncellenemeyecek şekilde tam olarak saklanmalıdır.")]),a._v(" "),i("h3",{attrs:{id:"ekosistem-parametreleri"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ekosistem-parametreleri"}},[a._v("#")]),a._v(" Ekosistem Parametreleri")]),a._v(" "),i("p",[a._v("Weaver'ın menüsünde ekosistem parametrelerinin ("),i("strong",[a._v("1_parameters")]),a._v(") listesini görüntüleyebilir ve düzenleyebilirsiniz. Ekosistem parametreleri aşağıdaki gruplara ayrılabilir:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Genel parametreler: ekosistemi oluşturanın hesabı (kurucu_hesap) ve diğer bilgiler;")])]),a._v(" "),i("li",[i("p",[a._v("Erişim hakları parametreleri: uygulama öğeleri için erişim izinlerini tanımlamak için kullanılır")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("tablo yapısını değiştirin (değişen_tablolar);")])]),a._v(" "),i("li",[i("p",[a._v("sözleşmeyi değiştirin (değişen_sözleşmeler);")])]),a._v(" "),i("li",[i("p",[a._v("kullanıcı sayfasını değiştir (değişen_sayfa);")])]),a._v(" "),i("li",[i("p",[a._v("menüyü değiştir (change_menu);")])]),a._v(" "),i("li",[i("p",[a._v("çoklu dil kaynaklarını değiştirin (değişen_dil).")])])])]),a._v(" "),i("li",[i("p",[a._v("Teknik parametreler: kullanıcı stillerini (stil sayfası) tanımlamak için kullanılır;")])]),a._v(" "),i("li",[i("p",[a._v("Kullanıcı parametreleri: uygulama çalışması için gerekli sabitleri veya listeleri (virgülle ayrılmış) tanımlamak için kullanılır.")])])]),a._v(" "),i("p",[a._v("Her ekosistemin parametreleri için düzenleme izni belirtebilirsiniz.")]),a._v(" "),i("p",[a._v("Ekosistem parametre başlığını parametre olarak geçirerek bir ekosistem parametresinin değerini almak için EcosysParam işlevini kullanabilirsiniz.")]),a._v(" "),i("h2",{attrs:{id:"erisim-hakları-kontrol-mekanizması"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#erisim-hakları-kontrol-mekanizması"}},[a._v("#")]),a._v(" Erişim hakları kontrol mekanizması")]),a._v(" "),i("p",[a._v("IBAX, çok seviyeli bir erişim izni yönetim sistemine sahiptir. Erişim haklarını yapılandırarak sözleşmeler, tablolar, kullanıcı sayfaları, ekosistem parametreleri gibi herhangi bir uygulama öğesini oluşturabilir ve değiştirebilirsiniz. Erişim haklarını yapılandırma yoluyla da değiştirebilirsiniz.")]),a._v(" "),i("p",[a._v("Varsayılan olarak, IBAX ekosistemindeki tüm haklar, her ekosistemin MainCondition sözleşmesinde tanımlanan yaratıcısı tarafından yönetilir. Ancak akıllı yasalar oluşturulduktan sonra erişim kontrolü, ekosistem üyelerinin tümüne veya bir grubuna aktarılabilir.\nErişim hakları kontrolü")]),a._v(" "),i("p",[a._v("Erişim hakları sözleşme tablolarında ("),i("strong",[a._v("1_contracts")]),a._v(" ), veri tablolarında ("),i("strong",[a._v("1_tables")]),a._v(" ), kullanıcı sayfası tablolarında ("),i("strong",[a._v("1_pages")]),a._v(" ), menü tablolarında ("),i("strong",[a._v("1_menu")]),a._v(" ) ve kod bloğunda tanımlanır. tablolar ("),i("strong",[a._v("1_blocks")]),a._v(" ). İlgili menüleri Weaver'da bulabilirsiniz.")]),a._v(" "),i("h3",{attrs:{id:"erisim-hakları-yonetimi"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#erisim-hakları-yonetimi"}},[a._v("#")]),a._v(" Erişim hakları yönetimi")]),a._v(" "),i("p",[a._v("Erişim hakları kuralları, ilgili sözleşme ifadeleri "),i("strong",[a._v("ContractConditions(“@1MainCondition”)")]),a._v(", "),i("strong",[a._v("ContractAccess(“@1MainCondition”)")]),a._v(" veya izin alanındaki mantıksal ifadeler doldurularak yapılandırılır. İstek ifadesinin sonucu (true) geçerse, erişim verilir. Aksi takdirde erişim reddedilir ve ilgili işlemler sonlandırılır.")]),a._v(" "),i("p",[a._v('Hakları tanımlamanın kolay yolu, sağdaki alana mantıksal bir ifade girmektir. Örneğin, "$key_id == 8919730491904441614", burada '),i("strong",[a._v("$keyid")]),a._v(" bir ekosistem üyesinin kimliğini temsil eder.")]),a._v(" "),i("p",[a._v("Hakları tanımlamanın en yaygın ve önerilen yolu, "),i("code",[a._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),a._v(" işlevini kullanmaktır. Sözleşme adı "),i("strong",[a._v("SözleşmeAdı")]),a._v(", işleve bir parametre olarak iletilir ve sözleşme sonucu, mantıksal bir ifadenin (doğru veya yanlış) sonucu olmalıdır.")]),a._v(" "),i("p",[a._v("Hakları tanımlamanın başka bir yolu da "),i("code",[a._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),a._v(" işlevini kullanmaktır. İlgili işlemi uygulamaya uygun "),i("strong",[a._v("SözleşmeAdı")]),a._v(" sözleşmesi, işleve parametre olarak geçirilebilir. Örneğin, tutar sütununun sağ alanı "),i("code",[a._v('ContractAccess("@1TokenTransfer")')]),a._v(" olarak yapılandırılmışsa, o zaman yalnızca tutar sütunundaki değeri değiştirmek istiyorsanız "),i("strong",[a._v("@1TokenTransfer")]),a._v(" sözleşmesini uygulayabilirsiniz. Sözleşmeye erişim hakkı, oldukça karmaşık olan ve birçok başka sözleşmeyi içerebilen koşullar bölümünde yönetilebilir.")]),a._v(" "),i("h3",{attrs:{id:"ozel-haklar"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ozel-haklar"}},[a._v("#")]),a._v(" Özel haklar")]),a._v(" "),i("p",[a._v("Bir ekosistemin çalışması için kritik olan acil durumlar veya durumlar durumunda, ekosistem parametreleri ("),i("strong",[a._v("1_parameters")]),a._v(") listesinde (örneğin "),i("em",[a._v("değişen_sözleşmeler")]),a._v(", "),i("em",[a._v("sayfalarıdeğiştiren")]),a._v("), vb. birçok özel parametre vardır. mevcut ekosistemin tüm sözleşmelerine, veri tablolarına ve sayfalarına erişim haklarını tanımlar. Bu haklar, anahtar sözleşmelerle yapılandırılır.")]),a._v(" "),i("h2",{attrs:{id:"sanal-ozel-ekosistem"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#sanal-ozel-ekosistem"}},[a._v("#")]),a._v(" Sanal özel ekosistem")]),a._v(" "),i("p",[a._v("IBAX'te sanal bir özel ekosistem oluşturabilirsiniz - "),i("strong",[a._v("Çapraz Defterler Tabanı (CLB)")]),a._v(". Bir CLB, standart ekosistemin tüm işlevlerine sahiptir, ancak blok zincirinin dışında çalışır. CLB'de sözleşmeleri ve şablon dillerini, tabloları kullanabilir ve oluşturabilir ve uygulamalar oluşturmak için Weaver'ı kullanabilirsiniz. API aracılığıyla blockchain ekosistemindeki sözleşmeleri arayabilirsiniz.")]),a._v(" "),i("h3",{attrs:{id:"web-kaynaklarına-yonelik-istekler"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#web-kaynaklarına-yonelik-istekler"}},[a._v("#")]),a._v(" Web kaynaklarına yönelik istekler")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",[i("code",[a._v("CLB ile standart ekosistem arasındaki temel fark, sözleşme işlevlerini ([HTTPRequest](../topics/script.md#httprequest)) ve ([HTTPPostJSON](../topics/script.md#httppostjson) kullanabilmenizdir. )) sözleşme kapsamındaki herhangi bir web kaynağını HTTP/HTTPS istekleri aracılığıyla talep etmek. Bu işleve iletilen parametreler şunları içerir: URL'ler, istek yöntemleri (GET veya POST), istek başlıkları ve istek parametreleri.\n")])])]),i("h3",{attrs:{id:"veri-okuma-hakları"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#veri-okuma-hakları"}},[a._v("#")]),a._v(" Veri okuma hakları")]),a._v(" "),i("p",[a._v("Okunabilir olmasına rağmen, CLB'deki veriler blok zincirine kaydedilmez. Veritabanı tablolarına okuma izni vermeyi seçebilirsiniz. Ayrı sütunlar için veya özel bir sözleşme kullanarak herhangi bir satır için okuma hakları ayarlayabilirsiniz.")]),a._v(" "),i("h3",{attrs:{id:"clb-olusturma"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#clb-olusturma"}},[a._v("#")]),a._v(" CLB oluşturma")]),a._v(" "),i("p",[a._v("Ağ üzerinde bir CLB düğümü oluşturabilirsiniz. Önceden tanımlandığı gibi, CLB düğüm yöneticisi, ekosistem listesini CLB işleviyle kullanma ve uygulamaları yüklemek, yeni üyeler almak ve kaynaklara erişim izinlerini yapılandırmak için ekosistem oluşturucu ayrıcalıklarına sahip bir kullanıcı belirleme ayrıcalığına sahiptir.")]),a._v(" "),i("h3",{attrs:{id:"clb-kullanımı"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#clb-kullanımı"}},[a._v("#")]),a._v(" CLB kullanımı")]),a._v(" "),i("p",[a._v("Kayıt formları oluşturmak, kullanıcılara e-posta veya telefon yoluyla doğrulama bilgileri göndermek ve herkesin erişebileceği verileri depolamak için bir CLB kullanabilirsiniz. Uygulamaları yazıp test edebilir ve ardından bunları blok zinciri ekosistemine aktarabilirsiniz. Bir CLB'de, zamanlama sözleşmesi görevlerini kullanabilir, web kaynaklarından veri almak için oracle makineleri oluşturabilir ve bu verileri blok zinciri ekosistemine gönderebilirsiniz.")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{494:function(a,e,i){"use strict";i.r(e);var l=i(51),r=Object(l.a)({},(function(){var a=this,e=a.$createElement,i=a._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[i("h1",{attrs:{id:"ibax-genel-bakıs"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ibax-genel-bakıs"}},[a._v("#")]),a._v(" IBAX Genel Bakış")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Ibax-Genel-Bak%C4%B1%C5%9F"}},[a._v("IBAX Genel Bakış")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#%C3%B6zellikler"}},[a._v("Özellikler")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#mimari"}},[a._v("Mimari")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#a%C4%9F"}},[a._v("Ağ")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#honor-node"}},[a._v("Honor Node")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#%C4%B0%C5%9Flemler"}},[a._v("İşlemler")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#a%C4%9F-protokol%C3%BC"}},[a._v("Ağ protokolü")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#blok-ve-i%C5%9Flem-do%C4%9Frulama"}},[a._v("Blok ve işlem doğrulama")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#veri-taban%C4%B1"}},[a._v("Veri tabanı")])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#ecolib"}},[a._v("ECOLIB")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#ide"}},[a._v("IDE")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#uygulamalar"}},[a._v("Uygulamalar")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#tablolar"}},[a._v("Tablolar")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Ekosistem-Parametreleri"}},[a._v("Ekosistem Parametreleri")])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Eri%C5%9Fim-haklar%C4%B1-kontrol-mekanizmas%C4%B1"}},[a._v("Erişim hakları kontrol mekanizması")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Eri%C5%9Fim-haklar%C4%B1-y%C3%B6netimi"}},[a._v("Erişim hakları yönetimi")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#%C3%96zel-haklar"}},[a._v("Özel haklar")])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Sanal-%C3%B6zel-ekosistem"}},[a._v("Sanal özel ekosistem")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Web-kaynaklar%C4%B1na-y%C3%B6nelik-istekler"}},[a._v("Web kaynaklarına yönelik istekler")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Veri-okuma-haklar%C4%B1"}},[a._v("Veri okuma hakları")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#CLB-olu%C5%9Fturma"}},[a._v("CLB oluşturma")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#CLB-kullan%C4%B1m%C4%B1"}},[a._v("CLB kullanımı")])])])])])])]),a._v(" "),i("h2",{attrs:{id:"ozellikler"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ozellikler"}},[a._v("#")]),a._v(" Özellikler")]),a._v(" "),i("p",[a._v("IBAX Ağı (IBAX), entegre bir uygulama geliştirme ortamına (IDE) sahiptir. Veriler, kullanıcı sayfaları ve akıllı sözleşmeler için çok seviyeli bir erişim kontrol sistemidir.")]),a._v(" "),i("p",[a._v("Yapısı ve işlevleri açısından IBAX, mevcut çoğu blok zinciri platformundan oldukça farklıdır:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("IBAX uygulamalarının geliştirilmesi ve kullanımı, "),i("strong",[a._v("ekosistem")]),a._v(" adı verilen özerk bir yazılım ortamındadır. Her ekosistemin başlangıçta yaratıcı tarafından belirlenen kendi üyelik kuralları vardır;")])]),a._v(" "),i("li",[i("p",[i("font",{attrs:{color:"Red"}},[a._v("veritabanı tablosu")]),a._v(" kayıtlarında veya güncellemelerinde yer alan veriler gibi ekosistem faaliyetleri, "),i("strong",[a._v("akıllı sözleşmeler")]),a._v(" ile oluşturulan "),i("strong",[a._v("kayıtlara")]),a._v(" dayanmaktadır. Diğer blok zinciri platformlarının çoğunda, faaliyetler hesaplar arasındaki işlem alışverişine dayanır;")],1)]),a._v(" "),i("li",[i("p",[i("strong",[a._v("Kayıtlara")]),a._v(" erişim ve ekosistem üyeleri arasındaki ilişkilerin kontrolü, "),i("strong",[a._v("akıllı yasalar")]),a._v(" adı verilen bir dizi kural tarafından yönetilir.")])])]),a._v(" "),i("h2",{attrs:{id:"mimari"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#mimari"}},[a._v("#")]),a._v(" Mimari")]),a._v(" "),i("h3",{attrs:{id:"ag"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ag"}},[a._v("#")]),a._v(" Ağ")]),a._v(" "),i("p",[a._v("IBAX, eşler arası (P2P) bir ağ üzerine kurulmuştur.")]),a._v(" "),i("p",[a._v("Ağdaki koruyucu düğümler, IBAX'in blok zincirinin en son durumunu kaydeden blok zinciri veritabanının en son sürümünü depolar.")]),a._v(" "),i("p",[a._v("Ağ kullanıcıları, "),i("strong",[a._v("Weaver")]),a._v(" veya REST API komutları aracılığıyla koruyucu düğüm veritabanından istek göndererek veri alabilir. Kullanıcılar tarafından imzalandıktan sonra, yeni istekler ikili biçimde işlem olarak ağa gönderilir. Esasen, bu işlemler ilgili veritabanı kayıtlarını değiştirme komutlarıdır. İşlemler bloklar halinde toplanır ve bu bloklar tüm ağ düğümlerinin blok zincirlerine gönderilir. Her bir koruyucu düğüm, bloktaki işlemleri işleyecek ve böylece veritabanındaki ilgili verileri güncelleyecektir.")]),a._v(" "),i("h3",{attrs:{id:"honor-node"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[a._v("#")]),a._v(" Honor Node")]),a._v(" "),i("p",[a._v("Ağda yeni bloklar oluşturma ayrıcalığına sahip olan bir koruyucu düğüme Honor Node denir. Maksimum Honor Node sayısı, onur düğümlerinin sayısının sınırlı olduğunu gösteren platform parametreleri tablosunda no_of_nodes ile tanımlanır.")]),a._v(" "),i("p",[a._v("Bir Honor Node, IBAX Kamu Ağının temel bileşenlerinden biridir. İşlemleri yürütür ve doğrular, diğer düğümlerden işlem bilgilerini toplar, işlemleri kuyruğa ekler ve onay mekanizmasını kullanarak yeni blokların doğruluğunu ve geçerliliğini doğrular. Genellikle iki durumu vardır: paketleme ve paketleme.")]),a._v(" "),i("p",[a._v("Paketleme durumundaki bir Honor Node en yüksek performansı sunar. İşlem kuyruğundan yürütülecek işlem isteklerini alır ve işlemlerin imza geçerliliğini ve doğruluğunu doğrular, örn. transfer tutarı, işlem işlemleri için izin ve işlemlerin doğru yürütülmesi. Tüm parasal işlemler, doğru veya yanlış (yanlış işlemler geri alınacaktır), bloğa yazılacaktır. Yanlış işlemler cezai bir gaz ücretine tabi olacaktır. Gerçekleştirilen işlemler blok ile birlikte diğer Honor Node yayın yoluyla bildirilir.")]),a._v(" "),i("p",[a._v("Paketleme olmayan durumdaki bir Honor Node, paketleme düğümü tarafından oluşturulan blok içi işlemlerin doğru bir şekilde yürütülmesini sağlamak için temel olarak blok doğrulamasından sorumludur. Bir anormallik durumunda, istisna işleme mekanizmasını tetikler ve IBAX Ağı geri dönerek bloğu yeniden doğrular.")]),a._v(" "),i("p",[a._v("İşlem yürütme verimliliğini sağlamak için Honor Nodeları, işlem bilgilerini sürekli olarak toplar.")]),a._v(" "),i("h3",{attrs:{id:"islemler"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#islemler"}},[a._v("#")]),a._v(" İşlemler")]),a._v(" "),i("p",[i("strong",[a._v("Akıllı sözleşmeleri")]),a._v(" uygulamak için kullanılan veriler de dahil olmak üzere işlemler Weaver tarafından oluşturulur.")]),a._v(" "),i("p",[a._v("İşlemler, kullanıcılar tarafından özel bir anahtarla imzalanır. Özel anahtar ve Weaver'ın imza işlevi tarayıcılarda, yazılım istemcilerinde, SIM kartlarda veya özel fiziksel cihazlarda saklanabilir. Mevcut uygulamada, özel anahtar ECDSA algoritması ile şifrelenir ve Weaver tarafında saklanır. Tüm işlemler ECDSA algoritması ile imzalanır.")]),a._v(" "),i("p",[a._v("Bir işlemin yapısı aşağıdaki biçime uygundur:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Kimlik - uygulanan sözleşmenin kimliği;")])]),a._v(" "),i("li",[i("p",[a._v("Params - sözleşmeye gönderilen parametreler;")])]),a._v(" "),i("li",[i("p",[a._v("Anahtar Kimliği - İşlemi gönderen kullanıcının kimliği;")])]),a._v(" "),i("li",[i("p",[a._v("PublicKey - onur düğümünün genel anahtarı;")])]),a._v(" "),i("li",[i("p",[a._v("Zaman - işlem tarafından oluşturulan zaman damgası;")])]),a._v(" "),i("li",[i("p",[a._v("EcosystemID - İşlemin yapıldığı ekosistemin kimliği;")])]),a._v(" "),i("li",[i("p",[a._v("TokenEcosystem - Ekosistemin kimliği, varsayılan olarak 1 ve içindeki jetonlar, işlem maliyetlerini karşılamak için kullanılır.")])])]),a._v(" "),i("h3",{attrs:{id:"ag-protokolu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ag-protokolu"}},[a._v("#")]),a._v(" Ağ Protokolü")]),a._v(" "),i("p",[a._v("İşlemler, biçimlerin doğru olduğundan emin olmak için temel doğrulamaya tabi tutuldukları ve ardından kuyruğa eklendiği, kullanıcılar tarafından onur düğümlerine gönderilecek. İşlemler ayrıca ağdaki diğer onur düğümlerine gönderilir ve ilgili kuyruğa eklenir.")]),a._v(" "),i("p",[a._v("Bir honor node, "),i("strong",[a._v("full_nodes")]),a._v(" platform parametresi ve özel bir algoritma tarafından belirlenen belirli bir süre içinde yeni bloklar oluşturma ayrıcalığına sahiptir. Onur düğümleri, işlemleri kuyruklardan alır ve bunları blok oluşturucuya gönderir. Yeni bir blok oluştururken, bu bloktaki işlemler de işlenecektir: her işlem, işlem parametrelerine karşılık gelen sözleşmenin uygulandığı bir sanal makineye gönderilir, böylece veritabanındaki kayıtlar güncellenir.")]),a._v(" "),i("p",[a._v("Diğer ağlardaki diğer onur düğümlerine göndermeden önce hata olmadığından emin olmak için yeni bloklar doğrulanmalıdır.")]),a._v(" "),i("p",[a._v("Başka bir onur düğümü tarafından alındığında blok kuyruğuna ve doğrulamadan sonra, bloktaki işlemleri işlemek ve böylece veri tabanındaki kayıtları güncellemek için bulunduğu onur düğümünün blok zincirine yeni bir blok eklenecektir.")]),a._v(" "),i("h3",{attrs:{id:"blok-ve-islem-dogrulama"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#blok-ve-islem-dogrulama"}},[a._v("#")]),a._v(" Blok ve işlem doğrulama")]),a._v(" "),i("p",[a._v("Yeni bir blok oluşturduktan veya aldıktan sonra, aşağıdakileri kapsayan diğer tüm honor nodelarında doğrulanacaktır:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Alınan verinin ilk baytı 0 olmalıdır. Değilse, alınan veri blok olarak kabul edilmeyecektir;")])]),a._v(" "),i("li",[i("p",[a._v("Alınan blok oluşturma zaman damgası, geçerli zaman damgasından önce olmalıdır;")])]),a._v(" "),i("li",[i("p",[a._v("Blok oluşturma zaman damgası, onur düğümünün yeni bloklar oluşturma ayrıcalığına sahip olduğu zaman aralığına karşılık gelmelidir;")])]),a._v(" "),i("li",[i("p",[a._v("Yeni bir bloğun yüksekliği, mevcut blok zincirindeki en büyük bloğun yüksekliğinden daha büyük olmalıdır;")])]),a._v(" "),i("li",[i("p",[a._v("Bloktaki tüm işlemler için izin verilen maksimum harcamaları aşamaz;")])]),a._v(" "),i("li",[i("p",[a._v("Blok, bulunduğu düğümün gizli anahtarı ile uygun şekilde imzalanmalıdır. İmza verileri şunları içermelidir:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Bloğun yüksekliği, önceki bloğun hash'i, bloğun zaman damgası, bloğun bulunduğu ekosistemin kimliği ve bloğun onur düğümünün hesap adresi;")])]),a._v(" "),i("li",[i("p",[a._v("Platform parametresi full_nodes dizisindeki onur düğümünün konumu, bloktaki tüm işlemlerin Merkel Kökü (MrklRoot) ve önceki bloğun geri dönüş karması.")])])])])]),a._v(" "),i("p",[a._v("Bloktaki her işlemin doğruluğunu aşağıdaki yöntemlerle kontrol etmek için:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Her işlemin hash'i benzersiz olmalıdır;")])]),a._v(" "),i("li",[i("p",[a._v("Anahtar imzalı bir işlem sınırı aşamaz ("),i("RouterLink",{attrs:{to:"/tr-TR/reference/platform-parameters.html#max-tx-block-per-user"}},[a._v("max_tx_block_per_user")]),a._v(");")],1)]),a._v(" "),i("li",[i("p",[a._v("Maksimum işlem boyutu sınırını aşamaz ("),i("RouterLink",{attrs:{to:"/tr-TR/reference/platform-parameters.html#max-tx-size"}},[a._v("max_tx_size")]),a._v(");")],1)]),a._v(" "),i("li",[i("p",[a._v("İşlem süresi, blok oluşturma süresinden daha büyük veya blok oluşturma süresi artı 600 saniyeden daha büyük olamaz ve blok oluşturma süresi eksi 86400 saniyeden daha az olamaz;")])]),a._v(" "),i("li",[i("p",[a._v("İşlem düzgün bir şekilde imzalanmalıdır;")])]),a._v(" "),i("li",[i("p",[a._v("Sözleşmeyi uygulayan kullanıcının işlem bedelini ödemesi için hesabında yeterli token olması gerekir.")])])]),a._v(" "),i("h3",{attrs:{id:"veri-tabanı"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#veri-tabanı"}},[a._v("#")]),a._v(" Veri tabanı")]),a._v(" "),i("p",[a._v("IBAX Ağının temel veri depolama katmanı, tamamen halka açık bir 'PGSQL' veritabanıdır. IBAX İşletim Sistemi Platformunun izin tasarımına dayalı olarak, kullanıcıların veri güvenliği konusunda endişelenmesine gerek yoktur. Nesne yönelimli tasarım felsefesi ile IBAX Ağı, verileri ilişkisel bir PGSQL veritabanı aracılığıyla önceden derler ve veri işleme verimliliğini artırır.")]),a._v(" "),i("p",[a._v("Teknik bir uzmansanız aşağıdakiler ilginizi çekebilir veya değilseniz sadece atlayabilirsiniz.\n① Adında sayı öneki olmayan tüm tablolar, IBAX Network Basic'in izin tablolarına aittir;\n② Adında bir sayı öneki olan tüm tablolar ecoLibs'in izin tablolarına aittir.")]),a._v(" "),i("h2",{attrs:{id:"ecolib"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[a._v("#")]),a._v(" ECOLIB")]),a._v(" "),i("p",[a._v("Kullanıcılar, hatta sıradan kullanıcılar için IBAX Ağ Sistemi Platformunda kendilerine ait bir ecoLib oluşturmak oldukça kolaydır. ecoLib oluşturmanın tek bir tıklamayla gerçekleştiği bir uygulamayı entegre ettik ve geliştirdik.")]),a._v(" "),i("p",[a._v("Bir ecoLib oluştururken, ekosistem parametrelerini ve kurallarını yapılandırabilir ve yönetici hesabını ve ücretlendirme modelini ayarlayabilirsiniz. En önemlisi, DPoA fikir birliğini ecoLibs içinde daha iyi uygulamak için, içerik oluşturucular bunu kendi sözleşmelerini yazarak veya içe aktararak kurabilirler.")]),a._v(" "),i("p",[a._v("Sözleşme şablonlarını içe aktararak ecoLib belirteçlerinin hızla yayılmasını destekliyoruz.")]),a._v(" "),i("p",[a._v("Konsensüs ve yönetim izinlerindeki farklılıklar nedeniyle, ecoLib'ler merkezi olmayan ve merkezi olmayanlara ayrılır. Türlerine göre belirli bir avantaj veya dezavantajı yoktur. Servis ihtiyaçlarınıza uygun olanı seçmelisiniz. Şimdilik iyiyse ama gelecek için değilse ne yapmalı? IBAX Ağ Sistemi Platformunda ecoLib parametrelerini, hatta mutabakat mekanizmasını, belirteci ve yönetişim yöntemini değiştirebilirsiniz. Her şeyi ecoLib yöneticisi veya üyeleri (ecoLib türüne bağlı olarak) tarafından sağlanan öz-yönetim mekanizmasına bırakabilirsiniz.")]),a._v(" "),i("p",[a._v("IBAX Ağ Sistemi Platformunda, bir ecoLib, bağımsız veritabanı tabloları ve alanları tasarlamak ve bunlara erişmek için eksiksiz veri kontrol izinlerine ve izinlerine sahiptir. Veri denetimi izin tasarımında, bir alan mantıksal bir ifadeyi karşıladığında tetiklemeyi destekleriz. Bu özellik, izleme, mantıksal tatmin ve zamana ve belirli koşullara göre tetikleme gibi özel hizmetlerde hayal gücü alanı sağlar.")]),a._v(" "),i("p",[a._v("Bir ecoLib'de birden fazla DApp olabilir ve bunların her birinin bağımsız parametreleri olabilir. ecoLib, istediğiniz her şeyi uygulayabileceğiniz bir platform gibidir.")]),a._v(" "),i("p",[a._v("Ekosistem geliştiricilerini daha iyi desteklemek için Weaver düzenleme, yönetim ve geliştirme aracını sağlıyoruz. Ekosistem geliştirme, bakım ve yönetim maliyetlerini büyük ölçüde azaltacaktır.")]),a._v(" "),i("h3",{attrs:{id:"ide"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[a._v("#")]),a._v(" IDE")]),a._v(" "),i("p",[a._v("Weaver, yazılım geliştiricilerin blok zinciri teknolojisini derinlemesine anlamalarını gerektirmeyen blok zinciri uygulamaları oluşturmak için eksiksiz bir entegre geliştirme ortamına (IDE) sahiptir.")]),a._v(" "),i("p",[a._v("Weaver, herhangi bir yazılım modülünün desteği olmadan ekosistemde uygulamalar oluşturmak için gereken bir tablo yönetim aracı, sözleşme düzenleyici, sayfa düzenleyici ve diğer işlevleri sağlar.")]),a._v(" "),i("p",[a._v("IDE temel olarak aşağıdaki bölümleri içerir:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("ekosistem parametrelerinin listesi;")])]),a._v(" "),i("li",[i("p",[a._v("sözleşme editörü;")])]),a._v(" "),i("li",[i("p",[a._v("tablo yönetim aracı;")])]),a._v(" "),i("li",[i("p",[a._v("sayfa editörü ve görsel sayfa tasarımcısı;")])]),a._v(" "),i("li",[i("p",[a._v("çoklu dil kaynakları düzenleyicisi;")])]),a._v(" "),i("li",[i("p",[a._v("uygulama içe/dışa aktarma işlevleri.")])])]),a._v(" "),i("h3",{attrs:{id:"uygulamalar"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#uygulamalar"}},[a._v("#")]),a._v(" Uygulamalar")]),a._v(" "),i("p",[a._v('Bir uygulama, yapılandırma için erişim haklarına sahip veritabanı tabloları, akıllı sözleşmeler ve kullanıcı sayfaları gibi bir öğeler topluluğudur. Uygulama öğesinin ait olduğu ekosistem, "@1ElementName" gibi öğe adındaki önekle belirtilir; burada ekosistem kimliği, "@" simgesinden sonra "1" sayısıyla belirtilir. Mevcut ekosistemdeki uygulama öğelerini kullanırken "@1" öneki atlanabilir. Bu uygulamalar, faydalı işlevleri yerine getirebilir veya çeşitli hizmetleri uygulayabilir.')]),a._v(" "),i("h3",{attrs:{id:"tablolar"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tablolar"}},[a._v("#")]),a._v(" Tablolar")]),a._v(" "),i("p",[a._v("IBAX'ın veritabanında, her ekosistem sınırsız sayıda tablo oluşturabilir. Belirli bir ekosistemin tabloları, Weaver'da görüntülenmeyecek olan ekosistem kimliğini içeren bir ön ek ile tanımlanabilir.")]),a._v(" "),i("p",[a._v("Bir masa hiçbir şekilde bağlı değildir ve belirli bir sözleşmeye aittir. Tablonun erişim hakları kapsamındaki tüm uygulamalar tarafından kullanılabilir.")]),a._v(" "),i("p",[a._v("Her ekosistem, uygulamalarını geliştirmek için bir dizi veri tablosu oluşturabilir veya muhtemelen, tablo adı önekini belirterek diğer ekosistemlerin veri tablolarına erişebilir.")]),a._v(" "),i("p",[a._v("Akıllı yasalar aracılığıyla erişim haklarını yapılandırarak, veriler tablolara kaydedilir. Hak yönetimi için akıllı yasalar kullanılır.")]),a._v(" "),i("blockquote",[i("p",[a._v("Tablo tablo yönetim aracı")])]),a._v(" "),i("p",[a._v("Tablo yönetimi aracını, analiz cihazı tablosunu listele:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Tabloların listesini ve girişlerini görüntüleyin;")])]),a._v(" "),i("li",[i("p",[a._v("Yeni tablolar oluşturun;")])]),a._v(" "),i("li",[i("p",[a._v("Bir tablo alanı ekleyin ve "),i("code",[a._v("Text, Date/Time, Varchar, Character, JSON, Number, Money, Double, Binary")]),a._v(" gibi veri tipini belirtin;")])]),a._v(" "),i("li",[i("p",[a._v("Ekleme, güncelleme verileri ve tablo yapısını değiştirme ayrıcalıklarını yönetin.")])])]),a._v(" "),i("blockquote",[i("p",[a._v("Tablo veri işleme")])]),a._v(" "),i("p",[a._v("Daha iyi veritabanı işlemesi için hem Needle hem de Logicor, tablolardan değerleri ve veri dizilerini almak için kullanılan "),i("strong",[a._v("DBFind")]),a._v(" işlevine sahiptir.")]),a._v(" "),i("p",[a._v("Sözleşme dili "),i("strong",[a._v("DBInsert")]),a._v(" işlevi tablolara giriş eklemek için kullanılır. "),i("strong",[a._v("DBUpdate")]),a._v(" ve "),i("strong",[a._v("DBUpdateExt")]),a._v(" işlevleri, mevcut bir girdinin değerini güncellemek için kullanılır. Güncelleme sırasında tablolardaki ilgili veriler güncellenecek ve blok zinciri tüm geçmiş işlemleri korurken yeni işlemler ekleyecektir. Tablolardaki veriler yalnızca değiştirilebilir ve silinemez.")]),a._v(" "),i("p",[a._v("Sözleşme uygulama süresini en aza indirmek için "),i("strong",[a._v("DBFind")]),a._v(" işlevi aynı anda birden çok tabloyu sorgulayamaz ve JOIN desteklenmez. Bu nedenle, uygulama tablolarını normalleştirmemeyi, mevcut tüm bilgileri girişlerde saklamanızı veya diğer tablolarda bulunan bilgileri tekrarlamanızı öneririz. Bu zorunlu değildir ancak bir blockchain uygulaması için gereklidir. Bu durumda veriler, ilişkisel bir veritabanında eşzamanlı olarak güncellenmesine rağmen, diğer tablolardaki aynı veriler güncellense bile güncellenemeyecek şekilde tam olarak saklanmalıdır.")]),a._v(" "),i("h3",{attrs:{id:"ekosistem-parametreleri"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ekosistem-parametreleri"}},[a._v("#")]),a._v(" Ekosistem Parametreleri")]),a._v(" "),i("p",[a._v("Weaver'ın menüsünde ekosistem parametrelerinin ("),i("strong",[a._v("1_parameters")]),a._v(") listesini görüntüleyebilir ve düzenleyebilirsiniz. Ekosistem parametreleri aşağıdaki gruplara ayrılabilir:")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Genel parametreler: ekosistemi oluşturanın hesabı (kurucu_hesap) ve diğer bilgiler;")])]),a._v(" "),i("li",[i("p",[a._v("Erişim hakları parametreleri: uygulama öğeleri için erişim izinlerini tanımlamak için kullanılır")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("tablo yapısını değiştirin (değişen_tablolar);")])]),a._v(" "),i("li",[i("p",[a._v("sözleşmeyi değiştirin (değişen_sözleşmeler);")])]),a._v(" "),i("li",[i("p",[a._v("kullanıcı sayfasını değiştir (değişen_sayfa);")])]),a._v(" "),i("li",[i("p",[a._v("menüyü değiştir (change_menu);")])]),a._v(" "),i("li",[i("p",[a._v("çoklu dil kaynaklarını değiştirin (değişen_dil).")])])])]),a._v(" "),i("li",[i("p",[a._v("Teknik parametreler: kullanıcı stillerini (stil sayfası) tanımlamak için kullanılır;")])]),a._v(" "),i("li",[i("p",[a._v("Kullanıcı parametreleri: uygulama çalışması için gerekli sabitleri veya listeleri (virgülle ayrılmış) tanımlamak için kullanılır.")])])]),a._v(" "),i("p",[a._v("Her ekosistemin parametreleri için düzenleme izni belirtebilirsiniz.")]),a._v(" "),i("p",[a._v("Ekosistem parametre başlığını parametre olarak geçirerek bir ekosistem parametresinin değerini almak için EcosysParam işlevini kullanabilirsiniz.")]),a._v(" "),i("h2",{attrs:{id:"erisim-hakları-kontrol-mekanizması"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#erisim-hakları-kontrol-mekanizması"}},[a._v("#")]),a._v(" Erişim hakları kontrol mekanizması")]),a._v(" "),i("p",[a._v("IBAX, çok seviyeli bir erişim izni yönetim sistemine sahiptir. Erişim haklarını yapılandırarak sözleşmeler, tablolar, kullanıcı sayfaları, ekosistem parametreleri gibi herhangi bir uygulama öğesini oluşturabilir ve değiştirebilirsiniz. Erişim haklarını yapılandırma yoluyla da değiştirebilirsiniz.")]),a._v(" "),i("p",[a._v("Varsayılan olarak, IBAX ekosistemindeki tüm haklar, her ekosistemin MainCondition sözleşmesinde tanımlanan yaratıcısı tarafından yönetilir. Ancak akıllı yasalar oluşturulduktan sonra erişim kontrolü, ekosistem üyelerinin tümüne veya bir grubuna aktarılabilir.\nErişim hakları kontrolü")]),a._v(" "),i("p",[a._v("Erişim hakları sözleşme tablolarında ("),i("strong",[a._v("1_contracts")]),a._v(" ), veri tablolarında ("),i("strong",[a._v("1_tables")]),a._v(" ), kullanıcı sayfası tablolarında ("),i("strong",[a._v("1_pages")]),a._v(" ), menü tablolarında ("),i("strong",[a._v("1_menu")]),a._v(" ) ve kod bloğunda tanımlanır. tablolar ("),i("strong",[a._v("1_blocks")]),a._v(" ). İlgili menüleri Weaver'da bulabilirsiniz.")]),a._v(" "),i("h3",{attrs:{id:"erisim-hakları-yonetimi"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#erisim-hakları-yonetimi"}},[a._v("#")]),a._v(" Erişim hakları yönetimi")]),a._v(" "),i("p",[a._v("Erişim hakları kuralları, ilgili sözleşme ifadeleri "),i("strong",[a._v("ContractConditions(“@1MainCondition”)")]),a._v(", "),i("strong",[a._v("ContractAccess(“@1MainCondition”)")]),a._v(" veya izin alanındaki mantıksal ifadeler doldurularak yapılandırılır. İstek ifadesinin sonucu (true) geçerse, erişim verilir. Aksi takdirde erişim reddedilir ve ilgili işlemler sonlandırılır.")]),a._v(" "),i("p",[a._v('Hakları tanımlamanın kolay yolu, sağdaki alana mantıksal bir ifade girmektir. Örneğin, "$key_id == 8919730491904441614", burada '),i("strong",[a._v("$keyid")]),a._v(" bir ekosistem üyesinin kimliğini temsil eder.")]),a._v(" "),i("p",[a._v("Hakları tanımlamanın en yaygın ve önerilen yolu, "),i("code",[a._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),a._v(" işlevini kullanmaktır. Sözleşme adı "),i("strong",[a._v("SözleşmeAdı")]),a._v(", işleve bir parametre olarak iletilir ve sözleşme sonucu, mantıksal bir ifadenin (doğru veya yanlış) sonucu olmalıdır.")]),a._v(" "),i("p",[a._v("Hakları tanımlamanın başka bir yolu da "),i("code",[a._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),a._v(" işlevini kullanmaktır. İlgili işlemi uygulamaya uygun "),i("strong",[a._v("SözleşmeAdı")]),a._v(" sözleşmesi, işleve parametre olarak geçirilebilir. Örneğin, tutar sütununun sağ alanı "),i("code",[a._v('ContractAccess("@1TokenTransfer")')]),a._v(" olarak yapılandırılmışsa, o zaman yalnızca tutar sütunundaki değeri değiştirmek istiyorsanız "),i("strong",[a._v("@1TokenTransfer")]),a._v(" sözleşmesini uygulayabilirsiniz. Sözleşmeye erişim hakkı, oldukça karmaşık olan ve birçok başka sözleşmeyi içerebilen koşullar bölümünde yönetilebilir.")]),a._v(" "),i("h3",{attrs:{id:"ozel-haklar"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#ozel-haklar"}},[a._v("#")]),a._v(" Özel haklar")]),a._v(" "),i("p",[a._v("Bir ekosistemin çalışması için kritik olan acil durumlar veya durumlar durumunda, ekosistem parametreleri ("),i("strong",[a._v("1_parameters")]),a._v(") listesinde (örneğin "),i("em",[a._v("değişen_sözleşmeler")]),a._v(", "),i("em",[a._v("sayfalarıdeğiştiren")]),a._v("), vb. birçok özel parametre vardır. mevcut ekosistemin tüm sözleşmelerine, veri tablolarına ve sayfalarına erişim haklarını tanımlar. Bu haklar, anahtar sözleşmelerle yapılandırılır.")]),a._v(" "),i("h2",{attrs:{id:"sanal-ozel-ekosistem"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#sanal-ozel-ekosistem"}},[a._v("#")]),a._v(" Sanal özel ekosistem")]),a._v(" "),i("p",[a._v("IBAX'te sanal bir özel ekosistem oluşturabilirsiniz - "),i("strong",[a._v("Çapraz Defterler Tabanı (CLB)")]),a._v(". Bir CLB, standart ekosistemin tüm işlevlerine sahiptir, ancak blok zincirinin dışında çalışır. CLB'de sözleşmeleri ve şablon dillerini, tabloları kullanabilir ve oluşturabilir ve uygulamalar oluşturmak için Weaver'ı kullanabilirsiniz. API aracılığıyla blockchain ekosistemindeki sözleşmeleri arayabilirsiniz.")]),a._v(" "),i("h3",{attrs:{id:"web-kaynaklarına-yonelik-istekler"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#web-kaynaklarına-yonelik-istekler"}},[a._v("#")]),a._v(" Web kaynaklarına yönelik istekler")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",[i("code",[a._v("CLB ile standart ekosistem arasındaki temel fark, sözleşme işlevlerini ([HTTPRequest](../topics/script.md#httprequest)) ve ([HTTPPostJSON](../topics/script.md#httppostjson) kullanabilmenizdir. )) sözleşme kapsamındaki herhangi bir web kaynağını HTTP/HTTPS istekleri aracılığıyla talep etmek. Bu işleve iletilen parametreler şunları içerir: URL'ler, istek yöntemleri (GET veya POST), istek başlıkları ve istek parametreleri.\n")])])]),i("h3",{attrs:{id:"veri-okuma-hakları"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#veri-okuma-hakları"}},[a._v("#")]),a._v(" Veri okuma hakları")]),a._v(" "),i("p",[a._v("Okunabilir olmasına rağmen, CLB'deki veriler blok zincirine kaydedilmez. Veritabanı tablolarına okuma izni vermeyi seçebilirsiniz. Ayrı sütunlar için veya özel bir sözleşme kullanarak herhangi bir satır için okuma hakları ayarlayabilirsiniz.")]),a._v(" "),i("h3",{attrs:{id:"clb-olusturma"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#clb-olusturma"}},[a._v("#")]),a._v(" CLB oluşturma")]),a._v(" "),i("p",[a._v("Ağ üzerinde bir CLB düğümü oluşturabilirsiniz. Önceden tanımlandığı gibi, CLB düğüm yöneticisi, ekosistem listesini CLB işleviyle kullanma ve uygulamaları yüklemek, yeni üyeler almak ve kaynaklara erişim izinlerini yapılandırmak için ekosistem oluşturucu ayrıcalıklarına sahip bir kullanıcı belirleme ayrıcalığına sahiptir.")]),a._v(" "),i("h3",{attrs:{id:"clb-kullanımı"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#clb-kullanımı"}},[a._v("#")]),a._v(" CLB kullanımı")]),a._v(" "),i("p",[a._v("Kayıt formları oluşturmak, kullanıcılara e-posta veya telefon yoluyla doğrulama bilgileri göndermek ve herkesin erişebileceği verileri depolamak için bir CLB kullanabilirsiniz. Uygulamaları yazıp test edebilir ve ardından bunları blok zinciri ekosistemine aktarabilirsiniz. Bir CLB'de, zamanlama sözleşmesi görevlerini kullanabilir, web kaynaklarından veri almak için oracle makineleri oluşturabilir ve bu verileri blok zinciri ekosistemine gönderebilirsiniz.")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/115.f538cdf8.js b/assets/js/115.d42ba1ec.js similarity index 99% rename from assets/js/115.f538cdf8.js rename to assets/js/115.d42ba1ec.js index 5a23f5c..8b53114 100644 --- a/assets/js/115.f538cdf8.js +++ b/assets/js/115.d42ba1ec.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{492:function(a,e,l){"use strict";l.r(e);var i=l(51),r=Object(i.a)({},(function(){var a=this,e=a.$createElement,l=a._self._c||e;return l("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[l("h1",{attrs:{id:"the-ibax-network"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[a._v("#")]),a._v(" The IBAX Network")]),a._v(" "),l("p",[a._v("Bu bölümde size IBAX'ın nasıl kullanılacağını anlatacağız.")]),a._v(" "),l("ul",[l("li",[l("a",{attrs:{href:"#The-IBAX-Network"}},[a._v("The IBAX Network")]),a._v(" "),l("ul",[l("li",[l("a",{attrs:{href:"#Uygulama-geli%C5%9Ftiricileri"}},[a._v("Uygulama geliştiricileri")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#ECOLIB-%C3%BCyeleri"}},[a._v("ECOLIB üyeleri")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#ECOLIB-uygulamalar%C4%B1-ve-platform-uygulamalar%C4%B1"}},[a._v("ECOLIB uygulamalar ve platform uygulamaları")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#Temel-model"}},[a._v("Temel model")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#uygulama"}},[a._v("Uygulama")])])])])]),a._v(" "),l("p",[a._v("IBAX'teki uygulamaların geliştirilmesi, kullanımı veya yönetimi ile ilgileniyorsanız, bunu hiç anlamanız gerekmeyebilir.")]),a._v(" "),l("p",[a._v("IBAX'te blok zinciri ve blok zinciri ağı, ECOLIB üyelerinden, yöneticilerinden ve uygulama geliştiricilerinden gizlenmiştir. IBAX, tüm kullanıcı grupları için blok zincirinin "),l("strong",[a._v("küresel durumuna")]),a._v(" kurcalanmaya karşı korumalı ve dağıtılmış erişim sağlayan "),l("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html"}},[a._v("RESTful API")]),a._v(" sunar.")],1),a._v(" "),l("h2",{attrs:{id:"uygulama-gelistiricileri"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#uygulama-gelistiricileri"}},[a._v("#")]),a._v(" Uygulama geliştiricileri")]),a._v(" "),l("p",[a._v("Teknik terimlerle, "),l("strong",[a._v("küresel durum")]),a._v(", IBAX'ın veri tabanı aracılığıyla uygulanan bir dizi veridir. Uygulama geliştiricilerin bakış açısından, bir uygulama tabloları sorgulayarak, ekleyerek ve güncelleyerek veritabanı ile etkileşime girer.")]),a._v(" "),l("p",[a._v("IBAX'te işlemler, çeşitli sözleşmeler uygulanarak blok zincirine yazılır. Bu işlemler, küresel durumu (veritabanı) buna göre güncelleyecek olan blok zinciri ağ düğümleri tarafından uygulanan sözleşme kodlarını arayacaktır.")]),a._v(" "),l("p",[a._v("Uygulama geliştiricileri için sözleşme, uygulandığında verilerin veritabanına yazılacağı bir işlevdir. Sayfalar komut dosyaları gibidir ve sayfa kodu bir dizi sayfa "),l("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html"}},[a._v("şablon")]),a._v(" işlevidir, bu işlevlerden bazıları sayfa öğelerini görüntülerken, diğer veriler veritabanından gelir. Uygulama geliştiricilerin işlemlerin, blok oluşturma ve konsensüs algoritmalarının ne olduğunu anlamalarına gerek yok, sadece kullanın.")],1),a._v(" "),l("h2",{attrs:{id:"ecolib-uyeleri"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-uyeleri"}},[a._v("#")]),a._v(" ECOLIB üyeleri")]),a._v(" "),l("p",[a._v("Geliştiriciler tarafından yazılan uygulamalar, "),l("RouterLink",{attrs:{to:"/tr-TR/concepts/thesaurus.html#ecolib"}},[a._v("ECOLIB")]),a._v(" adlı bir ortamda çalışır. Bir uygulama genellikle belirli bir amaca hizmet eder ve diğer birkaç uygulamayla birlikte çeşitli görevleri tamamlar.")],1),a._v(" "),l("p",[a._v("Bir kullanıcı, içindeki uygulamalara erişmek istiyorsa bir ECOLIB'ye üye olmalıdır ve aynı anda birden fazla farklı ECOLIB'ye üye olabilir.")]),a._v(" "),l("p",[a._v("ECOLIB üyeleri, ortak bir web uygulamasındaki formları doldurmak, düğmelere tıklamak ve sayfalarda gezinmek gibi, uygulama sayfalarından veri tabanını görüntüleyebilir ve değiştirebilir.")]),a._v(" "),l("h2",{attrs:{id:"ecolib-uygulamaları-ve-platform-uygulamaları"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-uygulamaları-ve-platform-uygulamaları"}},[a._v("#")]),a._v(" ECOLIB uygulamaları ve platform uygulamaları")]),a._v(" "),l("p",[a._v("Başvurular "),l("strong",[a._v("ECOLIB uygulamaları")]),a._v(" ve "),l("strong",[a._v("platform uygulamaları")]),a._v(" olarak ayrılabilir.")]),a._v(" "),l("p",[a._v("ECOLIB uygulamaları")]),a._v(" "),l("p",[a._v("Bir ECOLIB uygulaması, bir ECOLIB'nin belirli benzersiz işlevlerini veya iş süreçlerini uygular, ancak yalnızca o ECOLIB'de mevcuttur.\nPlatform uygulamaları")]),a._v(" "),l("p",[a._v("Tüm ECOLIB'ler için bir platform uygulaması geçerlidir. Herhangi bir uygulama bir platform uygulaması olarak geliştirilebilir. IBAX geliştiricileri, oylama, bildirim ve ECOLIB üye rol yönetimi gibi ECOLIB yönetişimi için temel işlevleri destekleyen platform uygulamaları sağlayacaktır.")]),a._v(" "),l("h2",{attrs:{id:"temel-model"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#temel-model"}},[a._v("#")]),a._v(" Temel model")]),a._v(" "),l("p",[a._v("katmanların tanımı")]),a._v(" "),l("p",[a._v("IBAX birkaç katmandan oluşur:")]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Kullanıcı etkileşimi katmanı")]),a._v(" "),l("p",[a._v("ECOLIB üyeleri, sayfalar ve sayfa öğeleri aracılığıyla uygulama ile etkileşime girer.")])]),a._v(" "),l("li",[l("p",[a._v("Uygulama katmanı")]),a._v(" "),l("p",[a._v("Uygulama geliştiricileri, sözleşme kodları ve sayfa kodları aracılığıyla küresel durumla (veri tabloları) etkileşime girer.")])]),a._v(" "),l("li",[l("p",[a._v("Küresel durum katmanı")]),a._v(" "),l("p",[a._v("Dağıtılmış deftere (blockchain) yazılan işlemlere dayalı olarak küresel durumu (veritabanı) güncelleyin ve senkronize edin")])]),a._v(" "),l("li",[l("p",[a._v("Blok zinciri katmanı")]),a._v(" "),l("p",[a._v("Dağıtılmış defteri yeni bloklarla güncelleyin. Yeni bloklarda kaydedilen işlemler (işlemler) global durumda gerçekleştirilmelidir.")])]),a._v(" "),l("li",[l("p",[a._v("Düğüm ağ katmanı")]),a._v(" "),l("p",[a._v("Düğüm ağında işlemleri dağıtan, doğrulayan ve yeni bloklar oluşturan IBAX Ağı protokolünü uyguladı. Benzer şekilde, yeni bloklar düğüm ağı tarafından dağıtılır ve doğrulanır.")]),a._v(" "),l("p",[a._v("Tüm düğümlerin dağıtılmış defteri senkronize tutulur. Bir düğümde çakışmalar varsa, düğüm hangi blok zincirlerinin geçerli kabul edildiğini belirleyecek ve geçersiz blok zincirleri buna göre geri alınacaktır.")])]),a._v(" "),l("li",[l("p",[a._v("İşlem katmanı")]),a._v(" "),l("p",[a._v("İşlemler, blokların ve blok zinciri protokollerinin oluşturulmasının temelidir ve işlemlerin kendisi, kullanıcı etkileşimi katmanında gerçekleştirilen işlemlerin sonuçlarıdır. İşlemler Weaver tarafından oluşturulur.")]),a._v(" "),l("p",[a._v("Bir kullanıcı veya geliştirici, bir sayfadaki bir düğmeyi tıklamak veya kod düzenleyiciden bir sözleşme uygulamak gibi bir işlem gerçekleştirdiğinde, Weaver bu işlemi bir işleme dönüştürecek ve kendisine bağlı ağ düğümüne gönderecektir.")])])]),a._v(" "),l("p",[a._v("Bu nedenle, işlem akışı aşağıdaki gibidir:")]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Bir kullanıcı sayfasındaki bir kullanıcı işlemi, bir işleme dönüşecektir;")])]),a._v(" "),l("li",[l("p",[a._v("İşlem bir blokta bulunur;")])]),a._v(" "),l("li",[l("p",[a._v("Blok, blok zincirine dahildir;")])]),a._v(" "),l("li",[l("p",[a._v("İşlem değişikliği, blok zincirinin küresel durumunun değişmesine neden olacak ve bu işlem veritabanına uygulanacaktır;")])]),a._v(" "),l("li",[l("p",[a._v("Herhangi bir veritabanı değişikliği uygulamaya yansıtılacaktır.")])])]),a._v(" "),l("h2",{attrs:{id:"uygulama"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#uygulama"}},[a._v("#")]),a._v(" Uygulama")]),a._v(" "),l("p",[a._v("IBAX'in iki ana bileşeni vardır, yani sunucu "),l("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[a._v("go-ibax"),l("OutboundLink")],1),a._v(" ve Weaver "),l("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[a._v("Kaynak kodu"),l("OutboundLink")],1),a._v(".")]),a._v(" "),l("p",[a._v("dokumacı:")]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Kullanıcı sayfalarının sağlanması;")])]),a._v(" "),l("li",[l("p",[a._v("Uygulama geliştirme için IDE sağlanması;")])]),a._v(" "),l("li",[l("p",[a._v("Kullanıcı hesaplarının açık anahtarlarının saklanması ve yetkilendirme yapılması;")])]),a._v(" "),l("li",[l("p",[a._v("Uygulama sayfalarından veri tabanı verilerini talep etme ve uygulama sayfalarını kullanıcılara gösterme;")])]),a._v(" "),l("li",[l("p",[a._v("İşlemleri "),l("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html"}},[a._v("REST API'leri")]),a._v(" üzerinden sunucuya gönderme;")],1),a._v(" "),l("p",[a._v("Kullanıcı işlemlerine karşı otomatik olarak işlemler oluşturmak için, uygulama geliştiricileri IDE'den bir sözleşme uyguladığında Weaver bu işlemleri işlemlere dönüştürecektir.")])])]),a._v(" "),l("p",[a._v("sunucu:")]),a._v(" "),l("ul",[l("li",[a._v("Düğümün global durumunu (veritabanı) tutmak;")]),a._v(" "),l("li",[a._v("Blok zinciri protokolünün uygulanması;")]),a._v(" "),l("li",[a._v("IBAX "),l("RouterLink",{attrs:{to:"/tr-TR/topics/vm.html"}},[a._v("Sanal Makinede")]),a._v(" sözleşme kodlarının uygulanması;")],1),a._v(" "),l("li",[l("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html"}},[a._v("Şablon Motorunda")]),a._v(" sayfa kodlarının uygulanması;")],1),a._v(" "),l("li",[l("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html"}},[a._v("RESTful API")]),a._v(" uygulaması.")],1)])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{495:function(a,e,l){"use strict";l.r(e);var i=l(51),r=Object(i.a)({},(function(){var a=this,e=a.$createElement,l=a._self._c||e;return l("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[l("h1",{attrs:{id:"the-ibax-network"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[a._v("#")]),a._v(" The IBAX Network")]),a._v(" "),l("p",[a._v("Bu bölümde size IBAX'ın nasıl kullanılacağını anlatacağız.")]),a._v(" "),l("ul",[l("li",[l("a",{attrs:{href:"#The-IBAX-Network"}},[a._v("The IBAX Network")]),a._v(" "),l("ul",[l("li",[l("a",{attrs:{href:"#Uygulama-geli%C5%9Ftiricileri"}},[a._v("Uygulama geliştiricileri")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#ECOLIB-%C3%BCyeleri"}},[a._v("ECOLIB üyeleri")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#ECOLIB-uygulamalar%C4%B1-ve-platform-uygulamalar%C4%B1"}},[a._v("ECOLIB uygulamalar ve platform uygulamaları")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#Temel-model"}},[a._v("Temel model")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#uygulama"}},[a._v("Uygulama")])])])])]),a._v(" "),l("p",[a._v("IBAX'teki uygulamaların geliştirilmesi, kullanımı veya yönetimi ile ilgileniyorsanız, bunu hiç anlamanız gerekmeyebilir.")]),a._v(" "),l("p",[a._v("IBAX'te blok zinciri ve blok zinciri ağı, ECOLIB üyelerinden, yöneticilerinden ve uygulama geliştiricilerinden gizlenmiştir. IBAX, tüm kullanıcı grupları için blok zincirinin "),l("strong",[a._v("küresel durumuna")]),a._v(" kurcalanmaya karşı korumalı ve dağıtılmış erişim sağlayan "),l("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html"}},[a._v("RESTful API")]),a._v(" sunar.")],1),a._v(" "),l("h2",{attrs:{id:"uygulama-gelistiricileri"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#uygulama-gelistiricileri"}},[a._v("#")]),a._v(" Uygulama geliştiricileri")]),a._v(" "),l("p",[a._v("Teknik terimlerle, "),l("strong",[a._v("küresel durum")]),a._v(", IBAX'ın veri tabanı aracılığıyla uygulanan bir dizi veridir. Uygulama geliştiricilerin bakış açısından, bir uygulama tabloları sorgulayarak, ekleyerek ve güncelleyerek veritabanı ile etkileşime girer.")]),a._v(" "),l("p",[a._v("IBAX'te işlemler, çeşitli sözleşmeler uygulanarak blok zincirine yazılır. Bu işlemler, küresel durumu (veritabanı) buna göre güncelleyecek olan blok zinciri ağ düğümleri tarafından uygulanan sözleşme kodlarını arayacaktır.")]),a._v(" "),l("p",[a._v("Uygulama geliştiricileri için sözleşme, uygulandığında verilerin veritabanına yazılacağı bir işlevdir. Sayfalar komut dosyaları gibidir ve sayfa kodu bir dizi sayfa "),l("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html"}},[a._v("şablon")]),a._v(" işlevidir, bu işlevlerden bazıları sayfa öğelerini görüntülerken, diğer veriler veritabanından gelir. Uygulama geliştiricilerin işlemlerin, blok oluşturma ve konsensüs algoritmalarının ne olduğunu anlamalarına gerek yok, sadece kullanın.")],1),a._v(" "),l("h2",{attrs:{id:"ecolib-uyeleri"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-uyeleri"}},[a._v("#")]),a._v(" ECOLIB üyeleri")]),a._v(" "),l("p",[a._v("Geliştiriciler tarafından yazılan uygulamalar, "),l("RouterLink",{attrs:{to:"/tr-TR/concepts/thesaurus.html#ecolib"}},[a._v("ECOLIB")]),a._v(" adlı bir ortamda çalışır. Bir uygulama genellikle belirli bir amaca hizmet eder ve diğer birkaç uygulamayla birlikte çeşitli görevleri tamamlar.")],1),a._v(" "),l("p",[a._v("Bir kullanıcı, içindeki uygulamalara erişmek istiyorsa bir ECOLIB'ye üye olmalıdır ve aynı anda birden fazla farklı ECOLIB'ye üye olabilir.")]),a._v(" "),l("p",[a._v("ECOLIB üyeleri, ortak bir web uygulamasındaki formları doldurmak, düğmelere tıklamak ve sayfalarda gezinmek gibi, uygulama sayfalarından veri tabanını görüntüleyebilir ve değiştirebilir.")]),a._v(" "),l("h2",{attrs:{id:"ecolib-uygulamaları-ve-platform-uygulamaları"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-uygulamaları-ve-platform-uygulamaları"}},[a._v("#")]),a._v(" ECOLIB uygulamaları ve platform uygulamaları")]),a._v(" "),l("p",[a._v("Başvurular "),l("strong",[a._v("ECOLIB uygulamaları")]),a._v(" ve "),l("strong",[a._v("platform uygulamaları")]),a._v(" olarak ayrılabilir.")]),a._v(" "),l("p",[a._v("ECOLIB uygulamaları")]),a._v(" "),l("p",[a._v("Bir ECOLIB uygulaması, bir ECOLIB'nin belirli benzersiz işlevlerini veya iş süreçlerini uygular, ancak yalnızca o ECOLIB'de mevcuttur.\nPlatform uygulamaları")]),a._v(" "),l("p",[a._v("Tüm ECOLIB'ler için bir platform uygulaması geçerlidir. Herhangi bir uygulama bir platform uygulaması olarak geliştirilebilir. IBAX geliştiricileri, oylama, bildirim ve ECOLIB üye rol yönetimi gibi ECOLIB yönetişimi için temel işlevleri destekleyen platform uygulamaları sağlayacaktır.")]),a._v(" "),l("h2",{attrs:{id:"temel-model"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#temel-model"}},[a._v("#")]),a._v(" Temel model")]),a._v(" "),l("p",[a._v("katmanların tanımı")]),a._v(" "),l("p",[a._v("IBAX birkaç katmandan oluşur:")]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Kullanıcı etkileşimi katmanı")]),a._v(" "),l("p",[a._v("ECOLIB üyeleri, sayfalar ve sayfa öğeleri aracılığıyla uygulama ile etkileşime girer.")])]),a._v(" "),l("li",[l("p",[a._v("Uygulama katmanı")]),a._v(" "),l("p",[a._v("Uygulama geliştiricileri, sözleşme kodları ve sayfa kodları aracılığıyla küresel durumla (veri tabloları) etkileşime girer.")])]),a._v(" "),l("li",[l("p",[a._v("Küresel durum katmanı")]),a._v(" "),l("p",[a._v("Dağıtılmış deftere (blockchain) yazılan işlemlere dayalı olarak küresel durumu (veritabanı) güncelleyin ve senkronize edin")])]),a._v(" "),l("li",[l("p",[a._v("Blok zinciri katmanı")]),a._v(" "),l("p",[a._v("Dağıtılmış defteri yeni bloklarla güncelleyin. Yeni bloklarda kaydedilen işlemler (işlemler) global durumda gerçekleştirilmelidir.")])]),a._v(" "),l("li",[l("p",[a._v("Düğüm ağ katmanı")]),a._v(" "),l("p",[a._v("Düğüm ağında işlemleri dağıtan, doğrulayan ve yeni bloklar oluşturan IBAX Ağı protokolünü uyguladı. Benzer şekilde, yeni bloklar düğüm ağı tarafından dağıtılır ve doğrulanır.")]),a._v(" "),l("p",[a._v("Tüm düğümlerin dağıtılmış defteri senkronize tutulur. Bir düğümde çakışmalar varsa, düğüm hangi blok zincirlerinin geçerli kabul edildiğini belirleyecek ve geçersiz blok zincirleri buna göre geri alınacaktır.")])]),a._v(" "),l("li",[l("p",[a._v("İşlem katmanı")]),a._v(" "),l("p",[a._v("İşlemler, blokların ve blok zinciri protokollerinin oluşturulmasının temelidir ve işlemlerin kendisi, kullanıcı etkileşimi katmanında gerçekleştirilen işlemlerin sonuçlarıdır. İşlemler Weaver tarafından oluşturulur.")]),a._v(" "),l("p",[a._v("Bir kullanıcı veya geliştirici, bir sayfadaki bir düğmeyi tıklamak veya kod düzenleyiciden bir sözleşme uygulamak gibi bir işlem gerçekleştirdiğinde, Weaver bu işlemi bir işleme dönüştürecek ve kendisine bağlı ağ düğümüne gönderecektir.")])])]),a._v(" "),l("p",[a._v("Bu nedenle, işlem akışı aşağıdaki gibidir:")]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Bir kullanıcı sayfasındaki bir kullanıcı işlemi, bir işleme dönüşecektir;")])]),a._v(" "),l("li",[l("p",[a._v("İşlem bir blokta bulunur;")])]),a._v(" "),l("li",[l("p",[a._v("Blok, blok zincirine dahildir;")])]),a._v(" "),l("li",[l("p",[a._v("İşlem değişikliği, blok zincirinin küresel durumunun değişmesine neden olacak ve bu işlem veritabanına uygulanacaktır;")])]),a._v(" "),l("li",[l("p",[a._v("Herhangi bir veritabanı değişikliği uygulamaya yansıtılacaktır.")])])]),a._v(" "),l("h2",{attrs:{id:"uygulama"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#uygulama"}},[a._v("#")]),a._v(" Uygulama")]),a._v(" "),l("p",[a._v("IBAX'in iki ana bileşeni vardır, yani sunucu "),l("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[a._v("go-ibax"),l("OutboundLink")],1),a._v(" ve Weaver "),l("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[a._v("Kaynak kodu"),l("OutboundLink")],1),a._v(".")]),a._v(" "),l("p",[a._v("dokumacı:")]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Kullanıcı sayfalarının sağlanması;")])]),a._v(" "),l("li",[l("p",[a._v("Uygulama geliştirme için IDE sağlanması;")])]),a._v(" "),l("li",[l("p",[a._v("Kullanıcı hesaplarının açık anahtarlarının saklanması ve yetkilendirme yapılması;")])]),a._v(" "),l("li",[l("p",[a._v("Uygulama sayfalarından veri tabanı verilerini talep etme ve uygulama sayfalarını kullanıcılara gösterme;")])]),a._v(" "),l("li",[l("p",[a._v("İşlemleri "),l("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html"}},[a._v("REST API'leri")]),a._v(" üzerinden sunucuya gönderme;")],1),a._v(" "),l("p",[a._v("Kullanıcı işlemlerine karşı otomatik olarak işlemler oluşturmak için, uygulama geliştiricileri IDE'den bir sözleşme uyguladığında Weaver bu işlemleri işlemlere dönüştürecektir.")])])]),a._v(" "),l("p",[a._v("sunucu:")]),a._v(" "),l("ul",[l("li",[a._v("Düğümün global durumunu (veritabanı) tutmak;")]),a._v(" "),l("li",[a._v("Blok zinciri protokolünün uygulanması;")]),a._v(" "),l("li",[a._v("IBAX "),l("RouterLink",{attrs:{to:"/tr-TR/topics/vm.html"}},[a._v("Sanal Makinede")]),a._v(" sözleşme kodlarının uygulanması;")],1),a._v(" "),l("li",[l("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html"}},[a._v("Şablon Motorunda")]),a._v(" sayfa kodlarının uygulanması;")],1),a._v(" "),l("li",[l("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html"}},[a._v("RESTful API")]),a._v(" uygulaması.")],1)])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/117.e12a9fbf.js b/assets/js/117.9d52ab3d.js similarity index 99% rename from assets/js/117.e12a9fbf.js rename to assets/js/117.9d52ab3d.js index 13f8b9f..381f27d 100644 --- a/assets/js/117.e12a9fbf.js +++ b/assets/js/117.9d52ab3d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{500:function(a,i,l){"use strict";l.r(i);var r=l(51),e=Object(r.a)({},(function(){var a=this,i=a.$createElement,l=a._self._c||i;return l("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[l("h1",{attrs:{id:"sss"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#sss"}},[a._v("#")]),a._v(" SSS")]),a._v(" "),l("ul",[l("li",[l("a",{attrs:{href:"#soru-1"}},[a._v("1. Lütfen kısaca IBAX'i tanımlayın?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-2"}},[a._v("2. IBax Bitcoin, Ethereum veya diğer blok zincirleri için geçerli mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-3"}},[a._v("3. IBax ile akıllı sözleşmeleri yürütmek için yerleşik mekanizmalara sahip diğer herkese açık blok zinciri platformları arasındaki temel farklar nelerdir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-4"}},[a._v("4. Kendi kripto paran var mı?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-5"}},[a._v("5. Honor node nedir ve onu kim koruyabilir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-6"}},[a._v("6. Platform ekosistemi nedir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-7"}},[a._v("7. Kimler ekosistem oluşturabilir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-8"}},[a._v("8. Kullanıcılar nasıl ekosistemin üyesi olurlar?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-9"}},[a._v("9. Bir kullanıcı birden fazla ekosistem oluşturabilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-10"}},[a._v("10. Platform uygulaması nedir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-11"}},[a._v("11. Uygulamayı oluşturmak için hangi programlama dili kullanılıyor?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-12"}},[a._v("12. Uygulama oluşturmak ve kullanıcılarla etkileşim kurmak için hangi yazılımlar kullanılıyor?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-13"}},[a._v("13. Platform sözleşmeleri verilere erişmek için üçüncü taraf API'leri kullanabilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-14"}},[a._v("14. Blok zincirinde saklanan sözleşme değiştirilebilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-15"}},[a._v("15. Akıllı yasa nedir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-16"}},[a._v("16. Sözleşme diğer sözleşmeleri çağırabilir ve yürütebilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-17"}},[a._v("17. Uygulama bir ana sözleşmeyle mi çalışıyor?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-18"}},[a._v("18. Uygulama farklı diller için yerelleştirilebilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-19"}},[a._v("19. Şablon dili kullanmadan sayfa oluşturabilir miyim?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-20"}},[a._v("20. Sayfalar blok zincirinde mi saklanıyor?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-21"}},[a._v("21. Sözleşme işlemleri için ne tür veritabanları kullanılabilir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-22"}},[a._v("22. Veritabanı tablosundaki verilere erişim nasıl yönetilir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-23"}},[a._v("23. Bir ekosistemdeki bir uygulama, başka bir ekosistemdeki diğer uygulamalarla veri alışverişinde bulunabilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-24"}},[a._v("24. Yeni bir ekosistemdeki tüm uygulamalar sıfırdan mı yazılmalı?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-25"}},[a._v("25. Başvuruların çalışması için herhangi bir ücret var mı?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-26"}},[a._v("26. Uygulamaların çalışmasını kim ödüyor?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-27"}},[a._v("27. Ekosistemdeki uygulamalar güvenlik açıklarından kaynaklanan saldırılardan nasıl korunur?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-28"}},[a._v("28. Gelecekteki planlarda hangi yeni özellikler uygulanacak?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-29"}},[a._v("29. Çalışabilirliği nasıl kanıtlanır?")])])]),a._v(" "),l("h3",{attrs:{id:"_1-lutfen-kısaca-ibax-i-tanımlayın"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_1-lutfen-kısaca-ibax-i-tanımlayın"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-1"}},[a._v("1. Lütfen kısaca IBAX'i tanımlayın?")])]),a._v(" "),l("ul",[l("li",[a._v("Verilere, arayüzlere ve akıllı sözleşmelere erişim haklarını yönetmek için çok seviyeli bir izin sistemine sahip entegre bir uygulama geliştirme ortamına dayalı dijital bir ekosistem oluşturmayı amaçlayan bir blok zinciri platformudur.")])]),a._v(" "),l("h3",{attrs:{id:"_2-ibax-bitcoin-ethereum-veya-diger-blok-zincirleri-icin-gecerli-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_2-ibax-bitcoin-ethereum-veya-diger-blok-zincirleri-icin-gecerli-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-2"}},[a._v("2. IBax, Bitcoin, Ethereum veya diğer blok zincirleri için geçerli mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Uygulanamaz. IBax, kendi orijinal blok zinciri temelinde inşa edilmiştir.")])]),a._v(" "),l("h3",{attrs:{id:"_3-ibax-ile-akıllı-sozlesmeleri-yurutmek-icin-yerlesik-mekanizmalara-sahip-diger-herkese-acık-blok-zinciri-platformları-arasındaki-temel-farklar-nelerdir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_3-ibax-ile-akıllı-sozlesmeleri-yurutmek-icin-yerlesik-mekanizmalara-sahip-diger-herkese-acık-blok-zinciri-platformları-arasındaki-temel-farklar-nelerdir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-3"}},[a._v("3. IBax ile akıllı sözleşmeleri yürütmek için yerleşik mekanizmalara sahip diğer herkese açık blok zinciri platformları arasındaki temel farklar nelerdir?")])]),a._v(" "),l("ul",[l("li",[a._v("IBax, yukarıda bahsedilen blok zincirlerinde bulunamayan benzersiz özelliklere sahiptir:\n"),l("ul",[l("li",[a._v("tek bir istemci yazılımında entegre bir uygulama geliştirme ortamına sahiptir;\n"),l("ul",[l("li",[a._v("Sayfa tasarımı için özel şablon dili Logicor ve Needle sözleşme dili birbiriyle koordinelidir;")]),a._v(" "),l("li",[a._v("üyelere, rollere ve sözleşmelere izin verilebileceği verilere, arayüzlere ve akıllı sözleşmelere erişim haklarını yönetmek için çok seviyeli bir izin sistemine sahiptir;")]),a._v(" "),l("li",[a._v("kullanıcıların onlarla etkileşime girmesi için blok zinciri uygulamaları ve özerk yazılım ortamları oluşturmak için kullanılan ekosistem;")]),a._v(" "),l("li",[a._v("Hukuk sistemi, akıllı yasalarda (adanmış akıllı sözleşmeler) yazılmış bir kurallar dizisidir, platform kullanıcıları arasındaki ilişkiyi düzenler ve problem çözme için protokol parametrelerini değiştirme sürecini tanımlar.")])])])])])]),a._v(" "),l("h3",{attrs:{id:"_4-kendi-kripto-para-biriminiz-var-mı"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_4-kendi-kripto-para-biriminiz-var-mı"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-4"}},[a._v("4. Kendi kripto para biriminiz var mı?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, IBax kendi belirteci IBXC'yi kullanır.")])]),a._v(" "),l("h3",{attrs:{id:"_5-honor-node-nedir-ve-onu-kim-koruyabilir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_5-honor-node-nedir-ve-onu-kim-koruyabilir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-5"}},[a._v("5. Honor node nedir ve onu kim koruyabilir?")])]),a._v(" "),l("ul",[l("li",[a._v("Honor node, işlemleri doğrulama ve yeni bloklar oluşturma yetkisine sahip ağ düğümüdür.")]),a._v(" "),l("li",[a._v("Yeterli işlem gücüne ve hata toleransına sahip herhangi bir ağ düğümü, bir Honor node olabilir. IBax, bir Yetki Kanıtı (PoA) konsensüs mekanizması kullanır. Düğümler, ekosistem oylamasına dayalı doğrulama düğümleri haline gelebilir, ancak yalnızca platformun belirteç sahibi tarafından normal operasyonel yeteneklere sahip olduğu kanıtlanmış ekosistemler bu tür oylamaya katılabilir. Bu yetkilendirme algoritmasını kullanarak, ana düğüm, ağ operasyonunu sürdürmek onların çıkarına olduğu için büyük ekosistemler tarafından çalıştırılır.")])]),a._v(" "),l("h3",{attrs:{id:"_6-platform-ekosistemi-nedir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_6-platform-ekosistemi-nedir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-6"}},[a._v("6. Platform ekosistemi nedir?")])]),a._v(" "),l("ul",[l("li",[a._v("Bir ekosistem aslında blok zinciri uygulamaları ve bu uygulamalardaki kullanıcıların işlemlerini oluşturmak için kullanılan özerk bir yazılım ortamıdır.")])]),a._v(" "),l("h3",{attrs:{id:"_7-kimler-ekosistem-olusturabilir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_7-kimler-ekosistem-olusturabilir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-7"}},[a._v("7. Kimler ekosistem oluşturabilir?")])]),a._v(" "),l("ul",[l("li",[a._v("Platformun tüm kullanıcıları yeni ekosistemler oluşturabilir.")])]),a._v(" "),l("h3",{attrs:{id:"_8-kullanıcılar-nasıl-ekosistemin-uyesi-olurlar"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_8-kullanıcılar-nasıl-ekosistemin-uyesi-olurlar"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-8"}},[a._v("8. Kullanıcılar nasıl ekosistemin üyesi olurlar?")])]),a._v(" "),l("ul",[l("li",[a._v("Kullanıcılar, mevcut herhangi bir ekosistemin üyesi olarak kaydedilebilir. Ekosistem stratejisi, yeni ekosistemin temel kamu bilgilerini özel bir ekosistem kataloğunda yayınlayan farklı üye kabul prosedürlerini tanımlar.")])]),a._v(" "),l("h3",{attrs:{id:"_9-bir-kullanıcı-birden-fazla-ekosistem-olusturabilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_9-bir-kullanıcı-birden-fazla-ekosistem-olusturabilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-9"}},[a._v("9. Bir kullanıcı birden fazla ekosistem oluşturabilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, her kullanıcı istediği sayıda ekosistem oluşturabilir ve birden fazla ekosistemin üyesi olabilir.")])]),a._v(" "),l("h3",{attrs:{id:"_10-platform-uygulaması-nedir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_10-platform-uygulaması-nedir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-10"}},[a._v("10. Platform uygulaması nedir?")])]),a._v(" "),l("ul",[l("li",[a._v("Bir uygulama, bir işlevi veya hizmeti uygulayan eksiksiz bir yazılım ürünüdür. Uygulama veritabanı tabloları, sözleşmeler ve sayfalardan oluşmaktadır.")])]),a._v(" "),l("h3",{attrs:{id:"_11-uygulamayı-olusturmak-icin-hangi-programlama-dili-kullanılıyor"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_11-uygulamayı-olusturmak-icin-hangi-programlama-dili-kullanılıyor"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-11"}},[a._v("11. Uygulamayı oluşturmak için hangi programlama dili kullanılıyor?")])]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Sözleşme, platform ekibi tarafından geliştirilen Needle dilinde yazılmıştır, Daha fazla bilgi için bakınız: "),l("RouterLink",{attrs:{to:"/tr-TR/topics/script.html"}},[a._v("Akıllı Sözleşme")]),a._v(".")],1)]),a._v(" "),l("li",[l("p",[a._v("Sayfa, sayfa şablon dili olan Logicor dilinde yazılmıştır. Daha fazla bilgi için bkz.: "),l("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html"}},[a._v("Şablon Dili")]),a._v(".")],1)])]),a._v(" "),l("h3",{attrs:{id:"_12-uygulama-olusturmak-ve-kullanıcılarla-etkilesim-kurmak-icin-hangi-yazılımlar-kullanılır"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_12-uygulama-olusturmak-ve-kullanıcılarla-etkilesim-kurmak-icin-hangi-yazılımlar-kullanılır"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-12"}},[a._v("12. Uygulama oluşturmak ve kullanıcılarla etkileşim kurmak için hangi yazılımlar kullanılır?")])]),a._v(" "),l("ul",[l("li",[a._v("Uygulama programı Weaver'da yazılır ve yürütülür, başka bir yazılıma gerek yoktur.")])]),a._v(" "),l("h3",{attrs:{id:"_13-platform-sozlesmeleri-verilere-erismek-icin-ucuncu-taraf-api-leri-kullanabilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_13-platform-sozlesmeleri-verilere-erismek-icin-ucuncu-taraf-api-leri-kullanabilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-13"}},[a._v("13. Platform sözleşmeleri, verilere erişmek için üçüncü taraf API'leri kullanabilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Hayır, sözleşme yalnızca blok zincirinde depolanan verilere doğrudan erişebilir. "),l("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#virtual-private-ecosystem"}},[a._v("CLB")]),a._v(" harici veri kaynaklarını işlemek için kullanılır.")],1)]),a._v(" "),l("h3",{attrs:{id:"_14-blok-zincirinde-saklanan-sozlesme-degistirilebilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_14-blok-zincirinde-saklanan-sozlesme-degistirilebilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-14"}},[a._v("14. Blok zincirinde saklanan sözleşme değiştirilebilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, sözleşme değiştirilebilir. Sözleşmeyi değiştirme izni, değiştirmeyi reddetme veya sözleşmelerde veya üyeler tarafından değişiklik yapma izni verebilen veya akıllı yasada karmaşık bir dizi koşul yapılandırabilen yaratıcısı tarafından belirlenir.")]),a._v(" "),l("li",[a._v("Weaver, sözleşmelerin tüm sürümlerine erişim sağlar.")])]),a._v(" "),l("h3",{attrs:{id:"_15-akıllı-yasa-nedir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_15-akıllı-yasa-nedir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-15"}},[a._v("15. Akıllı yasa nedir?")])]),a._v(" "),l("ul",[l("li",[a._v("Akıllı hukuk, geleneksel sözleşmelerin işleyişini kontrol etmek ve kısıtlamak, böylece ekosistem üyelerinin faaliyetlerini kontrol etmek ve kısıtlamak için tasarlanmış bir sözleşmedir.")]),a._v(" "),l("li",[a._v("Bir dizi akıllı yasa, bir ekosistemin yasal sistemi olarak kabul edilebilir.")])]),a._v(" "),l("h3",{attrs:{id:"_16-sozlesme-diger-sozlesmeleri-cagırabilir-ve-yurutebilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_16-sozlesme-diger-sozlesmeleri-cagırabilir-ve-yurutebilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-16"}},[a._v("16. Sözleşme, diğer sözleşmeleri çağırabilir ve yürütebilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, sözleşme doğrudan adresleme yoluyla diğer sözleşmeleri arayabilir ve bunun için parametreler sağlayabilir veya sözleşmeyi bağlantı adıyla çağırabilir. Daha fazla bilgi için bkz.: "),l("RouterLink",{attrs:{to:"/tr-TR/topics/script.html"}},[a._v("Akıllı Sözleşme")]),a._v(".")],1)]),a._v(" "),l("h3",{attrs:{id:"_17-uygulama-bir-ana-sozlesmeyle-mi-calısıyor"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_17-uygulama-bir-ana-sozlesmeyle-mi-calısıyor"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-17"}},[a._v("17. Uygulama bir ana sözleşmeyle mi çalışıyor?")])]),a._v(" "),l("ul",[l("li",[a._v("Hayır, sözleşme, belirli işlevleri yerine getiren özerk bir program modülüdür. Her sözleşme, belirtilen verileri alacak, ardından bu verilerin doğruluğunu kontrol edecek ve veritabanına işlem olarak kaydedilen bazı işlemleri gerçekleştirecek şekilde yapılandırılır.")])]),a._v(" "),l("h3",{attrs:{id:"_18-uygulama-farklı-diller-icin-yerellestirilebilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_18-uygulama-farklı-diller-icin-yerellestirilebilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-18"}},[a._v("18. Uygulama farklı diller için yerelleştirilebilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, Weaver'ın yerleşik bir yerelleştirme destek mekanizması vardır ve herhangi bir dilde sayfa oluşturabilir.")])]),a._v(" "),l("h3",{attrs:{id:"_19-sablon-dili-kullanmadan-sayfa-olusturabilir-miyim"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_19-sablon-dili-kullanmadan-sayfa-olusturabilir-miyim"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-19"}},[a._v("19. Şablon dili kullanmadan sayfa oluşturabilir miyim?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, "),l("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html"}},[a._v("RESTful API")]),a._v(" v2 platformu kullanılarak yapılabilir.")],1)]),a._v(" "),l("h3",{attrs:{id:"_20-sayfalar-blok-zincirinde-mi-saklanıyor"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_20-sayfalar-blok-zincirinde-mi-saklanıyor"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-20"}},[a._v("20. Sayfalar blok zincirinde mi saklanıyor?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, sayfalar ve sözleşmeler blok zincirinde saklanır, bu da sahte olmalarını önler.")])]),a._v(" "),l("h3",{attrs:{id:"_21-sozlesmeli-islemler-icin-ne-tur-veritabanları-kullanılabilir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_21-sozlesmeli-islemler-icin-ne-tur-veritabanları-kullanılabilir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-21"}},[a._v("21. Sözleşmeli işlemler için ne tür veritabanları kullanılabilir?")])]),a._v(" "),l("ul",[l("li",[a._v("Şu anda PostgreSQL kullanılmaktadır.")])]),a._v(" "),l("h3",{attrs:{id:"_22-veritabanı-tablosundaki-verilere-erisim-nasıl-yonetilir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_22-veritabanı-tablosundaki-verilere-erisim-nasıl-yonetilir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-22"}},[a._v("22. Veritabanı tablosundaki verilere erişim nasıl yönetilir?")])]),a._v(" "),l("ul",[l("li",[a._v("Ekosistem üyeleri, roller veya belirtilen sözleşme yapılandırmaları için yeni alanlar, yeni girişler ekleyebilir veya sütunlardaki verilerin izinlerini değiştirebilirsiniz. Belirli işlemler gerçekleştirilerek oluşturulan sözleşmeler hariç.")])]),a._v(" "),l("h3",{attrs:{id:"_23-bir-ekosistemdeki-bir-uygulama-baska-bir-ekosistemdeki-diger-uygulamalarla-veri-alısverisinde-bulunabilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_23-bir-ekosistemdeki-bir-uygulama-baska-bir-ekosistemdeki-diger-uygulamalarla-veri-alısverisinde-bulunabilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-23"}},[a._v("23. Bir ekosistemdeki bir uygulama, başka bir ekosistemdeki diğer uygulamalarla veri alışverişinde bulunabilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, veri alışverişi tüm ekosistemler için geçerli olan global veri tabloları aracılığıyla organize edilebilir.")])]),a._v(" "),l("h3",{attrs:{id:"_24-yeni-bir-ekosistemdeki-tum-uygulamalar-sıfırdan-mı-yazılmalı"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_24-yeni-bir-ekosistemdeki-tum-uygulamalar-sıfırdan-mı-yazılmalı"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-24"}},[a._v("24. Yeni bir ekosistemdeki tüm uygulamalar sıfırdan mı yazılmalı?")])]),a._v(" "),l("ul",[l("li",[a._v("Hayır, her yeni ekosistemin kullanıma hazır bazı uygulamaları vardır:\n"),l("ul",[l("li",[a._v("Ekosistem üyelerini ve rollerini yönetmek için bir mekanizma;")]),a._v(" "),l("li",[a._v("Diğer belirteçleri yayınlamak ve yapılandırmak;")]),a._v(" "),l("li",[a._v("Bir oylama sistemi;")]),a._v(" "),l("li",[a._v("Bir bildirim sistemi;")]),a._v(" "),l("li",[a._v("Ekosistem üyeleri arasında bir haberci.")])])])]),a._v(" "),l("p",[a._v("Bu uygulamalar, herhangi bir ekosistemin özel ihtiyaçlarını karşılayacak şekilde düzenlenebilir ve yapılandırılabilir.")]),a._v(" "),l("h3",{attrs:{id:"_25-basvuruların-calısması-icin-herhangi-bir-ucret-var-mı"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_25-basvuruların-calısması-icin-herhangi-bir-ucret-var-mı"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-25"}},[a._v("25. Başvuruların çalışması için herhangi bir ücret var mı?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, honor node kaynaklarının kullanımı platformda ödeme yapılmasını gerektirir.")])]),a._v(" "),l("h3",{attrs:{id:"_26-uygulamaların-calısması-icin-kim-odeme-yapar"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_26-uygulamaların-calısması-icin-kim-odeme-yapar"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-26"}},[a._v("26. Uygulamaların çalışması için kim ödeme yapar?")])]),a._v(" "),l("p",[a._v("İlgili hesap adresleri için şu anda uygulamaların çalışması için ödeme yapmanın 4 yolu vardır:")]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Sözleşmeli arayanlar için, kullanıcı sözleşmeyi aradığında ücret varsayılan olarak kullanıcının hesabından ödenecektir;")])]),a._v(" "),l("li",[l("p",[a._v("Sözleşme bağlayıcı taraflar için ücret, sözleşmeyi oluşturan tarafından belirtilen bağlayıcı hesaptan ödenecektir;")])]),a._v(" "),l("li",[l("p",[a._v("Ekosistem oluşturucular için, bir ekosistem içindeki tüm uygulamaların ücreti sırasıyla ekosistem oluşturucu tarafından ödenecektir;")])]),a._v(" "),l("li",[l("p",[a._v("Özel ekosistem cüzdanı. Her ekosistemin özel bir hesabı vardır. Ekosistem yaratıcısı tarafından etkinleştirilirse, ekosistem içindeki tüm uygulamaların ücreti bu hesaptan ödenecektir.")])])]),a._v(" "),l("p",[a._v("Ödeme önceliği sırası: Özel ekosistem cüzdanı> Ekosistem oluşturucu> Sözleşme bağlayıcı taraf> Sözleşme arayan.")]),a._v(" "),l("h3",{attrs:{id:"_27-ekosistemdeki-uygulamaları-guvenlik-acıklarından-kaynaklanan-saldırılardan-nasıl-koruruz"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_27-ekosistemdeki-uygulamaları-guvenlik-acıklarından-kaynaklanan-saldırılardan-nasıl-koruruz"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-27"}},[a._v("27. Ekosistemdeki uygulamaları güvenlik açıklarından kaynaklanan saldırılardan nasıl koruruz?")])]),a._v(" "),l("ul",[l("li",[a._v("Platform ekibi, özellikle uygulamanın herhangi bir kullanıcı tarafından yazılabileceği düşünüldüğünde, uygulama kodundaki hataları tamamen önlemenin bir yolu olmadığını da bilir. Bu nedenle, güvenlik açıklarından yararlanmanın sonuçlarını ortadan kaldıracak bir mekanizma kurmaya karar verdik. Hukuk sistemi, uygulamanın saldırı işlemini durdurabilir ve orijinal durumuna geri yüklemek için bazı işlemleri kullanabilir. Hukuk sistemi, bu tür sözleşmelerin akdedilmesine ilişkin izinleri ve bu izinlerin verilmesine ilişkin oylama prosedürlerini öngörmektedir.")])]),a._v(" "),l("h3",{attrs:{id:"_28-gelecekteki-planlarda-hangi-yeni-ozellikler-uygulanacak"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_28-gelecekteki-planlarda-hangi-yeni-ozellikler-uygulanacak"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-28"}},[a._v("28. Gelecekteki planlarda hangi yeni özellikler uygulanacak?")])]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Görsel akıllı sözleşme tasarımcısı;")])]),a._v(" "),l("li",[l("p",[a._v("Hibrit veritabanları desteği (SQL ve NoSQL);")])]),a._v(" "),l("li",[l("p",[a._v("Farklı ekosistemlerden işlemlerin paralel çoklu iş parçacıklı işlenmesi;")])]),a._v(" "),l("li",[l("p",[a._v("İstemci üzerinde kaynak yoğun hesaplamalar yapın;")])]),a._v(" "),l("li",[l("p",[a._v("Ekosistem barındırma ve bilgi işlem güç değişimi;")])]),a._v(" "),l("li",[l("p",[a._v("Alt düğümler, sunucuda yalnızca bazı blokları depolar;")])]),a._v(" "),l("li",[l("p",[a._v("Platformdaki verilerin işleyişini birleştirmek için anlamsal referanslar (ontoloji) kullanılır.")])])]),a._v(" "),l("h3",{attrs:{id:"_29-calısabilirligi-nasıl-kanıtlanır"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_29-calısabilirligi-nasıl-kanıtlanır"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-29"}},[a._v("29. Çalışabilirliği nasıl kanıtlanır?")])]),a._v(" "),l("ul",[l("li",[a._v("IBax Ağı'nda bir dizi kavram kanıtı projeleri ve vakaları uygulanmıştır: sosyalleştirilmiş bir vergi tahsilatı ve elektronik fatura oluşturma ve dolaşım sistemi, tıbbi cihaz ve alet denetimi, sahteciliği önleme ve izleme sistemi, finansman ve denetim sistemi, oylama/anket sistemi, işletme kaydı, ticaret finansmanı araçları, varlık kaydı sözleşmesi yönetim sistemi vb.")])])])}),[],!1,null,null,null);i.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{497:function(a,i,l){"use strict";l.r(i);var r=l(51),e=Object(r.a)({},(function(){var a=this,i=a.$createElement,l=a._self._c||i;return l("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[l("h1",{attrs:{id:"sss"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#sss"}},[a._v("#")]),a._v(" SSS")]),a._v(" "),l("ul",[l("li",[l("a",{attrs:{href:"#soru-1"}},[a._v("1. Lütfen kısaca IBAX'i tanımlayın?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-2"}},[a._v("2. IBax Bitcoin, Ethereum veya diğer blok zincirleri için geçerli mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-3"}},[a._v("3. IBax ile akıllı sözleşmeleri yürütmek için yerleşik mekanizmalara sahip diğer herkese açık blok zinciri platformları arasındaki temel farklar nelerdir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-4"}},[a._v("4. Kendi kripto paran var mı?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-5"}},[a._v("5. Honor node nedir ve onu kim koruyabilir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-6"}},[a._v("6. Platform ekosistemi nedir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-7"}},[a._v("7. Kimler ekosistem oluşturabilir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-8"}},[a._v("8. Kullanıcılar nasıl ekosistemin üyesi olurlar?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-9"}},[a._v("9. Bir kullanıcı birden fazla ekosistem oluşturabilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-10"}},[a._v("10. Platform uygulaması nedir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-11"}},[a._v("11. Uygulamayı oluşturmak için hangi programlama dili kullanılıyor?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-12"}},[a._v("12. Uygulama oluşturmak ve kullanıcılarla etkileşim kurmak için hangi yazılımlar kullanılıyor?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-13"}},[a._v("13. Platform sözleşmeleri verilere erişmek için üçüncü taraf API'leri kullanabilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-14"}},[a._v("14. Blok zincirinde saklanan sözleşme değiştirilebilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-15"}},[a._v("15. Akıllı yasa nedir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-16"}},[a._v("16. Sözleşme diğer sözleşmeleri çağırabilir ve yürütebilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-17"}},[a._v("17. Uygulama bir ana sözleşmeyle mi çalışıyor?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-18"}},[a._v("18. Uygulama farklı diller için yerelleştirilebilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-19"}},[a._v("19. Şablon dili kullanmadan sayfa oluşturabilir miyim?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-20"}},[a._v("20. Sayfalar blok zincirinde mi saklanıyor?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-21"}},[a._v("21. Sözleşme işlemleri için ne tür veritabanları kullanılabilir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-22"}},[a._v("22. Veritabanı tablosundaki verilere erişim nasıl yönetilir?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-23"}},[a._v("23. Bir ekosistemdeki bir uygulama, başka bir ekosistemdeki diğer uygulamalarla veri alışverişinde bulunabilir mi?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-24"}},[a._v("24. Yeni bir ekosistemdeki tüm uygulamalar sıfırdan mı yazılmalı?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-25"}},[a._v("25. Başvuruların çalışması için herhangi bir ücret var mı?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-26"}},[a._v("26. Uygulamaların çalışmasını kim ödüyor?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-27"}},[a._v("27. Ekosistemdeki uygulamalar güvenlik açıklarından kaynaklanan saldırılardan nasıl korunur?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-28"}},[a._v("28. Gelecekteki planlarda hangi yeni özellikler uygulanacak?")])]),a._v(" "),l("li",[l("a",{attrs:{href:"#soru-29"}},[a._v("29. Çalışabilirliği nasıl kanıtlanır?")])])]),a._v(" "),l("h3",{attrs:{id:"_1-lutfen-kısaca-ibax-i-tanımlayın"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_1-lutfen-kısaca-ibax-i-tanımlayın"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-1"}},[a._v("1. Lütfen kısaca IBAX'i tanımlayın?")])]),a._v(" "),l("ul",[l("li",[a._v("Verilere, arayüzlere ve akıllı sözleşmelere erişim haklarını yönetmek için çok seviyeli bir izin sistemine sahip entegre bir uygulama geliştirme ortamına dayalı dijital bir ekosistem oluşturmayı amaçlayan bir blok zinciri platformudur.")])]),a._v(" "),l("h3",{attrs:{id:"_2-ibax-bitcoin-ethereum-veya-diger-blok-zincirleri-icin-gecerli-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_2-ibax-bitcoin-ethereum-veya-diger-blok-zincirleri-icin-gecerli-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-2"}},[a._v("2. IBax, Bitcoin, Ethereum veya diğer blok zincirleri için geçerli mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Uygulanamaz. IBax, kendi orijinal blok zinciri temelinde inşa edilmiştir.")])]),a._v(" "),l("h3",{attrs:{id:"_3-ibax-ile-akıllı-sozlesmeleri-yurutmek-icin-yerlesik-mekanizmalara-sahip-diger-herkese-acık-blok-zinciri-platformları-arasındaki-temel-farklar-nelerdir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_3-ibax-ile-akıllı-sozlesmeleri-yurutmek-icin-yerlesik-mekanizmalara-sahip-diger-herkese-acık-blok-zinciri-platformları-arasındaki-temel-farklar-nelerdir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-3"}},[a._v("3. IBax ile akıllı sözleşmeleri yürütmek için yerleşik mekanizmalara sahip diğer herkese açık blok zinciri platformları arasındaki temel farklar nelerdir?")])]),a._v(" "),l("ul",[l("li",[a._v("IBax, yukarıda bahsedilen blok zincirlerinde bulunamayan benzersiz özelliklere sahiptir:\n"),l("ul",[l("li",[a._v("tek bir istemci yazılımında entegre bir uygulama geliştirme ortamına sahiptir;\n"),l("ul",[l("li",[a._v("Sayfa tasarımı için özel şablon dili Logicor ve Needle sözleşme dili birbiriyle koordinelidir;")]),a._v(" "),l("li",[a._v("üyelere, rollere ve sözleşmelere izin verilebileceği verilere, arayüzlere ve akıllı sözleşmelere erişim haklarını yönetmek için çok seviyeli bir izin sistemine sahiptir;")]),a._v(" "),l("li",[a._v("kullanıcıların onlarla etkileşime girmesi için blok zinciri uygulamaları ve özerk yazılım ortamları oluşturmak için kullanılan ekosistem;")]),a._v(" "),l("li",[a._v("Hukuk sistemi, akıllı yasalarda (adanmış akıllı sözleşmeler) yazılmış bir kurallar dizisidir, platform kullanıcıları arasındaki ilişkiyi düzenler ve problem çözme için protokol parametrelerini değiştirme sürecini tanımlar.")])])])])])]),a._v(" "),l("h3",{attrs:{id:"_4-kendi-kripto-para-biriminiz-var-mı"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_4-kendi-kripto-para-biriminiz-var-mı"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-4"}},[a._v("4. Kendi kripto para biriminiz var mı?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, IBax kendi belirteci IBXC'yi kullanır.")])]),a._v(" "),l("h3",{attrs:{id:"_5-honor-node-nedir-ve-onu-kim-koruyabilir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_5-honor-node-nedir-ve-onu-kim-koruyabilir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-5"}},[a._v("5. Honor node nedir ve onu kim koruyabilir?")])]),a._v(" "),l("ul",[l("li",[a._v("Honor node, işlemleri doğrulama ve yeni bloklar oluşturma yetkisine sahip ağ düğümüdür.")]),a._v(" "),l("li",[a._v("Yeterli işlem gücüne ve hata toleransına sahip herhangi bir ağ düğümü, bir Honor node olabilir. IBax, bir Yetki Kanıtı (PoA) konsensüs mekanizması kullanır. Düğümler, ekosistem oylamasına dayalı doğrulama düğümleri haline gelebilir, ancak yalnızca platformun belirteç sahibi tarafından normal operasyonel yeteneklere sahip olduğu kanıtlanmış ekosistemler bu tür oylamaya katılabilir. Bu yetkilendirme algoritmasını kullanarak, ana düğüm, ağ operasyonunu sürdürmek onların çıkarına olduğu için büyük ekosistemler tarafından çalıştırılır.")])]),a._v(" "),l("h3",{attrs:{id:"_6-platform-ekosistemi-nedir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_6-platform-ekosistemi-nedir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-6"}},[a._v("6. Platform ekosistemi nedir?")])]),a._v(" "),l("ul",[l("li",[a._v("Bir ekosistem aslında blok zinciri uygulamaları ve bu uygulamalardaki kullanıcıların işlemlerini oluşturmak için kullanılan özerk bir yazılım ortamıdır.")])]),a._v(" "),l("h3",{attrs:{id:"_7-kimler-ekosistem-olusturabilir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_7-kimler-ekosistem-olusturabilir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-7"}},[a._v("7. Kimler ekosistem oluşturabilir?")])]),a._v(" "),l("ul",[l("li",[a._v("Platformun tüm kullanıcıları yeni ekosistemler oluşturabilir.")])]),a._v(" "),l("h3",{attrs:{id:"_8-kullanıcılar-nasıl-ekosistemin-uyesi-olurlar"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_8-kullanıcılar-nasıl-ekosistemin-uyesi-olurlar"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-8"}},[a._v("8. Kullanıcılar nasıl ekosistemin üyesi olurlar?")])]),a._v(" "),l("ul",[l("li",[a._v("Kullanıcılar, mevcut herhangi bir ekosistemin üyesi olarak kaydedilebilir. Ekosistem stratejisi, yeni ekosistemin temel kamu bilgilerini özel bir ekosistem kataloğunda yayınlayan farklı üye kabul prosedürlerini tanımlar.")])]),a._v(" "),l("h3",{attrs:{id:"_9-bir-kullanıcı-birden-fazla-ekosistem-olusturabilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_9-bir-kullanıcı-birden-fazla-ekosistem-olusturabilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-9"}},[a._v("9. Bir kullanıcı birden fazla ekosistem oluşturabilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, her kullanıcı istediği sayıda ekosistem oluşturabilir ve birden fazla ekosistemin üyesi olabilir.")])]),a._v(" "),l("h3",{attrs:{id:"_10-platform-uygulaması-nedir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_10-platform-uygulaması-nedir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-10"}},[a._v("10. Platform uygulaması nedir?")])]),a._v(" "),l("ul",[l("li",[a._v("Bir uygulama, bir işlevi veya hizmeti uygulayan eksiksiz bir yazılım ürünüdür. Uygulama veritabanı tabloları, sözleşmeler ve sayfalardan oluşmaktadır.")])]),a._v(" "),l("h3",{attrs:{id:"_11-uygulamayı-olusturmak-icin-hangi-programlama-dili-kullanılıyor"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_11-uygulamayı-olusturmak-icin-hangi-programlama-dili-kullanılıyor"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-11"}},[a._v("11. Uygulamayı oluşturmak için hangi programlama dili kullanılıyor?")])]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Sözleşme, platform ekibi tarafından geliştirilen Needle dilinde yazılmıştır, Daha fazla bilgi için bakınız: "),l("RouterLink",{attrs:{to:"/tr-TR/topics/script.html"}},[a._v("Akıllı Sözleşme")]),a._v(".")],1)]),a._v(" "),l("li",[l("p",[a._v("Sayfa, sayfa şablon dili olan Logicor dilinde yazılmıştır. Daha fazla bilgi için bkz.: "),l("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html"}},[a._v("Şablon Dili")]),a._v(".")],1)])]),a._v(" "),l("h3",{attrs:{id:"_12-uygulama-olusturmak-ve-kullanıcılarla-etkilesim-kurmak-icin-hangi-yazılımlar-kullanılır"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_12-uygulama-olusturmak-ve-kullanıcılarla-etkilesim-kurmak-icin-hangi-yazılımlar-kullanılır"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-12"}},[a._v("12. Uygulama oluşturmak ve kullanıcılarla etkileşim kurmak için hangi yazılımlar kullanılır?")])]),a._v(" "),l("ul",[l("li",[a._v("Uygulama programı Weaver'da yazılır ve yürütülür, başka bir yazılıma gerek yoktur.")])]),a._v(" "),l("h3",{attrs:{id:"_13-platform-sozlesmeleri-verilere-erismek-icin-ucuncu-taraf-api-leri-kullanabilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_13-platform-sozlesmeleri-verilere-erismek-icin-ucuncu-taraf-api-leri-kullanabilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-13"}},[a._v("13. Platform sözleşmeleri, verilere erişmek için üçüncü taraf API'leri kullanabilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Hayır, sözleşme yalnızca blok zincirinde depolanan verilere doğrudan erişebilir. "),l("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#virtual-private-ecosystem"}},[a._v("CLB")]),a._v(" harici veri kaynaklarını işlemek için kullanılır.")],1)]),a._v(" "),l("h3",{attrs:{id:"_14-blok-zincirinde-saklanan-sozlesme-degistirilebilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_14-blok-zincirinde-saklanan-sozlesme-degistirilebilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-14"}},[a._v("14. Blok zincirinde saklanan sözleşme değiştirilebilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, sözleşme değiştirilebilir. Sözleşmeyi değiştirme izni, değiştirmeyi reddetme veya sözleşmelerde veya üyeler tarafından değişiklik yapma izni verebilen veya akıllı yasada karmaşık bir dizi koşul yapılandırabilen yaratıcısı tarafından belirlenir.")]),a._v(" "),l("li",[a._v("Weaver, sözleşmelerin tüm sürümlerine erişim sağlar.")])]),a._v(" "),l("h3",{attrs:{id:"_15-akıllı-yasa-nedir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_15-akıllı-yasa-nedir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-15"}},[a._v("15. Akıllı yasa nedir?")])]),a._v(" "),l("ul",[l("li",[a._v("Akıllı hukuk, geleneksel sözleşmelerin işleyişini kontrol etmek ve kısıtlamak, böylece ekosistem üyelerinin faaliyetlerini kontrol etmek ve kısıtlamak için tasarlanmış bir sözleşmedir.")]),a._v(" "),l("li",[a._v("Bir dizi akıllı yasa, bir ekosistemin yasal sistemi olarak kabul edilebilir.")])]),a._v(" "),l("h3",{attrs:{id:"_16-sozlesme-diger-sozlesmeleri-cagırabilir-ve-yurutebilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_16-sozlesme-diger-sozlesmeleri-cagırabilir-ve-yurutebilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-16"}},[a._v("16. Sözleşme, diğer sözleşmeleri çağırabilir ve yürütebilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, sözleşme doğrudan adresleme yoluyla diğer sözleşmeleri arayabilir ve bunun için parametreler sağlayabilir veya sözleşmeyi bağlantı adıyla çağırabilir. Daha fazla bilgi için bkz.: "),l("RouterLink",{attrs:{to:"/tr-TR/topics/script.html"}},[a._v("Akıllı Sözleşme")]),a._v(".")],1)]),a._v(" "),l("h3",{attrs:{id:"_17-uygulama-bir-ana-sozlesmeyle-mi-calısıyor"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_17-uygulama-bir-ana-sozlesmeyle-mi-calısıyor"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-17"}},[a._v("17. Uygulama bir ana sözleşmeyle mi çalışıyor?")])]),a._v(" "),l("ul",[l("li",[a._v("Hayır, sözleşme, belirli işlevleri yerine getiren özerk bir program modülüdür. Her sözleşme, belirtilen verileri alacak, ardından bu verilerin doğruluğunu kontrol edecek ve veritabanına işlem olarak kaydedilen bazı işlemleri gerçekleştirecek şekilde yapılandırılır.")])]),a._v(" "),l("h3",{attrs:{id:"_18-uygulama-farklı-diller-icin-yerellestirilebilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_18-uygulama-farklı-diller-icin-yerellestirilebilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-18"}},[a._v("18. Uygulama farklı diller için yerelleştirilebilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, Weaver'ın yerleşik bir yerelleştirme destek mekanizması vardır ve herhangi bir dilde sayfa oluşturabilir.")])]),a._v(" "),l("h3",{attrs:{id:"_19-sablon-dili-kullanmadan-sayfa-olusturabilir-miyim"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_19-sablon-dili-kullanmadan-sayfa-olusturabilir-miyim"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-19"}},[a._v("19. Şablon dili kullanmadan sayfa oluşturabilir miyim?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, "),l("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html"}},[a._v("RESTful API")]),a._v(" v2 platformu kullanılarak yapılabilir.")],1)]),a._v(" "),l("h3",{attrs:{id:"_20-sayfalar-blok-zincirinde-mi-saklanıyor"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_20-sayfalar-blok-zincirinde-mi-saklanıyor"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-20"}},[a._v("20. Sayfalar blok zincirinde mi saklanıyor?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, sayfalar ve sözleşmeler blok zincirinde saklanır, bu da sahte olmalarını önler.")])]),a._v(" "),l("h3",{attrs:{id:"_21-sozlesmeli-islemler-icin-ne-tur-veritabanları-kullanılabilir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_21-sozlesmeli-islemler-icin-ne-tur-veritabanları-kullanılabilir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-21"}},[a._v("21. Sözleşmeli işlemler için ne tür veritabanları kullanılabilir?")])]),a._v(" "),l("ul",[l("li",[a._v("Şu anda PostgreSQL kullanılmaktadır.")])]),a._v(" "),l("h3",{attrs:{id:"_22-veritabanı-tablosundaki-verilere-erisim-nasıl-yonetilir"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_22-veritabanı-tablosundaki-verilere-erisim-nasıl-yonetilir"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-22"}},[a._v("22. Veritabanı tablosundaki verilere erişim nasıl yönetilir?")])]),a._v(" "),l("ul",[l("li",[a._v("Ekosistem üyeleri, roller veya belirtilen sözleşme yapılandırmaları için yeni alanlar, yeni girişler ekleyebilir veya sütunlardaki verilerin izinlerini değiştirebilirsiniz. Belirli işlemler gerçekleştirilerek oluşturulan sözleşmeler hariç.")])]),a._v(" "),l("h3",{attrs:{id:"_23-bir-ekosistemdeki-bir-uygulama-baska-bir-ekosistemdeki-diger-uygulamalarla-veri-alısverisinde-bulunabilir-mi"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_23-bir-ekosistemdeki-bir-uygulama-baska-bir-ekosistemdeki-diger-uygulamalarla-veri-alısverisinde-bulunabilir-mi"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-23"}},[a._v("23. Bir ekosistemdeki bir uygulama, başka bir ekosistemdeki diğer uygulamalarla veri alışverişinde bulunabilir mi?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, veri alışverişi tüm ekosistemler için geçerli olan global veri tabloları aracılığıyla organize edilebilir.")])]),a._v(" "),l("h3",{attrs:{id:"_24-yeni-bir-ekosistemdeki-tum-uygulamalar-sıfırdan-mı-yazılmalı"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_24-yeni-bir-ekosistemdeki-tum-uygulamalar-sıfırdan-mı-yazılmalı"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-24"}},[a._v("24. Yeni bir ekosistemdeki tüm uygulamalar sıfırdan mı yazılmalı?")])]),a._v(" "),l("ul",[l("li",[a._v("Hayır, her yeni ekosistemin kullanıma hazır bazı uygulamaları vardır:\n"),l("ul",[l("li",[a._v("Ekosistem üyelerini ve rollerini yönetmek için bir mekanizma;")]),a._v(" "),l("li",[a._v("Diğer belirteçleri yayınlamak ve yapılandırmak;")]),a._v(" "),l("li",[a._v("Bir oylama sistemi;")]),a._v(" "),l("li",[a._v("Bir bildirim sistemi;")]),a._v(" "),l("li",[a._v("Ekosistem üyeleri arasında bir haberci.")])])])]),a._v(" "),l("p",[a._v("Bu uygulamalar, herhangi bir ekosistemin özel ihtiyaçlarını karşılayacak şekilde düzenlenebilir ve yapılandırılabilir.")]),a._v(" "),l("h3",{attrs:{id:"_25-basvuruların-calısması-icin-herhangi-bir-ucret-var-mı"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_25-basvuruların-calısması-icin-herhangi-bir-ucret-var-mı"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-25"}},[a._v("25. Başvuruların çalışması için herhangi bir ücret var mı?")])]),a._v(" "),l("ul",[l("li",[a._v("Evet, honor node kaynaklarının kullanımı platformda ödeme yapılmasını gerektirir.")])]),a._v(" "),l("h3",{attrs:{id:"_26-uygulamaların-calısması-icin-kim-odeme-yapar"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_26-uygulamaların-calısması-icin-kim-odeme-yapar"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-26"}},[a._v("26. Uygulamaların çalışması için kim ödeme yapar?")])]),a._v(" "),l("p",[a._v("İlgili hesap adresleri için şu anda uygulamaların çalışması için ödeme yapmanın 4 yolu vardır:")]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Sözleşmeli arayanlar için, kullanıcı sözleşmeyi aradığında ücret varsayılan olarak kullanıcının hesabından ödenecektir;")])]),a._v(" "),l("li",[l("p",[a._v("Sözleşme bağlayıcı taraflar için ücret, sözleşmeyi oluşturan tarafından belirtilen bağlayıcı hesaptan ödenecektir;")])]),a._v(" "),l("li",[l("p",[a._v("Ekosistem oluşturucular için, bir ekosistem içindeki tüm uygulamaların ücreti sırasıyla ekosistem oluşturucu tarafından ödenecektir;")])]),a._v(" "),l("li",[l("p",[a._v("Özel ekosistem cüzdanı. Her ekosistemin özel bir hesabı vardır. Ekosistem yaratıcısı tarafından etkinleştirilirse, ekosistem içindeki tüm uygulamaların ücreti bu hesaptan ödenecektir.")])])]),a._v(" "),l("p",[a._v("Ödeme önceliği sırası: Özel ekosistem cüzdanı> Ekosistem oluşturucu> Sözleşme bağlayıcı taraf> Sözleşme arayan.")]),a._v(" "),l("h3",{attrs:{id:"_27-ekosistemdeki-uygulamaları-guvenlik-acıklarından-kaynaklanan-saldırılardan-nasıl-koruruz"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_27-ekosistemdeki-uygulamaları-guvenlik-acıklarından-kaynaklanan-saldırılardan-nasıl-koruruz"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-27"}},[a._v("27. Ekosistemdeki uygulamaları güvenlik açıklarından kaynaklanan saldırılardan nasıl koruruz?")])]),a._v(" "),l("ul",[l("li",[a._v("Platform ekibi, özellikle uygulamanın herhangi bir kullanıcı tarafından yazılabileceği düşünüldüğünde, uygulama kodundaki hataları tamamen önlemenin bir yolu olmadığını da bilir. Bu nedenle, güvenlik açıklarından yararlanmanın sonuçlarını ortadan kaldıracak bir mekanizma kurmaya karar verdik. Hukuk sistemi, uygulamanın saldırı işlemini durdurabilir ve orijinal durumuna geri yüklemek için bazı işlemleri kullanabilir. Hukuk sistemi, bu tür sözleşmelerin akdedilmesine ilişkin izinleri ve bu izinlerin verilmesine ilişkin oylama prosedürlerini öngörmektedir.")])]),a._v(" "),l("h3",{attrs:{id:"_28-gelecekteki-planlarda-hangi-yeni-ozellikler-uygulanacak"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_28-gelecekteki-planlarda-hangi-yeni-ozellikler-uygulanacak"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-28"}},[a._v("28. Gelecekteki planlarda hangi yeni özellikler uygulanacak?")])]),a._v(" "),l("ul",[l("li",[l("p",[a._v("Görsel akıllı sözleşme tasarımcısı;")])]),a._v(" "),l("li",[l("p",[a._v("Hibrit veritabanları desteği (SQL ve NoSQL);")])]),a._v(" "),l("li",[l("p",[a._v("Farklı ekosistemlerden işlemlerin paralel çoklu iş parçacıklı işlenmesi;")])]),a._v(" "),l("li",[l("p",[a._v("İstemci üzerinde kaynak yoğun hesaplamalar yapın;")])]),a._v(" "),l("li",[l("p",[a._v("Ekosistem barındırma ve bilgi işlem güç değişimi;")])]),a._v(" "),l("li",[l("p",[a._v("Alt düğümler, sunucuda yalnızca bazı blokları depolar;")])]),a._v(" "),l("li",[l("p",[a._v("Platformdaki verilerin işleyişini birleştirmek için anlamsal referanslar (ontoloji) kullanılır.")])])]),a._v(" "),l("h3",{attrs:{id:"_29-calısabilirligi-nasıl-kanıtlanır"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#_29-calısabilirligi-nasıl-kanıtlanır"}},[a._v("#")]),a._v(" "),l("span",{attrs:{id:"soru-29"}},[a._v("29. Çalışabilirliği nasıl kanıtlanır?")])]),a._v(" "),l("ul",[l("li",[a._v("IBax Ağı'nda bir dizi kavram kanıtı projeleri ve vakaları uygulanmıştır: sosyalleştirilmiş bir vergi tahsilatı ve elektronik fatura oluşturma ve dolaşım sistemi, tıbbi cihaz ve alet denetimi, sahteciliği önleme ve izleme sistemi, finansman ve denetim sistemi, oylama/anket sistemi, işletme kaydı, ticaret finansmanı araçları, varlık kaydı sözleşmesi yönetim sistemi vb.")])])])}),[],!1,null,null,null);i.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/119.760ef2ca.js b/assets/js/119.078cd29d.js similarity index 99% rename from assets/js/119.760ef2ca.js rename to assets/js/119.078cd29d.js index c0bca08..589285f 100644 --- a/assets/js/119.760ef2ca.js +++ b/assets/js/119.078cd29d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{497:function(a,t,e){"use strict";e.r(t);var s=e(51),n=Object(s.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"bir-ibax-agının-kurulması"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bir-ibax-agının-kurulması"}},[a._v("#")]),a._v(" Bir IBAX Ağının Kurulması")]),a._v(" "),e("p",[a._v("Bu bölümde, size kendi blok zinciri ağınızı nasıl kuracağınızı göstereceğiz.")]),a._v(" "),e("h2",{attrs:{id:"bir-dagıtım-ornegi"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bir-dagıtım-ornegi"}},[a._v("#")]),a._v(" Bir dağıtım örneği")]),a._v(" "),e("p",[a._v("Örnek olarak aşağıdaki üç düğümle bir blok zinciri ağı kurulacaktır.")]),a._v(" "),e("p",[a._v("Üç ağ düğümü:")]),a._v(" "),e("ul",[e("li",[a._v("Düğüm 1, blok zinciri ağındaki yeni bloklar oluşturabilen ve kendisine bağlı istemcilerden işlemler gönderebilen ilk düğümdür;")]),a._v(" "),e("li",[a._v("Düğüm 2, kendisine bağlı istemcilerden yeni bloklar oluşturabilen ve işlemler gönderebilen başka bir onur düğümüdür;")]),a._v(" "),e("li",[a._v("Düğüm 3, yeni bloklar oluşturamayan ancak kendisine bağlı istemcilerden işlem gönderebilen bir koruyucu düğümdür.")])]),a._v(" "),e("p",[a._v("Dağıtılacak üç düğümün yapılandırmaları:")]),a._v(" "),e("ul",[e("li",[a._v("Her düğüm kendi PostgreSQL veritabanı sistemi örneğini kullanır;")]),a._v(" "),e("li",[a._v("Her düğüm kendi Centrifugo hizmet örneğini kullanır;")]),a._v(" "),e("li",[a._v("Sunucu tarafı github arka ucu, diğer arka uç bileşenleriyle aynı ana bilgisayara dağıtılır.")])]),a._v(" "),e("p",[a._v("Düğümler tarafından kullanılan örnek adresler ve bağlantı noktaları aşağıdaki tabloda açıklanmıştır:")]),a._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"center"}},[a._v("Node")]),a._v(" "),e("th",{staticStyle:{"text-align":"center"}},[a._v("Component")]),a._v(" "),e("th",{staticStyle:{"text-align":"center"}},[a._v("IP & port")])])]),a._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("1")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("PostgreSQL")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("127.0.0.1:5432")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("1")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("Centrifugo")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.1:8000")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("1")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (TCP service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.1:7078")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("1")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (API service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.1:7079")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("2")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("PostgreSQL")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("127.0.0.1:5432")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("2")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("Centrifugo")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.2:8000")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("2")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (TCP service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.2:7078")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("2")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (API service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.2:7079")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("3")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("PostgreSQL")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("127.0.0.1:5432")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("3")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("Centrifugo")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.3:8000")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("3")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (TCP service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.3:7078")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("3")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (API service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.3:7079")])])])]),a._v(" "),e("h2",{attrs:{id:"dagıtım-asaması"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dagıtım-asaması"}},[a._v("#")]),a._v(" Dağıtım aşaması")]),a._v(" "),e("p",[a._v("Kendi blok zinciri ağınız birkaç aşamada devreye alınmalıdır:")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#bir-ibax-a%C4%9F%C4%B1n%C4%B1n-da%C4%9F%C4%B1t%C4%B1m%C4%B1"}},[a._v("Bir IBAX Ağının Dağıtımı")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#bir-da%C4%9F%C4%B1t%C4%B1m-%C3%B6rne%C4%9Fi"}},[a._v("Bir dağıtım örneği")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#da%C4%9F%C4%B1t%C4%B1m-a%C5%9Famas%C4%B1"}},[a._v("Dağıtım aşaması")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#sunucu-da%C4%9F%C4%B1t%C4%B1m%C4%B1"}},[a._v("Sunucu dağıtımı")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ilk-d%C3%BC%C4%9F%C3%BCm%C3%BC-da%C4%9F%C4%B1t%C4%B1n"}},[a._v("İlk düğümü dağıtın")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#ba%C4%9F%C4%B1ml%C4%B1l%C4%B1klar-ve-ortam-ayarlar%C4%B1"}},[a._v("Bağımlılıklar ve ortam ayarları")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#sudo"}},[a._v("sudo")])])])]),a._v(" "),e("li",[e("a",{attrs:{href:"#golang"}},[a._v("Golang")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#postgresql"}},[a._v("PostgreSQL")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Centrifugo"}},[a._v("Centrifugo")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#dizin-yap%C4%B1s%C4%B1"}},[a._v("Dizin yapısı")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#veritaban%C4%B1-olu%C5%9Ftur"}},[a._v("Veritabanı oluştur")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#centrifugo-yap%C4%B1land%C4%B1r%C4%B1n"}},[a._v("Centrifugo'yu Yapılandır")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#go-ibax'%C4%B1-kurun"}},[a._v("go-ibax'ı yükleyin")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%C4%B0lk-d%C3%BC%C4%9F%C3%BCm%C3%BC-yap%C4%B1land%C4%B1r%C4%B1n"}},[a._v("İlk düğümü yapılandırın")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%C4%B0lk-d%C3%BC%C4%9F%C3%BCm-sunucusunu-ba%C5%9Flat%C4%B1n"}},[a._v("İlk düğüm sunucusunu başlat")])])])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Di%C4%9Fer-d%C3%BC%C4%9F%C3%BCmleri-da%C4%9F%C4%B1t%C4%B1n"}},[a._v("Diğer düğümleri dağıtın")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#d%C3%BC%C4%9F%C3%BCm-2"}},[a._v("Düğüm 2")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#d%C3%BC%C4%9F%C3%BCm-3"}},[a._v("Düğüm 3")])])])]),a._v(" "),e("li",[e("a",{attrs:{href:"#front-end-da%C4%9F%C4%B1t%C4%B1m%C4%B1"}},[a._v("Frontend dağıtım")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#yaz%C4%B1l%C4%B1m-%C3%B6nko%C5%9Fullar%C4%B1"}},[a._v("Yazılım önkoşulları")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Bir-Weaver-uygulamas%C4%B1-olu%C5%9Fturun"}},[a._v("Bir Weaver uygulaması oluşturun")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Blok-zinciri-a%C4%9F%C4%B1-i%C3%A7in-yap%C4%B1land%C4%B1rma-dosyas%C4%B1n%C4%B1-ekleyin"}},[a._v("Blockchain ağı için yapılandırma dosyasını ekleyin")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Weaver-Web-Uygulamas%C4%B1-Olu%C5%9Fturun"}},[a._v("Weaver Web Uygulaması Oluşturun")])])])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Blok-zinciri-a%C4%9F%C4%B1n%C4%B1-yap%C4%B1land%C4%B1r%C4%B1n"}},[a._v("Blockchain ağını yapılandırın")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#%C4%B0%C3%A7erik-olu%C5%9Fturucu-hesab%C4%B1n%C4%B1-olu%C5%9Fturun"}},[a._v("İçerik oluşturucu hesabını oluşturun")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Uygulamalar%C4%B1,-rolleri-ve-%C5%9Fablonlar%C4%B1-i%C3%A7e-aktar%C4%B1n"}},[a._v("Uygulamaları, rolleri ve şablonları içe aktarın")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%C4%B0lk-d%C3%BC%C4%9F%C3%BCm%C3%BC-d%C3%BC%C4%9F%C3%BCm-listesine-ekleyin"}},[a._v("İlk düğümü düğüm listesine ekleyin")])])])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Ba%C5%9Fka-Honor-d%C3%BC%C4%9F%C3%BCmleri-ekleyin"}},[a._v("Diğer onur düğümleri ekleyin")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#Konsens%C3%BCs-rol-grubuna-%C3%BCye-ekleyin"}},[a._v("Konsensüs rol grubuna üye ekleyin")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Di%C4%9Fer-d%C3%BC%C4%9F%C3%BCmler-i%C3%A7in-sahip-hesab%C4%B1-olu%C5%9Fturun"}},[a._v("Diğer düğümler için sahip hesabı oluşturun")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Do%C4%9Frulay%C4%B1c%C4%B1-rol%C3%BCyle-d%C3%BC%C4%9F%C3%BCm-sahibini-atay%C4%B1n"}},[a._v("Düğüm sahibini Doğrulayıcı rolüyle atayın")])])])])])])]),a._v(" "),e("h2",{attrs:{id:"sunucu-dagıtımı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sunucu-dagıtımı"}},[a._v("#")]),a._v(" Sunucu dağıtımı")]),a._v(" "),e("h3",{attrs:{id:"ilk-dugumu-dagıtın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ilk-dugumu-dagıtın"}},[a._v("#")]),a._v(" İlk düğümü dağıtın")]),a._v(" "),e("p",[a._v("İlk düğüm özel bir düğümdür çünkü blok zinciri ağını başlatmak çok önemlidir. Blok zincirinin ilk bloğu, ilk düğüm tarafından oluşturulur ve diğer tüm düğümler blok zincirini ondan indirir. İlk düğümün sahibi platform yaratıcısıdır.")]),a._v(" "),e("h3",{attrs:{id:"bagımlılıklar-ve-ortam-ayarları"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bagımlılıklar-ve-ortam-ayarları"}},[a._v("#")]),a._v(" Bağımlılıklar ve ortam ayarları")]),a._v(" "),e("h4",{attrs:{id:"sudo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sudo"}},[a._v("#")]),a._v(" sudo")]),a._v(" "),e("p",[a._v("Debian 9'un tüm komutları, root olmayan bir kullanıcı olarak çalıştırılmalıdır. Ancak, bazı sistem komutlarının yürütülmesi için süper kullanıcı izinleri gerekir. Varsayılan olarak, sudo Debian 9'da kurulu değildir, önce onu kurmalısınız.")]),a._v(" "),e("ol",[e("li",[a._v("Süper kullanıcı olun.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("su")]),a._v(" -\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Sisteminizi yükseltin.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" update -y "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" upgrade -y "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" dist-upgrade -y\n")])])]),e("ol",{attrs:{start:"3"}},[e("li",[a._v("Install sudo。")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" -y\n")])])]),e("ol",{attrs:{start:"4"}},[e("li",[a._v("Kullanıcınızı sudo grubuna ekleyin.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("usermod")]),a._v(" -a -G "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" user\n")])])]),e("ol",{attrs:{start:"5"}},[e("li",[a._v("Yeniden başlattıktan sonra değişiklikler geçerli olur.")])]),a._v(" "),e("h3",{attrs:{id:"golang"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#golang"}},[a._v("#")]),a._v(" Golang")]),a._v(" "),e("p",[a._v("Go'yu "),e("a",{attrs:{href:"https://golang.org/doc/install#tarball",target:"_blank",rel:"noopener noreferrer"}},[a._v("Resmi Dokümantasyona"),e("OutboundLink")],1),a._v(" göre yükleyin.")]),a._v(" "),e("ol",[e("li",[a._v("Go'nun en son kararlı sürümünü (> 1.10.x) "),e("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Golang resmi web sitesinden"),e("OutboundLink")],1),a._v(" veya komut satırından indirin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("wget")]),a._v(" https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Tarball'ı "),e("code",[a._v("/usr/local")]),a._v(" dizinine çıkarmak için tar kullanın.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("tar")]),a._v(" -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz\n")])])]),e("ol",{attrs:{start:"3"}},[e("li",[a._v("PATH ortam değişkenlerine "),e("code",[a._v("/usr/local/go/bin")]),a._v(" ekleyin ("),e("code",[a._v("/etc/profile")]),a._v(" veya "),e("code",[a._v("$HOME/.profile")]),a._v(" konumunda bulunur).")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("export")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e("span",{pre:!0,attrs:{class:"token environment constant"}},[a._v("PATH")])]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token environment constant"}},[a._v("$PATH")]),a._v(":/usr/local/go/bin\n")])])]),e("ol",[e("li",[a._v('Değişikliklerin etkili olması için "source" dosyasını çalıştırın, örneğin:')])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("source")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token environment constant"}},[a._v("$HOME")]),a._v("/.profile\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Geçici dosyaları silin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("rm")]),a._v(" go1.11.2.linux-amd64.tar.gz\n")])])]),e("h3",{attrs:{id:"postgresql"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#postgresql"}},[a._v("#")]),a._v(" PostgreSQL")]),a._v(" "),e("ol",[e("li",[a._v("PostgreSQL (> v.10) ve psql'yi kurun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" -y postgresql\n")])])]),e("h3",{attrs:{id:"centrifugo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#centrifugo"}},[a._v("#")]),a._v(" Centrifugo")]),a._v(" "),e("ol",[e("li",[a._v("Centrifugo V.1.8.0'ı "),e("a",{attrs:{href:"https://github.com/centrifugal/centrifugo/releases/",target:"_blank",rel:"noopener noreferrer"}},[a._v("GitHub"),e("OutboundLink")],1),a._v(" adresinden veya komut satırından indirin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("wget")]),a._v(" https://github.com/centrifugal/centrifugo/releases/download/v1.8.0/centrifugo-1.8.0-linux-amd64.zip "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("unzip")]),a._v(" centrifugo-1.8.0-linux-amd64.zip "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" centrifugo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mv")]),a._v(" centrifugo-1.8.0-linux-amd64/* centrifugo/\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Geçici dosyaları silin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("rm")]),a._v(" -R centrifugo-1.8.0-linux-amd64 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("rm")]),a._v(" centrifugo-1.8.0-linux-amd64.zip\n")])])]),e("h3",{attrs:{id:"dizin-yapısı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dizin-yapısı"}},[a._v("#")]),a._v(" Dizin yapısı")]),a._v(" "),e("p",[a._v("Debian 9 sistemi için blockchain platformu tarafından kullanılan tüm yazılımların ayrı bir dizinde saklanması önerilir.")]),a._v(" "),e("p",[e("code",[a._v("/opt/backenddir")]),a._v(" dizini burada kullanılır, ancak herhangi bir dizini kullanabilirsiniz. Bu durumda, lütfen tüm komutları ve yapılandırma dosyalarını buna göre değiştirin.")]),a._v(" "),e("ol",[e("li",[a._v("Blok zinciri platformu için bir dizin oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" /opt/backenddir\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Kullanıcınızı dizinin sahibi yapın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("chown")]),a._v(" user /opt/backenddir/\n")])])]),e("ol",{attrs:{start:"3"}},[e("li",[a._v('Centrifugo, go-ibax ve düğüm verileri için alt dizinler oluşturun. Tüm düğüm verileri, "X" düğüm numarası olmak üzere "nodeX" adlı bir dizinde depolanır. Dağıtılacak düğüme göre, "düğüm1" Düğüm 1\'dir, "düğüm2" Düğüm 2\'dir vb.')])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" /opt/backenddir/go-ibax "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" /opt/backenddir/go-ibax/node1 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" /opt/backenddir/centrifugo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n")])])]),e("h3",{attrs:{id:"veritabanı-olustur"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veritabanı-olustur"}},[a._v("#")]),a._v(" Veritabanı oluştur")]),a._v(" "),e("ol",[e("li",[a._v("Kullanıcı parolasını postgres varsayılan parolası "),e("em",[a._v("123456")]),a._v(" ile değiştirin. Kendi parolanızı belirleyebilirsiniz, ancak bunu "),e("em",[a._v("config.toml")]),a._v(" düğüm yapılandırma dosyasında değiştirmelisiniz.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" -u postgres psql -c "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("\"ALTER USER postgres WITH PASSWORD '123456'\"")]),a._v("\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Düğüm için geçerli bir durum veritabanı oluşturun, örneğin "),e("strong",[a._v("chaindb")]),a._v(":")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" -u postgres psql -c "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"CREATE DATABASE chaindb"')]),a._v("\n")])])]),e("h3",{attrs:{id:"centrifugo-yapılandırın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#centrifugo-yapılandırın"}},[a._v("#")]),a._v(" Centrifugo Yapılandırın")]),a._v(" "),e("ol",[e("li",[a._v("Centrifugo yapılandırma dosyasını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("echo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('\'{"secret":"CENT_SECRET"}\'')]),a._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" /opt/backenddir/centrifugo/config.json\n")])])]),e("p",[a._v("Kendi "),e("em",[a._v("gizlinizi")]),a._v(" ayarlayabilirsiniz, ancak bunu "),e("em",[a._v("config.toml")]),a._v(" düğüm yapılandırma dosyasında da değiştirmelisiniz.")]),a._v(" "),e("h3",{attrs:{id:"go-ibax-ı-kurun"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#go-ibax-ı-kurun"}},[a._v("#")]),a._v(" go-ibax'ı kurun")]),a._v(" "),e("ol",[e("li",[a._v("GitHub'dan github-backend'i indirin:")]),a._v(" "),e("li",[a._v("go-ibax ikili dosyasını "),e("code",[a._v("/opt/backenddir/go-ibax")]),a._v(" dizinine kopyalayın. Varsayılan Go çalışma alanını kullanıyorsanız, ikili dosyalar "),e("code",[a._v("$HOME/go/bin")]),a._v(" dizininde bulunur:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("cp")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token environment constant"}},[a._v("$HOME")]),a._v("/go/bin/go-ibax /opt/backenddir/go-ibax\n")])])]),e("h3",{attrs:{id:"ilk-dugumu-yapılandırın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ilk-dugumu-yapılandırın"}},[a._v("#")]),a._v(" İlk düğümü yapılandırın")]),a._v(" "),e("ol",{attrs:{start:"3"}},[e("li",[a._v("Düğüm 1 için yapılandırma dosyasını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax config "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --dataDir"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node1 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --dbName"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("chaindb "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --centSecret"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"CENT_SECRET"')]),a._v(" --centUrl"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("http://192.168.1.1:8000 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --httpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.1 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --httpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7079")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --tcpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.1 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --tcpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7078")]),a._v("\n")])])]),e("ol",{attrs:{start:"4"}},[e("li",[a._v("Düğümün ve hesabın genel ve özel anahtarları dahil olmak üzere Düğüm 1'in anahtarlarını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax generateKeys "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node1/config.toml\n")])])]),e("ol",{attrs:{start:"5"}},[e("li",[a._v("İlk bloğu oluşturun:")])]),a._v(" "),e("blockquote",[e("p",[a._v("Not")]),a._v(" "),e("p",[a._v("Kendi blok zinciri ağınızı oluşturmak istiyorsanız, `--test=true' seçeneğini kullanmalısınız. Aksi takdirde yeni bir hesap oluşturamazsınız.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax generateFirstBlock "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node1/config.toml "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --test"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("true\n")])])]),e("ol",{attrs:{start:"6"}},[e("li",[a._v("Veritabanını başlatın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax initDatabase "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node1/config.toml\n")])])]),e("h3",{attrs:{id:"ilk-dugum-sunucusunu-baslatın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ilk-dugum-sunucusunu-baslatın"}},[a._v("#")]),a._v(" İlk düğüm sunucusunu başlatın")]),a._v(" "),e("p",[a._v("İlk düğüm sunucusunu başlatmak için aşağıdaki iki hizmeti başlatmanız gerekir:")]),a._v(" "),e("ul",[e("li",[a._v("Centrifugo")]),a._v(" "),e("li",[a._v("go-imax")])]),a._v(" "),e("p",[a._v("Bu dosyalarla "),e("a",{attrs:{href:"#https://wiki.debian.org/systemd/Services"}},[a._v("hizmetler")]),a._v(" oluşturamadıysanız, farklı konsollardaki dizinlerden ikili dosyaları çalıştırabilirsiniz.")]),a._v(" "),e("ol",[e("li",[a._v("Centrifugo çalıştırın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/centrifugo/centrifugo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n -a "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.1 -p "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("8000")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config /opt/backenddir/centrifugo/config.json\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("go-ibax'ı çalıştırın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax start "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node1/config.toml\n")])])]),e("h2",{attrs:{id:"diger-dugumleri-dagıtın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#diger-dugumleri-dagıtın"}},[a._v("#")]),a._v(" Diğer düğümleri dağıtın")]),a._v(" "),e("p",[a._v("Diğer tüm düğümlerin (Düğüm 2 ve Düğüm 3) konuşlandırılması birincisine benzer olsa da, üç fark vardır:")]),a._v(" "),e("ul",[e("li",[a._v("İlk bloğu oluşturmanız gerekmez. Ancak, Düğüm 1'den geçerli düğüm veri dizinine kopyalanması gerekir;")]),a._v(" "),e("li",[a._v("Düğüm, "),e("code",[a._v("--nodesAddr")]),a._v(" seçeneğini yapılandırarak Düğüm 1'den blokları indirmelidir;")]),a._v(" "),e("li",[a._v("Düğüm kendi adreslerini ve portlarını kullanmalıdır.")])]),a._v(" "),e("h3",{attrs:{id:"dugum-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dugum-2"}},[a._v("#")]),a._v(" Düğüm 2")]),a._v(" "),e("p",[a._v("Aşağıda gösterildiği gibi çalıştırma talimatlarını izleyin:")]),a._v(" "),e("ol",[e("li",[e("a",{attrs:{href:"#dependencies-and-environment-settings"}},[a._v("Bağımlılıklar ve ortam ayarları")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#create-a-database"}},[a._v("Veritabanı oluştur")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Centrifugo"}},[a._v("Centrifugo")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#install-go-ibax"}},[a._v("go-ibax'ı yükleyin")])]),a._v(" "),e("li",[a._v("Düğüm 2 için yapılandırma dosyasını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/go-ibax config "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--dataDir"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node2 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--dbName"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("chaindb "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--centSecret"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"CENT_SECRET"')]),a._v(" --centUrl"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("http://192.168.1.2:8000 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--httpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.2 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--httpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7079")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--tcpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.2 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--tcpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7078")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--nodesAddr"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.1\n")])])]),e("ol",{attrs:{start:"6"}},[e("li",[a._v("İlk blok dosyasını Düğüm 2'ye kopyalayın. Örneğin, bu işlemi Düğüm 2 üzerinden scp üzerinden gerçekleştirebilirsiniz:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("scp")]),a._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node2/\n")])])]),e("ol",{attrs:{start:"7"}},[e("li",[a._v("Düğümün ve hesabın genel ve özel anahtarları dahil olmak üzere Düğüm 2'nin anahtarlarını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/go-ibax generateKeys "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node2/config.toml\n")])])]),e("ol",{attrs:{start:"8"}},[e("li",[a._v("Veritabanını başlatın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" ./go-ibax initDatabase --config"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("node2/config.toml\n")])])]),e("ol",{attrs:{start:"9"}},[e("li",[a._v("Çalıştır centrifugo:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/centrifugo/centrifugo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n-a "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.2 -p "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("8000")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),e("ol",{attrs:{start:"10"}},[e("li",[a._v("Çalıştır go-ibax:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax start "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node2/config.toml\n")])])]),e("p",[a._v("Sonuç olarak, düğüm bloğu ilk düğümden indirir. Bu düğüm bir doğrulama düğümü olmadığı için yeni bir blok oluşturamaz. Düğüm 2, daha sonra doğrulama düğümleri listesine eklenecektir.")]),a._v(" "),e("h3",{attrs:{id:"dugum-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dugum-3"}},[a._v("#")]),a._v(" Düğüm 3")]),a._v(" "),e("p",[a._v("Aşağıda gösterildiği gibi çalıştırma talimatlarını izleyin:")]),a._v(" "),e("ol",[e("li",[e("p",[e("a",{attrs:{href:"#dependencies-and-environment-settings"}},[a._v("Bağımlılıklar ve ortam ayarları")])])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#create-a-database"}},[a._v("Veritabanı oluştur")])])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#Centrifugo"}},[a._v("Centrifugo")])])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#install-go-ibax"}},[a._v("go-ibax'ı yükleyin")])])]),a._v(" "),e("li",[e("p",[a._v("Düğüm 3 için yapılandırma dosyasını oluşturun:")])])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/go-ibax config "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--dataDir"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node3 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--dbName"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("chaindb "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--centSecret"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"CENT_SECRET"')]),a._v(" --centUrl"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("http://192.168.1.3:8000 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--httpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.3 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--httpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7079")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--tcpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.3 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--tcpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7078")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--nodesAddr"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.1\n")])])]),e("ol",{attrs:{start:"6"}},[e("li",[a._v("İlk blok dosyasını Düğüm 3'e kopyalayın. Örneğin, bu işlemi Düğüm 3'te scp aracılığıyla gerçekleştirebilirsiniz:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("scp")]),a._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node3/\n")])])]),e("ol",{attrs:{start:"7"}},[e("li",[a._v("Düğümün ve hesabın genel ve özel anahtarları dahil olmak üzere Düğüm 3'ün anahtarını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/go-ibax generateKeys "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node3/config.toml\n")])])]),e("ol",{attrs:{start:"8"}},[e("li",[a._v("Veritabanını başlatın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" ./go-ibax initDatabase --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("node3/config.toml\n")])])]),e("p",[a._v("9.Çalıştır centrifugo:")]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/centrifugo/centrifugo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n-a "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.3 -p "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("8000")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),e("p",[a._v("10.Çalıştır go-ibax:")]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/go-ibax start "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node3/config.toml\n")])])]),e("p",[a._v("Sonuç olarak, düğüm bloğu ilk düğümden indirir. Bu düğüm bir doğrulama düğümü olmadığı için yeni bir blok oluşturamaz. İstemci düğüme bağlı olabilir ve ağa işlemler gönderebilir.")]),a._v(" "),e("h2",{attrs:{id:"front-end-dagıtımı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#front-end-dagıtımı"}},[a._v("#")]),a._v(" Front-end dağıtımı")]),a._v(" "),e("p",[a._v("Yalnızca Debian 9 (Stretch) 64-bit Resmi Sürümüne "),e("strong",[a._v("GNOME GUI")]),a._v(' yüklendikten sonra, Govis istemcisi "yarn" paket yöneticisiyle oluşturulabilir.')]),a._v(" "),e("h3",{attrs:{id:"yazılım-onkosulları"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#yazılım-onkosulları"}},[a._v("#")]),a._v(" Yazılım önkoşulları")]),a._v(" "),e("ol",[e("li",[a._v("Node.js LTS sürüm 8.11'i Node.js resmi web sitesinden veya komut satırından indirin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("curl")]),a._v(" -sL https://deb.nodesource.com/setup_8.x "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" -E "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("bash")]),a._v("\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Node.js'yi yükleyin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" -y nodejs\n")])])]),e("ol",[e("li",[a._v("Yarn "),e("a",{attrs:{href:"https://github.com/yarnpkg/yarn/releases",target:"_blank",rel:"noopener noreferrer"}},[a._v("Github"),e("OutboundLink")],1),a._v(" deposundan veya komut satırından Yarn 1.7.0 sürümünü indirin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("wget")]),a._v(" https://github.com/yarnpkg/yarn/releases/download/v1.7.0/yarn_1.7.0_all.deb\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Kur Yarn:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" dpkg -i yarn_1.7.0_all.deb "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("rm")]),a._v(" yarn_1.7.0_all.deb\n")])])]),e("h3",{attrs:{id:"bir-weaver-uygulaması-olusturun"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bir-weaver-uygulaması-olusturun"}},[a._v("#")]),a._v(" Bir Weaver uygulaması oluşturun")]),a._v(" "),e("ol",[e("li",[a._v("Weaver'ın en son sürümünü github-frontend'den git aracılığıyla indirin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("git")]),a._v(" clone https://github.com/ibax-io/ibax-front.git\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Install Weaver dependencies via Yarn:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir/ibax-front/ "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("yarn")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v("\n")])])]),e("h3",{attrs:{id:"blok-zinciri-agı-icin-yapılandırma-dosyasını-ekleyin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blok-zinciri-agı-icin-yapılandırma-dosyasını-ekleyin"}},[a._v("#")]),a._v(" Blok zinciri ağı için yapılandırma dosyasını ekleyin")]),a._v(" "),e("ol",[e("li",[a._v("Düğüm bağlantısı hakkında bilgi içeren bir "),e("em",[a._v("settings.json")]),a._v(" dosyası oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cp/opt/backenddir/ibax-front/public/settings.json.dist "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n /opt/backenddir/ibax-front/public/public/settings.json\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[e("em",[a._v("settings.json")]),a._v(" dosyasını herhangi bir metin düzenleyicide düzenleyin ve gerekli ayarları bu biçimde ekleyin:")])]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("http://Node_IP-address:Node_HTTP-Port\n")])])]),e("p",[a._v("Üç düğüm için "),e("em",[a._v("settings.json")]),a._v(" dosyası örnekleri:")]),a._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[a._v('"fullNodes"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"http://192.168.1.1:7079"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"http://192.168.1.2:7079"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"http://192.168.1.3:7079"')]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),e("p",[a._v("Weaver Masaüstü Uygulaması Oluşturun")]),a._v(" "),e("p",[a._v("1.Masaüstü sürümünü oluşturmak için yarn kullanın:")]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir/ibax-front "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("yarn")]),a._v(" build-desktop\n")])])]),e("p",[a._v("2.Masaüstü sürümü, AppImage son eki biçiminde paketlenecektir:")]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("yarn")]),a._v(" release --publish never -l\n")])])]),e("p",[a._v("Oluşturulduktan sonra uygulamanız kullanılabilir ancak bağlantı konfigürasyonu değiştirilemez. Bu ayarların değiştirilmesi gerekiyorsa, uygulamanın yeni bir sürümü oluşturulmalıdır.")]),a._v(" "),e("h3",{attrs:{id:"weaver-web-uygulaması-olusturun"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#weaver-web-uygulaması-olusturun"}},[a._v("#")]),a._v(" Weaver Web Uygulaması Oluşturun")]),a._v(" "),e("ol",[e("li",[a._v("Bir web uygulaması oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir/ibax-front/ "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("yarn")]),a._v(" build\n")])])]),e("p",[a._v("Oluşturulduktan sonra yeniden dağıtılabilir dosyalar /build dizinine yerleştirilecektir. Dağıtım için istediğiniz herhangi bir web sunucusunu kullanabilirsiniz ve "),e("em",[a._v("settings.json")]),a._v(" dosyası da bu dizine yerleştirilmelidir. Bağlantı ayarları değiştirilirse uygulamayı yeniden oluşturmaya gerek olmadığını unutmayın. Bunun yerine "),e("em",[a._v("settings.json")]),a._v(" dosyasını düzenleyin ve web sunucusunu yeniden başlatın.")]),a._v(" "),e("ol",[e("li",[a._v("Geliştirme veya test amacıyla Yarn'ın web sunucusunu oluşturabilirsiniz:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("yarn")]),a._v(" global "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("add")]),a._v(" serve "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" serve -s build\n")])])]),e("p",[a._v("Bundan sonra, Weaver web uygulamanız şu konumda kullanılabilir olacaktır: "),e("code",[a._v("http://localhost:5000")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"blok-zinciri-agını-yapılandırın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blok-zinciri-agını-yapılandırın"}},[a._v("#")]),a._v(" Blok zinciri ağını yapılandırın")]),a._v(" "),e("h3",{attrs:{id:"icerik-olusturucu-hesabını-olusturun"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#icerik-olusturucu-hesabını-olusturun"}},[a._v("#")]),a._v(" İçerik oluşturucu hesabını oluşturun")]),a._v(" "),e("p",[a._v("İlk düğüm sahibi için bir hesap oluşturun. Bu hesap, yeni blok zinciri platformunun yaratıcısıdır ve yönetici erişimine sahiptir.")]),a._v(" "),e("ol",[e("li",[e("p",[a._v("Weaver'ı çalıştırın;")])]),a._v(" "),e("li",[e("p",[a._v("Aşağıdaki verileri kullanarak mevcut hesabı içe aktarın:")])])]),a._v(" "),e("p",[a._v("– "),e("code",[a._v("/opt/backenddir/node1/PrivateKey")]),a._v(" dosyasında bulunan düğüm sahibinin özel anahtarının yedeğini yükleyin.")]),a._v(" "),e("blockquote",[e("p",[a._v("Not")]),a._v(" "),e("p",[a._v("Bu dizinde iki özel anahtar dosyası vardır. "),e("code",[a._v("PrivateKey")]),a._v(" dosyası, düğüm sahibinin hesabını oluşturmak için kullanılır. 'NodePrivateKey' dosyası, düğümün kendisinin özel anahtarıdır ve gizli tutulmalıdır.")])]),a._v(" "),e("p",[a._v("3.Hesaba giriş yaptıktan sonra, şu anda herhangi bir rol oluşturulmadığı için lütfen Rolsüz seçeneğini seçiniz.")]),a._v(" "),e("h3",{attrs:{id:"uygulamaları-rolleri-ve-sablonları-ice-aktarın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#uygulamaları-rolleri-ve-sablonları-ice-aktarın"}},[a._v("#")]),a._v(" Uygulamaları, rolleri ve şablonları içe aktarın")]),a._v(" "),e("p",[a._v("Şu anda, blockchain platformu boş bir durumda. Temel ekosistem işlevlerini destekleyen roller, şablonlar ve uygulama çerçeveleri ekleyerek yapılandırabilirsiniz.")]),a._v(" "),e("p",[a._v("1.Uygulama deposunu klonlayın;")]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("git")]),a._v(" clone https://github.com/ibax-io/dapps.git\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[e("p",[a._v("Weaver'da Geliştirici> İçe Aktar'a gidin;")])]),a._v(" "),e("li",[e("p",[a._v("Uygulamaları aşağıdaki sıraya göre içe aktarın:")])])]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v(" A./opt/backenddir/dapps/system.json \n B./opt/backenddir/dapps/conditions.json \n C./opt/backenddir/dapps/basic.json \n D./opt/backenddir/dapps/lang_res.json\n")])])]),e("ol",{attrs:{start:"4"}},[e("li",[a._v("Yönetici> Rol'e gidin ve Varsayılan Rolü Yükle'ye tıklayın;")])]),a._v(" "),e("p",[a._v("5.Sağ üst köşedeki konfigürasyon dosyası menüsünden sistemden çıkın;")]),a._v(" "),e("p",[a._v("6.Sisteme Yönetici olarak giriş yapın;")]),a._v(" "),e("ol",{attrs:{start:"7"}},[e("li",[a._v("Ana Sayfa> Oy> Şablon Listesi'ne gidin ve Varsayılan Şablonu Yükle'ye tıklayın.")])]),a._v(" "),e("h3",{attrs:{id:"ilk-dugumu-dugum-listesine-ekleyin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ilk-dugumu-dugum-listesine-ekleyin"}},[a._v("#")]),a._v(" İlk düğümü düğüm listesine ekleyin")]),a._v(" "),e("p",[a._v("1.Geliştirici> Platform Parametreleri'ne gidin ve first_nodes parametresini tıklayın;")]),a._v(" "),e("p",[a._v("2.İlk blok zinciri ağ düğümünün parametrelerini belirtin.")]),a._v(" "),e("ul",[e("li",[a._v("public_key - Düğümün genel anahtarı "),e("code",[a._v("/opt/backenddir/node1/NodePublicKey")]),a._v(" dosyasında bulunur;")])]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v('{"api_address":"http://192.168.1.1:7079","public_key":"%node_public_key%","tcp_address":"192.168.1.1:7078"}\n')])])]),e("h2",{attrs:{id:"baska-honor-dugumleri-ekleyin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#baska-honor-dugumleri-ekleyin"}},[a._v("#")]),a._v(" Başka Honor düğümleri ekleyin")]),a._v(" "),e("h3",{attrs:{id:"konsensus-rol-grubuna-uye-ekleyin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#konsensus-rol-grubuna-uye-ekleyin"}},[a._v("#")]),a._v(" Konsensüs rol grubuna üye ekleyin")]),a._v(" "),e("p",[a._v("Varsayılan olarak, yalnızca fikir birliği rolü (Consensus) grubundaki üyeler, diğer ana düğümleri eklemek için gereken oylamaya katılabilir. Bu, yeni bir ana düğüm eklemeden önce ekosistem üyelerinin role atanması gerektiği anlamına gelir.\nBu bölümde, içerik oluşturucunun hesabı, fikir birliği rol grubunun tek üyesi olarak belirlenir. Bir üretim ortamında, bu rolün yönetişimi gerçekleştiren platform üyelerine atanması gerekir.")]),a._v(" "),e("ol",[e("li",[e("p",[a._v("Ana Sayfa> Rol'e gidin ve Konsensüs'e tıklayın;")])]),a._v(" "),e("li",[e("p",[a._v("Oluşturanın hesabını role atamak için Ata'yı tıklayın.")])])]),a._v(" "),e("h3",{attrs:{id:"diger-dugumler-icin-sahip-hesabı-olusturun"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#diger-dugumler-icin-sahip-hesabı-olusturun"}},[a._v("#")]),a._v(" Diğer düğümler için sahip hesabı oluşturun")]),a._v(" "),e("ol",[e("li",[e("p",[a._v("Weaver'ı çalıştırın;")])]),a._v(" "),e("li",[e("p",[a._v("Aşağıdaki verileri kullanarak mevcut hesabı içe aktarın:\n– "),e("code",[a._v("/opt/backenddir/node2/PrivateKey")]),a._v(" dosyasında bulunan düğüm sahibinin özel anahtarının yedeğini yükleyin.")])]),a._v(" "),e("li",[e("p",[a._v("Hesaba giriş yaptıktan sonra, şu anda herhangi bir rol oluşturulmadığı için lütfen Rolsüz seçeneğini seçin.")])]),a._v(" "),e("li",[e("p",[a._v("Ana Sayfa> Kişisel Bilgiler'e gidin ve kişisel bilgilerin başlığına tıklayın;")])]),a._v(" "),e("li",[e("p",[a._v("Hesap ayrıntılarını ekleyin (kişisel bilgi başlığı, açıklama vb.).")])])]),a._v(" "),e("h3",{attrs:{id:"dogrulayıcı-roluyle-dugum-sahibini-atayın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dogrulayıcı-roluyle-dugum-sahibini-atayın"}},[a._v("#")]),a._v(" Doğrulayıcı rolüyle düğüm sahibini atayın")]),a._v(" "),e("ol",[e("li",[a._v("Yeni düğüm sahibi tarafından yapılan işlemler:\n"),e("ol",[e("li",[a._v("Ana Sayfa> Doğrulayıcı'ya gidin;")]),a._v(" "),e("li",[a._v("Talep Oluştur'a tıklayın ve doğrulayıcı adayın başvuru formunu doldurun;")]),a._v(" "),e("li",[a._v("İstek gönder'e tıklayın.")])])]),a._v(" "),e("li",[a._v("Oluşturucu tarafından yapılan işlemler:\n"),e("ol",[e("li",[a._v("Konsensüs rolüyle oturum açın (Consensus);")]),a._v(" "),e("li",[a._v("Ana Sayfa> Doğrulayıcı'ya gidin;")]),a._v(" "),e("li",[a._v('Adayın isteğine göre oylamaya başlamak için "Oynat" simgesine tıklayın;')]),a._v(" "),e("li",[a._v("Ana Sayfa> Oy'a gidin ve Oylama durumunu güncelle'yi tıklayın;")]),a._v(" "),e("li",[a._v("Oylama adına tıklayın ve düğüm sahibi için oy verin.")])])])]),a._v(" "),e("p",[a._v("Sonuç olarak, yeni düğümün sahibinin hesabına Doğrulayıcı rolü atanır ve yeni düğüm, ana düğümler listesine eklenir.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{500:function(a,t,e){"use strict";e.r(t);var s=e(51),n=Object(s.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"bir-ibax-agının-kurulması"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bir-ibax-agının-kurulması"}},[a._v("#")]),a._v(" Bir IBAX Ağının Kurulması")]),a._v(" "),e("p",[a._v("Bu bölümde, size kendi blok zinciri ağınızı nasıl kuracağınızı göstereceğiz.")]),a._v(" "),e("h2",{attrs:{id:"bir-dagıtım-ornegi"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bir-dagıtım-ornegi"}},[a._v("#")]),a._v(" Bir dağıtım örneği")]),a._v(" "),e("p",[a._v("Örnek olarak aşağıdaki üç düğümle bir blok zinciri ağı kurulacaktır.")]),a._v(" "),e("p",[a._v("Üç ağ düğümü:")]),a._v(" "),e("ul",[e("li",[a._v("Düğüm 1, blok zinciri ağındaki yeni bloklar oluşturabilen ve kendisine bağlı istemcilerden işlemler gönderebilen ilk düğümdür;")]),a._v(" "),e("li",[a._v("Düğüm 2, kendisine bağlı istemcilerden yeni bloklar oluşturabilen ve işlemler gönderebilen başka bir onur düğümüdür;")]),a._v(" "),e("li",[a._v("Düğüm 3, yeni bloklar oluşturamayan ancak kendisine bağlı istemcilerden işlem gönderebilen bir koruyucu düğümdür.")])]),a._v(" "),e("p",[a._v("Dağıtılacak üç düğümün yapılandırmaları:")]),a._v(" "),e("ul",[e("li",[a._v("Her düğüm kendi PostgreSQL veritabanı sistemi örneğini kullanır;")]),a._v(" "),e("li",[a._v("Her düğüm kendi Centrifugo hizmet örneğini kullanır;")]),a._v(" "),e("li",[a._v("Sunucu tarafı github arka ucu, diğer arka uç bileşenleriyle aynı ana bilgisayara dağıtılır.")])]),a._v(" "),e("p",[a._v("Düğümler tarafından kullanılan örnek adresler ve bağlantı noktaları aşağıdaki tabloda açıklanmıştır:")]),a._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"center"}},[a._v("Node")]),a._v(" "),e("th",{staticStyle:{"text-align":"center"}},[a._v("Component")]),a._v(" "),e("th",{staticStyle:{"text-align":"center"}},[a._v("IP & port")])])]),a._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("1")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("PostgreSQL")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("127.0.0.1:5432")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("1")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("Centrifugo")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.1:8000")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("1")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (TCP service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.1:7078")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("1")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (API service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.1:7079")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("2")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("PostgreSQL")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("127.0.0.1:5432")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("2")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("Centrifugo")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.2:8000")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("2")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (TCP service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.2:7078")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("2")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (API service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.2:7079")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("3")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("PostgreSQL")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("127.0.0.1:5432")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("3")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("Centrifugo")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.3:8000")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("3")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (TCP service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.3:7078")])]),a._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[a._v("3")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("go-ibax (API service)")]),a._v(" "),e("td",{staticStyle:{"text-align":"center"}},[a._v("192.168.1.3:7079")])])])]),a._v(" "),e("h2",{attrs:{id:"dagıtım-asaması"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dagıtım-asaması"}},[a._v("#")]),a._v(" Dağıtım aşaması")]),a._v(" "),e("p",[a._v("Kendi blok zinciri ağınız birkaç aşamada devreye alınmalıdır:")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#bir-ibax-a%C4%9F%C4%B1n%C4%B1n-da%C4%9F%C4%B1t%C4%B1m%C4%B1"}},[a._v("Bir IBAX Ağının Dağıtımı")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#bir-da%C4%9F%C4%B1t%C4%B1m-%C3%B6rne%C4%9Fi"}},[a._v("Bir dağıtım örneği")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#da%C4%9F%C4%B1t%C4%B1m-a%C5%9Famas%C4%B1"}},[a._v("Dağıtım aşaması")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#sunucu-da%C4%9F%C4%B1t%C4%B1m%C4%B1"}},[a._v("Sunucu dağıtımı")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ilk-d%C3%BC%C4%9F%C3%BCm%C3%BC-da%C4%9F%C4%B1t%C4%B1n"}},[a._v("İlk düğümü dağıtın")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#ba%C4%9F%C4%B1ml%C4%B1l%C4%B1klar-ve-ortam-ayarlar%C4%B1"}},[a._v("Bağımlılıklar ve ortam ayarları")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#sudo"}},[a._v("sudo")])])])]),a._v(" "),e("li",[e("a",{attrs:{href:"#golang"}},[a._v("Golang")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#postgresql"}},[a._v("PostgreSQL")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Centrifugo"}},[a._v("Centrifugo")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#dizin-yap%C4%B1s%C4%B1"}},[a._v("Dizin yapısı")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#veritaban%C4%B1-olu%C5%9Ftur"}},[a._v("Veritabanı oluştur")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#centrifugo-yap%C4%B1land%C4%B1r%C4%B1n"}},[a._v("Centrifugo'yu Yapılandır")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#go-ibax'%C4%B1-kurun"}},[a._v("go-ibax'ı yükleyin")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%C4%B0lk-d%C3%BC%C4%9F%C3%BCm%C3%BC-yap%C4%B1land%C4%B1r%C4%B1n"}},[a._v("İlk düğümü yapılandırın")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%C4%B0lk-d%C3%BC%C4%9F%C3%BCm-sunucusunu-ba%C5%9Flat%C4%B1n"}},[a._v("İlk düğüm sunucusunu başlat")])])])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Di%C4%9Fer-d%C3%BC%C4%9F%C3%BCmleri-da%C4%9F%C4%B1t%C4%B1n"}},[a._v("Diğer düğümleri dağıtın")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#d%C3%BC%C4%9F%C3%BCm-2"}},[a._v("Düğüm 2")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#d%C3%BC%C4%9F%C3%BCm-3"}},[a._v("Düğüm 3")])])])]),a._v(" "),e("li",[e("a",{attrs:{href:"#front-end-da%C4%9F%C4%B1t%C4%B1m%C4%B1"}},[a._v("Frontend dağıtım")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#yaz%C4%B1l%C4%B1m-%C3%B6nko%C5%9Fullar%C4%B1"}},[a._v("Yazılım önkoşulları")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Bir-Weaver-uygulamas%C4%B1-olu%C5%9Fturun"}},[a._v("Bir Weaver uygulaması oluşturun")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Blok-zinciri-a%C4%9F%C4%B1-i%C3%A7in-yap%C4%B1land%C4%B1rma-dosyas%C4%B1n%C4%B1-ekleyin"}},[a._v("Blockchain ağı için yapılandırma dosyasını ekleyin")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Weaver-Web-Uygulamas%C4%B1-Olu%C5%9Fturun"}},[a._v("Weaver Web Uygulaması Oluşturun")])])])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Blok-zinciri-a%C4%9F%C4%B1n%C4%B1-yap%C4%B1land%C4%B1r%C4%B1n"}},[a._v("Blockchain ağını yapılandırın")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#%C4%B0%C3%A7erik-olu%C5%9Fturucu-hesab%C4%B1n%C4%B1-olu%C5%9Fturun"}},[a._v("İçerik oluşturucu hesabını oluşturun")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Uygulamalar%C4%B1,-rolleri-ve-%C5%9Fablonlar%C4%B1-i%C3%A7e-aktar%C4%B1n"}},[a._v("Uygulamaları, rolleri ve şablonları içe aktarın")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#%C4%B0lk-d%C3%BC%C4%9F%C3%BCm%C3%BC-d%C3%BC%C4%9F%C3%BCm-listesine-ekleyin"}},[a._v("İlk düğümü düğüm listesine ekleyin")])])])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Ba%C5%9Fka-Honor-d%C3%BC%C4%9F%C3%BCmleri-ekleyin"}},[a._v("Diğer onur düğümleri ekleyin")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#Konsens%C3%BCs-rol-grubuna-%C3%BCye-ekleyin"}},[a._v("Konsensüs rol grubuna üye ekleyin")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Di%C4%9Fer-d%C3%BC%C4%9F%C3%BCmler-i%C3%A7in-sahip-hesab%C4%B1-olu%C5%9Fturun"}},[a._v("Diğer düğümler için sahip hesabı oluşturun")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Do%C4%9Frulay%C4%B1c%C4%B1-rol%C3%BCyle-d%C3%BC%C4%9F%C3%BCm-sahibini-atay%C4%B1n"}},[a._v("Düğüm sahibini Doğrulayıcı rolüyle atayın")])])])])])])]),a._v(" "),e("h2",{attrs:{id:"sunucu-dagıtımı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sunucu-dagıtımı"}},[a._v("#")]),a._v(" Sunucu dağıtımı")]),a._v(" "),e("h3",{attrs:{id:"ilk-dugumu-dagıtın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ilk-dugumu-dagıtın"}},[a._v("#")]),a._v(" İlk düğümü dağıtın")]),a._v(" "),e("p",[a._v("İlk düğüm özel bir düğümdür çünkü blok zinciri ağını başlatmak çok önemlidir. Blok zincirinin ilk bloğu, ilk düğüm tarafından oluşturulur ve diğer tüm düğümler blok zincirini ondan indirir. İlk düğümün sahibi platform yaratıcısıdır.")]),a._v(" "),e("h3",{attrs:{id:"bagımlılıklar-ve-ortam-ayarları"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bagımlılıklar-ve-ortam-ayarları"}},[a._v("#")]),a._v(" Bağımlılıklar ve ortam ayarları")]),a._v(" "),e("h4",{attrs:{id:"sudo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sudo"}},[a._v("#")]),a._v(" sudo")]),a._v(" "),e("p",[a._v("Debian 9'un tüm komutları, root olmayan bir kullanıcı olarak çalıştırılmalıdır. Ancak, bazı sistem komutlarının yürütülmesi için süper kullanıcı izinleri gerekir. Varsayılan olarak, sudo Debian 9'da kurulu değildir, önce onu kurmalısınız.")]),a._v(" "),e("ol",[e("li",[a._v("Süper kullanıcı olun.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("su")]),a._v(" -\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Sisteminizi yükseltin.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" update -y "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" upgrade -y "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" dist-upgrade -y\n")])])]),e("ol",{attrs:{start:"3"}},[e("li",[a._v("Install sudo。")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" -y\n")])])]),e("ol",{attrs:{start:"4"}},[e("li",[a._v("Kullanıcınızı sudo grubuna ekleyin.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("usermod")]),a._v(" -a -G "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" user\n")])])]),e("ol",{attrs:{start:"5"}},[e("li",[a._v("Yeniden başlattıktan sonra değişiklikler geçerli olur.")])]),a._v(" "),e("h3",{attrs:{id:"golang"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#golang"}},[a._v("#")]),a._v(" Golang")]),a._v(" "),e("p",[a._v("Go'yu "),e("a",{attrs:{href:"https://golang.org/doc/install#tarball",target:"_blank",rel:"noopener noreferrer"}},[a._v("Resmi Dokümantasyona"),e("OutboundLink")],1),a._v(" göre yükleyin.")]),a._v(" "),e("ol",[e("li",[a._v("Go'nun en son kararlı sürümünü (> 1.10.x) "),e("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[a._v("Golang resmi web sitesinden"),e("OutboundLink")],1),a._v(" veya komut satırından indirin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("wget")]),a._v(" https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Tarball'ı "),e("code",[a._v("/usr/local")]),a._v(" dizinine çıkarmak için tar kullanın.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("tar")]),a._v(" -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz\n")])])]),e("ol",{attrs:{start:"3"}},[e("li",[a._v("PATH ortam değişkenlerine "),e("code",[a._v("/usr/local/go/bin")]),a._v(" ekleyin ("),e("code",[a._v("/etc/profile")]),a._v(" veya "),e("code",[a._v("$HOME/.profile")]),a._v(" konumunda bulunur).")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("export")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e("span",{pre:!0,attrs:{class:"token environment constant"}},[a._v("PATH")])]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token environment constant"}},[a._v("$PATH")]),a._v(":/usr/local/go/bin\n")])])]),e("ol",[e("li",[a._v('Değişikliklerin etkili olması için "source" dosyasını çalıştırın, örneğin:')])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("source")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token environment constant"}},[a._v("$HOME")]),a._v("/.profile\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Geçici dosyaları silin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("rm")]),a._v(" go1.11.2.linux-amd64.tar.gz\n")])])]),e("h3",{attrs:{id:"postgresql"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#postgresql"}},[a._v("#")]),a._v(" PostgreSQL")]),a._v(" "),e("ol",[e("li",[a._v("PostgreSQL (> v.10) ve psql'yi kurun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" -y postgresql\n")])])]),e("h3",{attrs:{id:"centrifugo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#centrifugo"}},[a._v("#")]),a._v(" Centrifugo")]),a._v(" "),e("ol",[e("li",[a._v("Centrifugo V.1.8.0'ı "),e("a",{attrs:{href:"https://github.com/centrifugal/centrifugo/releases/",target:"_blank",rel:"noopener noreferrer"}},[a._v("GitHub"),e("OutboundLink")],1),a._v(" adresinden veya komut satırından indirin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("wget")]),a._v(" https://github.com/centrifugal/centrifugo/releases/download/v1.8.0/centrifugo-1.8.0-linux-amd64.zip "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("unzip")]),a._v(" centrifugo-1.8.0-linux-amd64.zip "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" centrifugo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mv")]),a._v(" centrifugo-1.8.0-linux-amd64/* centrifugo/\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Geçici dosyaları silin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("rm")]),a._v(" -R centrifugo-1.8.0-linux-amd64 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("rm")]),a._v(" centrifugo-1.8.0-linux-amd64.zip\n")])])]),e("h3",{attrs:{id:"dizin-yapısı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dizin-yapısı"}},[a._v("#")]),a._v(" Dizin yapısı")]),a._v(" "),e("p",[a._v("Debian 9 sistemi için blockchain platformu tarafından kullanılan tüm yazılımların ayrı bir dizinde saklanması önerilir.")]),a._v(" "),e("p",[e("code",[a._v("/opt/backenddir")]),a._v(" dizini burada kullanılır, ancak herhangi bir dizini kullanabilirsiniz. Bu durumda, lütfen tüm komutları ve yapılandırma dosyalarını buna göre değiştirin.")]),a._v(" "),e("ol",[e("li",[a._v("Blok zinciri platformu için bir dizin oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" /opt/backenddir\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Kullanıcınızı dizinin sahibi yapın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("chown")]),a._v(" user /opt/backenddir/\n")])])]),e("ol",{attrs:{start:"3"}},[e("li",[a._v('Centrifugo, go-ibax ve düğüm verileri için alt dizinler oluşturun. Tüm düğüm verileri, "X" düğüm numarası olmak üzere "nodeX" adlı bir dizinde depolanır. Dağıtılacak düğüme göre, "düğüm1" Düğüm 1\'dir, "düğüm2" Düğüm 2\'dir vb.')])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" /opt/backenddir/go-ibax "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" /opt/backenddir/go-ibax/node1 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mkdir")]),a._v(" /opt/backenddir/centrifugo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n")])])]),e("h3",{attrs:{id:"veritabanı-olustur"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veritabanı-olustur"}},[a._v("#")]),a._v(" Veritabanı oluştur")]),a._v(" "),e("ol",[e("li",[a._v("Kullanıcı parolasını postgres varsayılan parolası "),e("em",[a._v("123456")]),a._v(" ile değiştirin. Kendi parolanızı belirleyebilirsiniz, ancak bunu "),e("em",[a._v("config.toml")]),a._v(" düğüm yapılandırma dosyasında değiştirmelisiniz.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" -u postgres psql -c "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("\"ALTER USER postgres WITH PASSWORD '123456'\"")]),a._v("\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Düğüm için geçerli bir durum veritabanı oluşturun, örneğin "),e("strong",[a._v("chaindb")]),a._v(":")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" -u postgres psql -c "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"CREATE DATABASE chaindb"')]),a._v("\n")])])]),e("h3",{attrs:{id:"centrifugo-yapılandırın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#centrifugo-yapılandırın"}},[a._v("#")]),a._v(" Centrifugo Yapılandırın")]),a._v(" "),e("ol",[e("li",[a._v("Centrifugo yapılandırma dosyasını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("echo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('\'{"secret":"CENT_SECRET"}\'')]),a._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" /opt/backenddir/centrifugo/config.json\n")])])]),e("p",[a._v("Kendi "),e("em",[a._v("gizlinizi")]),a._v(" ayarlayabilirsiniz, ancak bunu "),e("em",[a._v("config.toml")]),a._v(" düğüm yapılandırma dosyasında da değiştirmelisiniz.")]),a._v(" "),e("h3",{attrs:{id:"go-ibax-ı-kurun"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#go-ibax-ı-kurun"}},[a._v("#")]),a._v(" go-ibax'ı kurun")]),a._v(" "),e("ol",[e("li",[a._v("GitHub'dan github-backend'i indirin:")]),a._v(" "),e("li",[a._v("go-ibax ikili dosyasını "),e("code",[a._v("/opt/backenddir/go-ibax")]),a._v(" dizinine kopyalayın. Varsayılan Go çalışma alanını kullanıyorsanız, ikili dosyalar "),e("code",[a._v("$HOME/go/bin")]),a._v(" dizininde bulunur:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("cp")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token environment constant"}},[a._v("$HOME")]),a._v("/go/bin/go-ibax /opt/backenddir/go-ibax\n")])])]),e("h3",{attrs:{id:"ilk-dugumu-yapılandırın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ilk-dugumu-yapılandırın"}},[a._v("#")]),a._v(" İlk düğümü yapılandırın")]),a._v(" "),e("ol",{attrs:{start:"3"}},[e("li",[a._v("Düğüm 1 için yapılandırma dosyasını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax config "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --dataDir"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node1 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --dbName"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("chaindb "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --centSecret"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"CENT_SECRET"')]),a._v(" --centUrl"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("http://192.168.1.1:8000 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --httpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.1 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --httpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7079")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --tcpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.1 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --tcpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7078")]),a._v("\n")])])]),e("ol",{attrs:{start:"4"}},[e("li",[a._v("Düğümün ve hesabın genel ve özel anahtarları dahil olmak üzere Düğüm 1'in anahtarlarını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax generateKeys "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node1/config.toml\n")])])]),e("ol",{attrs:{start:"5"}},[e("li",[a._v("İlk bloğu oluşturun:")])]),a._v(" "),e("blockquote",[e("p",[a._v("Not")]),a._v(" "),e("p",[a._v("Kendi blok zinciri ağınızı oluşturmak istiyorsanız, `--test=true' seçeneğini kullanmalısınız. Aksi takdirde yeni bir hesap oluşturamazsınız.")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax generateFirstBlock "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node1/config.toml "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --test"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("true\n")])])]),e("ol",{attrs:{start:"6"}},[e("li",[a._v("Veritabanını başlatın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax initDatabase "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node1/config.toml\n")])])]),e("h3",{attrs:{id:"ilk-dugum-sunucusunu-baslatın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ilk-dugum-sunucusunu-baslatın"}},[a._v("#")]),a._v(" İlk düğüm sunucusunu başlatın")]),a._v(" "),e("p",[a._v("İlk düğüm sunucusunu başlatmak için aşağıdaki iki hizmeti başlatmanız gerekir:")]),a._v(" "),e("ul",[e("li",[a._v("Centrifugo")]),a._v(" "),e("li",[a._v("go-imax")])]),a._v(" "),e("p",[a._v("Bu dosyalarla "),e("a",{attrs:{href:"#https://wiki.debian.org/systemd/Services"}},[a._v("hizmetler")]),a._v(" oluşturamadıysanız, farklı konsollardaki dizinlerden ikili dosyaları çalıştırabilirsiniz.")]),a._v(" "),e("ol",[e("li",[a._v("Centrifugo çalıştırın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/centrifugo/centrifugo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n -a "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.1 -p "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("8000")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config /opt/backenddir/centrifugo/config.json\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("go-ibax'ı çalıştırın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax start "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node1/config.toml\n")])])]),e("h2",{attrs:{id:"diger-dugumleri-dagıtın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#diger-dugumleri-dagıtın"}},[a._v("#")]),a._v(" Diğer düğümleri dağıtın")]),a._v(" "),e("p",[a._v("Diğer tüm düğümlerin (Düğüm 2 ve Düğüm 3) konuşlandırılması birincisine benzer olsa da, üç fark vardır:")]),a._v(" "),e("ul",[e("li",[a._v("İlk bloğu oluşturmanız gerekmez. Ancak, Düğüm 1'den geçerli düğüm veri dizinine kopyalanması gerekir;")]),a._v(" "),e("li",[a._v("Düğüm, "),e("code",[a._v("--nodesAddr")]),a._v(" seçeneğini yapılandırarak Düğüm 1'den blokları indirmelidir;")]),a._v(" "),e("li",[a._v("Düğüm kendi adreslerini ve portlarını kullanmalıdır.")])]),a._v(" "),e("h3",{attrs:{id:"dugum-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dugum-2"}},[a._v("#")]),a._v(" Düğüm 2")]),a._v(" "),e("p",[a._v("Aşağıda gösterildiği gibi çalıştırma talimatlarını izleyin:")]),a._v(" "),e("ol",[e("li",[e("a",{attrs:{href:"#dependencies-and-environment-settings"}},[a._v("Bağımlılıklar ve ortam ayarları")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#create-a-database"}},[a._v("Veritabanı oluştur")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#Centrifugo"}},[a._v("Centrifugo")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#install-go-ibax"}},[a._v("go-ibax'ı yükleyin")])]),a._v(" "),e("li",[a._v("Düğüm 2 için yapılandırma dosyasını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/go-ibax config "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--dataDir"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node2 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--dbName"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("chaindb "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--centSecret"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"CENT_SECRET"')]),a._v(" --centUrl"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("http://192.168.1.2:8000 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--httpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.2 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--httpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7079")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--tcpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.2 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--tcpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7078")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--nodesAddr"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.1\n")])])]),e("ol",{attrs:{start:"6"}},[e("li",[a._v("İlk blok dosyasını Düğüm 2'ye kopyalayın. Örneğin, bu işlemi Düğüm 2 üzerinden scp üzerinden gerçekleştirebilirsiniz:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("scp")]),a._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node2/\n")])])]),e("ol",{attrs:{start:"7"}},[e("li",[a._v("Düğümün ve hesabın genel ve özel anahtarları dahil olmak üzere Düğüm 2'nin anahtarlarını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/go-ibax generateKeys "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node2/config.toml\n")])])]),e("ol",{attrs:{start:"8"}},[e("li",[a._v("Veritabanını başlatın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" ./go-ibax initDatabase --config"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("node2/config.toml\n")])])]),e("ol",{attrs:{start:"9"}},[e("li",[a._v("Çalıştır centrifugo:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/centrifugo/centrifugo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n-a "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.2 -p "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("8000")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),e("ol",{attrs:{start:"10"}},[e("li",[a._v("Çalıştır go-ibax:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("/opt/backenddir/go-ibax start "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node2/config.toml\n")])])]),e("p",[a._v("Sonuç olarak, düğüm bloğu ilk düğümden indirir. Bu düğüm bir doğrulama düğümü olmadığı için yeni bir blok oluşturamaz. Düğüm 2, daha sonra doğrulama düğümleri listesine eklenecektir.")]),a._v(" "),e("h3",{attrs:{id:"dugum-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dugum-3"}},[a._v("#")]),a._v(" Düğüm 3")]),a._v(" "),e("p",[a._v("Aşağıda gösterildiği gibi çalıştırma talimatlarını izleyin:")]),a._v(" "),e("ol",[e("li",[e("p",[e("a",{attrs:{href:"#dependencies-and-environment-settings"}},[a._v("Bağımlılıklar ve ortam ayarları")])])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#create-a-database"}},[a._v("Veritabanı oluştur")])])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#Centrifugo"}},[a._v("Centrifugo")])])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#install-go-ibax"}},[a._v("go-ibax'ı yükleyin")])])]),a._v(" "),e("li",[e("p",[a._v("Düğüm 3 için yapılandırma dosyasını oluşturun:")])])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/go-ibax config "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--dataDir"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node3 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--dbName"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("chaindb "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--centSecret"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"CENT_SECRET"')]),a._v(" --centUrl"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("http://192.168.1.3:8000 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--httpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.3 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--httpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7079")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--tcpHost"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.3 "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--tcpPort"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("7078")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--nodesAddr"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.1\n")])])]),e("ol",{attrs:{start:"6"}},[e("li",[a._v("İlk blok dosyasını Düğüm 3'e kopyalayın. Örneğin, bu işlemi Düğüm 3'te scp aracılığıyla gerçekleştirebilirsiniz:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("scp")]),a._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node3/\n")])])]),e("ol",{attrs:{start:"7"}},[e("li",[a._v("Düğümün ve hesabın genel ve özel anahtarları dahil olmak üzere Düğüm 3'ün anahtarını oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/go-ibax generateKeys "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node3/config.toml\n")])])]),e("ol",{attrs:{start:"8"}},[e("li",[a._v("Veritabanını başlatın:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" ./go-ibax initDatabase --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("node3/config.toml\n")])])]),e("p",[a._v("9.Çalıştır centrifugo:")]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/centrifugo/centrifugo "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n-a "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("192.168")]),a._v(".1.3 -p "),e("span",{pre:!0,attrs:{class:"token number"}},[a._v("8000")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),e("p",[a._v("10.Çalıştır go-ibax:")]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v(" /opt/backenddir/go-ibax start "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n --config"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/opt/backenddir/node3/config.toml\n")])])]),e("p",[a._v("Sonuç olarak, düğüm bloğu ilk düğümden indirir. Bu düğüm bir doğrulama düğümü olmadığı için yeni bir blok oluşturamaz. İstemci düğüme bağlı olabilir ve ağa işlemler gönderebilir.")]),a._v(" "),e("h2",{attrs:{id:"front-end-dagıtımı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#front-end-dagıtımı"}},[a._v("#")]),a._v(" Front-end dağıtımı")]),a._v(" "),e("p",[a._v("Yalnızca Debian 9 (Stretch) 64-bit Resmi Sürümüne "),e("strong",[a._v("GNOME GUI")]),a._v(' yüklendikten sonra, Govis istemcisi "yarn" paket yöneticisiyle oluşturulabilir.')]),a._v(" "),e("h3",{attrs:{id:"yazılım-onkosulları"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#yazılım-onkosulları"}},[a._v("#")]),a._v(" Yazılım önkoşulları")]),a._v(" "),e("ol",[e("li",[a._v("Node.js LTS sürüm 8.11'i Node.js resmi web sitesinden veya komut satırından indirin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("curl")]),a._v(" -sL https://deb.nodesource.com/setup_8.x "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" -E "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("bash")]),a._v("\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Node.js'yi yükleyin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("apt")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" -y nodejs\n")])])]),e("ol",[e("li",[a._v("Yarn "),e("a",{attrs:{href:"https://github.com/yarnpkg/yarn/releases",target:"_blank",rel:"noopener noreferrer"}},[a._v("Github"),e("OutboundLink")],1),a._v(" deposundan veya komut satırından Yarn 1.7.0 sürümünü indirin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("wget")]),a._v(" https://github.com/yarnpkg/yarn/releases/download/v1.7.0/yarn_1.7.0_all.deb\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Kur Yarn:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" dpkg -i yarn_1.7.0_all.deb "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("rm")]),a._v(" yarn_1.7.0_all.deb\n")])])]),e("h3",{attrs:{id:"bir-weaver-uygulaması-olusturun"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bir-weaver-uygulaması-olusturun"}},[a._v("#")]),a._v(" Bir Weaver uygulaması oluşturun")]),a._v(" "),e("ol",[e("li",[a._v("Weaver'ın en son sürümünü github-frontend'den git aracılığıyla indirin:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("git")]),a._v(" clone https://github.com/ibax-io/ibax-front.git\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[a._v("Install Weaver dependencies via Yarn:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir/ibax-front/ "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("yarn")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v("\n")])])]),e("h3",{attrs:{id:"blok-zinciri-agı-icin-yapılandırma-dosyasını-ekleyin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blok-zinciri-agı-icin-yapılandırma-dosyasını-ekleyin"}},[a._v("#")]),a._v(" Blok zinciri ağı için yapılandırma dosyasını ekleyin")]),a._v(" "),e("ol",[e("li",[a._v("Düğüm bağlantısı hakkında bilgi içeren bir "),e("em",[a._v("settings.json")]),a._v(" dosyası oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cp/opt/backenddir/ibax-front/public/settings.json.dist "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n /opt/backenddir/ibax-front/public/public/settings.json\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[e("em",[a._v("settings.json")]),a._v(" dosyasını herhangi bir metin düzenleyicide düzenleyin ve gerekli ayarları bu biçimde ekleyin:")])]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("http://Node_IP-address:Node_HTTP-Port\n")])])]),e("p",[a._v("Üç düğüm için "),e("em",[a._v("settings.json")]),a._v(" dosyası örnekleri:")]),a._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[a._v('"fullNodes"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"http://192.168.1.1:7079"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"http://192.168.1.2:7079"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"http://192.168.1.3:7079"')]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),e("p",[a._v("Weaver Masaüstü Uygulaması Oluşturun")]),a._v(" "),e("p",[a._v("1.Masaüstü sürümünü oluşturmak için yarn kullanın:")]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir/ibax-front "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("yarn")]),a._v(" build-desktop\n")])])]),e("p",[a._v("2.Masaüstü sürümü, AppImage son eki biçiminde paketlenecektir:")]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("yarn")]),a._v(" release --publish never -l\n")])])]),e("p",[a._v("Oluşturulduktan sonra uygulamanız kullanılabilir ancak bağlantı konfigürasyonu değiştirilemez. Bu ayarların değiştirilmesi gerekiyorsa, uygulamanın yeni bir sürümü oluşturulmalıdır.")]),a._v(" "),e("h3",{attrs:{id:"weaver-web-uygulaması-olusturun"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#weaver-web-uygulaması-olusturun"}},[a._v("#")]),a._v(" Weaver Web Uygulaması Oluşturun")]),a._v(" "),e("ol",[e("li",[a._v("Bir web uygulaması oluşturun:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir/ibax-front/ "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("yarn")]),a._v(" build\n")])])]),e("p",[a._v("Oluşturulduktan sonra yeniden dağıtılabilir dosyalar /build dizinine yerleştirilecektir. Dağıtım için istediğiniz herhangi bir web sunucusunu kullanabilirsiniz ve "),e("em",[a._v("settings.json")]),a._v(" dosyası da bu dizine yerleştirilmelidir. Bağlantı ayarları değiştirilirse uygulamayı yeniden oluşturmaya gerek olmadığını unutmayın. Bunun yerine "),e("em",[a._v("settings.json")]),a._v(" dosyasını düzenleyin ve web sunucusunu yeniden başlatın.")]),a._v(" "),e("ol",[e("li",[a._v("Geliştirme veya test amacıyla Yarn'ın web sunucusunu oluşturabilirsiniz:")])]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("yarn")]),a._v(" global "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("add")]),a._v(" serve "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" serve -s build\n")])])]),e("p",[a._v("Bundan sonra, Weaver web uygulamanız şu konumda kullanılabilir olacaktır: "),e("code",[a._v("http://localhost:5000")]),a._v(".")]),a._v(" "),e("h2",{attrs:{id:"blok-zinciri-agını-yapılandırın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blok-zinciri-agını-yapılandırın"}},[a._v("#")]),a._v(" Blok zinciri ağını yapılandırın")]),a._v(" "),e("h3",{attrs:{id:"icerik-olusturucu-hesabını-olusturun"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#icerik-olusturucu-hesabını-olusturun"}},[a._v("#")]),a._v(" İçerik oluşturucu hesabını oluşturun")]),a._v(" "),e("p",[a._v("İlk düğüm sahibi için bir hesap oluşturun. Bu hesap, yeni blok zinciri platformunun yaratıcısıdır ve yönetici erişimine sahiptir.")]),a._v(" "),e("ol",[e("li",[e("p",[a._v("Weaver'ı çalıştırın;")])]),a._v(" "),e("li",[e("p",[a._v("Aşağıdaki verileri kullanarak mevcut hesabı içe aktarın:")])])]),a._v(" "),e("p",[a._v("– "),e("code",[a._v("/opt/backenddir/node1/PrivateKey")]),a._v(" dosyasında bulunan düğüm sahibinin özel anahtarının yedeğini yükleyin.")]),a._v(" "),e("blockquote",[e("p",[a._v("Not")]),a._v(" "),e("p",[a._v("Bu dizinde iki özel anahtar dosyası vardır. "),e("code",[a._v("PrivateKey")]),a._v(" dosyası, düğüm sahibinin hesabını oluşturmak için kullanılır. 'NodePrivateKey' dosyası, düğümün kendisinin özel anahtarıdır ve gizli tutulmalıdır.")])]),a._v(" "),e("p",[a._v("3.Hesaba giriş yaptıktan sonra, şu anda herhangi bir rol oluşturulmadığı için lütfen Rolsüz seçeneğini seçiniz.")]),a._v(" "),e("h3",{attrs:{id:"uygulamaları-rolleri-ve-sablonları-ice-aktarın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#uygulamaları-rolleri-ve-sablonları-ice-aktarın"}},[a._v("#")]),a._v(" Uygulamaları, rolleri ve şablonları içe aktarın")]),a._v(" "),e("p",[a._v("Şu anda, blockchain platformu boş bir durumda. Temel ekosistem işlevlerini destekleyen roller, şablonlar ve uygulama çerçeveleri ekleyerek yapılandırabilirsiniz.")]),a._v(" "),e("p",[a._v("1.Uygulama deposunu klonlayın;")]),a._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[a._v("cd/opt/backenddir "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("\\")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("&&")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("git")]),a._v(" clone https://github.com/ibax-io/dapps.git\n")])])]),e("ol",{attrs:{start:"2"}},[e("li",[e("p",[a._v("Weaver'da Geliştirici> İçe Aktar'a gidin;")])]),a._v(" "),e("li",[e("p",[a._v("Uygulamaları aşağıdaki sıraya göre içe aktarın:")])])]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v(" A./opt/backenddir/dapps/system.json \n B./opt/backenddir/dapps/conditions.json \n C./opt/backenddir/dapps/basic.json \n D./opt/backenddir/dapps/lang_res.json\n")])])]),e("ol",{attrs:{start:"4"}},[e("li",[a._v("Yönetici> Rol'e gidin ve Varsayılan Rolü Yükle'ye tıklayın;")])]),a._v(" "),e("p",[a._v("5.Sağ üst köşedeki konfigürasyon dosyası menüsünden sistemden çıkın;")]),a._v(" "),e("p",[a._v("6.Sisteme Yönetici olarak giriş yapın;")]),a._v(" "),e("ol",{attrs:{start:"7"}},[e("li",[a._v("Ana Sayfa> Oy> Şablon Listesi'ne gidin ve Varsayılan Şablonu Yükle'ye tıklayın.")])]),a._v(" "),e("h3",{attrs:{id:"ilk-dugumu-dugum-listesine-ekleyin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ilk-dugumu-dugum-listesine-ekleyin"}},[a._v("#")]),a._v(" İlk düğümü düğüm listesine ekleyin")]),a._v(" "),e("p",[a._v("1.Geliştirici> Platform Parametreleri'ne gidin ve first_nodes parametresini tıklayın;")]),a._v(" "),e("p",[a._v("2.İlk blok zinciri ağ düğümünün parametrelerini belirtin.")]),a._v(" "),e("ul",[e("li",[a._v("public_key - Düğümün genel anahtarı "),e("code",[a._v("/opt/backenddir/node1/NodePublicKey")]),a._v(" dosyasında bulunur;")])]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v('{"api_address":"http://192.168.1.1:7079","public_key":"%node_public_key%","tcp_address":"192.168.1.1:7078"}\n')])])]),e("h2",{attrs:{id:"baska-honor-dugumleri-ekleyin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#baska-honor-dugumleri-ekleyin"}},[a._v("#")]),a._v(" Başka Honor düğümleri ekleyin")]),a._v(" "),e("h3",{attrs:{id:"konsensus-rol-grubuna-uye-ekleyin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#konsensus-rol-grubuna-uye-ekleyin"}},[a._v("#")]),a._v(" Konsensüs rol grubuna üye ekleyin")]),a._v(" "),e("p",[a._v("Varsayılan olarak, yalnızca fikir birliği rolü (Consensus) grubundaki üyeler, diğer ana düğümleri eklemek için gereken oylamaya katılabilir. Bu, yeni bir ana düğüm eklemeden önce ekosistem üyelerinin role atanması gerektiği anlamına gelir.\nBu bölümde, içerik oluşturucunun hesabı, fikir birliği rol grubunun tek üyesi olarak belirlenir. Bir üretim ortamında, bu rolün yönetişimi gerçekleştiren platform üyelerine atanması gerekir.")]),a._v(" "),e("ol",[e("li",[e("p",[a._v("Ana Sayfa> Rol'e gidin ve Konsensüs'e tıklayın;")])]),a._v(" "),e("li",[e("p",[a._v("Oluşturanın hesabını role atamak için Ata'yı tıklayın.")])])]),a._v(" "),e("h3",{attrs:{id:"diger-dugumler-icin-sahip-hesabı-olusturun"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#diger-dugumler-icin-sahip-hesabı-olusturun"}},[a._v("#")]),a._v(" Diğer düğümler için sahip hesabı oluşturun")]),a._v(" "),e("ol",[e("li",[e("p",[a._v("Weaver'ı çalıştırın;")])]),a._v(" "),e("li",[e("p",[a._v("Aşağıdaki verileri kullanarak mevcut hesabı içe aktarın:\n– "),e("code",[a._v("/opt/backenddir/node2/PrivateKey")]),a._v(" dosyasında bulunan düğüm sahibinin özel anahtarının yedeğini yükleyin.")])]),a._v(" "),e("li",[e("p",[a._v("Hesaba giriş yaptıktan sonra, şu anda herhangi bir rol oluşturulmadığı için lütfen Rolsüz seçeneğini seçin.")])]),a._v(" "),e("li",[e("p",[a._v("Ana Sayfa> Kişisel Bilgiler'e gidin ve kişisel bilgilerin başlığına tıklayın;")])]),a._v(" "),e("li",[e("p",[a._v("Hesap ayrıntılarını ekleyin (kişisel bilgi başlığı, açıklama vb.).")])])]),a._v(" "),e("h3",{attrs:{id:"dogrulayıcı-roluyle-dugum-sahibini-atayın"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dogrulayıcı-roluyle-dugum-sahibini-atayın"}},[a._v("#")]),a._v(" Doğrulayıcı rolüyle düğüm sahibini atayın")]),a._v(" "),e("ol",[e("li",[a._v("Yeni düğüm sahibi tarafından yapılan işlemler:\n"),e("ol",[e("li",[a._v("Ana Sayfa> Doğrulayıcı'ya gidin;")]),a._v(" "),e("li",[a._v("Talep Oluştur'a tıklayın ve doğrulayıcı adayın başvuru formunu doldurun;")]),a._v(" "),e("li",[a._v("İstek gönder'e tıklayın.")])])]),a._v(" "),e("li",[a._v("Oluşturucu tarafından yapılan işlemler:\n"),e("ol",[e("li",[a._v("Konsensüs rolüyle oturum açın (Consensus);")]),a._v(" "),e("li",[a._v("Ana Sayfa> Doğrulayıcı'ya gidin;")]),a._v(" "),e("li",[a._v('Adayın isteğine göre oylamaya başlamak için "Oynat" simgesine tıklayın;')]),a._v(" "),e("li",[a._v("Ana Sayfa> Oy'a gidin ve Oylama durumunu güncelle'yi tıklayın;")]),a._v(" "),e("li",[a._v("Oylama adına tıklayın ve düğüm sahibi için oy verin.")])])])]),a._v(" "),e("p",[a._v("Sonuç olarak, yeni düğümün sahibinin hesabına Doğrulayıcı rolü atanır ve yeni düğüm, ana düğümler listesine eklenir.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/91.cbdc1e1b.js b/assets/js/12.ce6d8e00.js similarity index 99% rename from assets/js/91.cbdc1e1b.js rename to assets/js/12.ce6d8e00.js index e2c2dd4..f665934 100644 --- a/assets/js/91.cbdc1e1b.js +++ b/assets/js/12.ce6d8e00.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{471:function(t,e,a){"use strict";a.r(e);var r=a(51),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"terms-and-definitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#terms-and-definitions"}},[t._v("#")]),t._v(" Terms and Definitions")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-terms"}},[t._v("Blockchain terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain"}},[t._v("Blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#peer-to-peer-network"}},[t._v("Peer-to-peer network")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#hash"}},[t._v("Hash")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block"}},[t._v("Block")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block-verification"}},[t._v("Block verification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#consensus"}},[t._v("Consensus")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#token"}},[t._v("Token")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#identification"}},[t._v("Identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#unique-identification"}},[t._v("Unique identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-key"}},[t._v("Private key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-key"}},[t._v("Public key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#digital-signature"}},[t._v("Digital signature")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-contract"}},[t._v("Smart contract")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#transaction-fee"}},[t._v("Transaction fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#double-spend"}},[t._v("Double spend")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#encryption"}},[t._v("Encryption")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-blockchain"}},[t._v("Private blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-blockchain"}},[t._v("Public blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#proof-of-authority"}},[t._v("Proof of Authority")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ibax-terms"}},[t._v("IBAX Terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#testnet"}},[t._v("Testnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#mainnet"}},[t._v("Mainnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#gas-fee"}},[t._v("Gas fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#account-address"}},[t._v("Account address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#wallet-address"}},[t._v("Wallet address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#weaver"}},[t._v("Weaver")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[t._v("ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-parameters"}},[t._v("ECOLIB parameters")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[t._v("ECOLIB members")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecolib"}},[t._v("Virtual private ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#decentralized-proof-of-authority"}},[t._v("Decentralized Proof-of-Authority")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#needle"}},[t._v("Needle")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#logicor"}},[t._v("Logicor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#integrated-development-environment-ide"}},[t._v("Integrated Development Environment (IDE)")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page-editor"}},[t._v("Page editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#visual-page-designer"}},[t._v("Visual page designer")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#contract-editor"}},[t._v("Contract editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#multilingual-resources"}},[t._v("Multilingual resources")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-export"}},[t._v("Application export")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-import"}},[t._v("Application import")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-law"}},[t._v("Smart law")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#legal-system"}},[t._v("Legal system")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application"}},[t._v("Application")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page"}},[t._v("Page")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#code-segment"}},[t._v("Code segment")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#access-rights"}},[t._v("Access rights")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[t._v("Honor node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#guardian-node"}},[t._v("Guardian node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#concurrent-transaction-processing"}},[t._v("Concurrent transaction processing")])])])])]),t._v(" "),a("h2",{attrs:{id:"blockchain-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-terms"}},[t._v("#")]),t._v(" Blockchain terms")]),t._v(" "),a("h3",{attrs:{id:"blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain"}},[t._v("#")]),t._v(" Blockchain")]),t._v(" "),a("p",[t._v("Blockchain is an information system that stores data and transmits and processes data within the system to prevent data from being forged or lost while maintaining data reliability; Data protection is achieved by:")]),t._v(" "),a("p",[t._v("1.writing data into a blockchain of a series of encrypted blocks;")]),t._v(" "),a("p",[t._v("2.distributed storage of blockchain copies in peer-to-peer networks;")]),t._v(" "),a("p",[t._v("3.synchronization of blockchains on all nodes using a consensus mechanism;")]),t._v(" "),a("p",[t._v("4.ensuring data reliability when performing data operations using the network with algorithms that store data transmissions and process contracts in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"peer-to-peer-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#peer-to-peer-network"}},[t._v("#")]),t._v(" Peer-to-peer network")]),t._v(" "),a("p",[t._v("A computer network, consisting of equally privileged nodes (without a central server).")]),t._v(" "),a("h3",{attrs:{id:"hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hash"}},[t._v("#")]),t._v(" Hash")]),t._v(" "),a("p",[t._v("Also known as hashing, the binary value of any file or data set length that is mapped to a shorter fixed-length binary value.")]),t._v(" "),a("h3",{attrs:{id:"block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block"}},[t._v("#")]),t._v(" Block")]),t._v(" "),a("p",[t._v("After verifying the format and signature of the transaction, a transaction set is grouped by the honor node into a specific data structure. A block contains a hash pointer as a link to the previous block, which is one of the measures to ensure the security of blockchain encryption.")]),t._v(" "),a("h3",{attrs:{id:"block-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-verification"}},[t._v("#")]),t._v(" Block verification")]),t._v(" "),a("p",[t._v("A procedure to verify the correctness of the block structure, generation time, compatibility with the previous block, transaction signatures, and the correspondence between the transaction and the block data.")]),t._v(" "),a("h3",{attrs:{id:"consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consensus"}},[t._v("#")]),t._v(" Consensus")]),t._v(" "),a("p",[t._v("The verification protocol or algorithm of this type of protocol used by the honor node in the process of adding new blocks to the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Data transmission operations on the blockchain network or records of such transactions in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"token"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#token"}},[t._v("#")]),t._v(" Token")]),t._v(" "),a("p",[t._v("Proof of encrypted digital rights and shares that can be circulated on the blockchain. A set of identifiable digital records stored in a register, including a mechanism for exchanging rights and shares between these records.")]),t._v(" "),a("h3",{attrs:{id:"identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#identification"}},[t._v("#")]),t._v(" Identification")]),t._v(" "),a("p",[t._v("An encryption program used to identify users in the system.")]),t._v(" "),a("h3",{attrs:{id:"unique-identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unique-identification"}},[t._v("#")]),t._v(" Unique identification")]),t._v(" "),a("p",[t._v("The process of linking accounts with users requires legal and organizational efforts or other procedures to achieve biometric identification in order to link user names with actual users.")]),t._v(" "),a("h3",{attrs:{id:"private-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-key"}},[t._v("#")]),t._v(" Private key")]),t._v(" "),a("p",[t._v("A string of characters secretly stored by its owner, used by the owner to access virtual accounts on the internet and sign transactions.")]),t._v(" "),a("h3",{attrs:{id:"public-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-key"}},[t._v("#")]),t._v(" Public key")]),t._v(" "),a("p",[t._v("A string of characters used to check the authenticity of the private key. The public key is uniquely derived from the private key.")]),t._v(" "),a("h3",{attrs:{id:"digital-signature"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#digital-signature"}},[t._v("#")]),t._v(" Digital signature")]),t._v(" "),a("p",[t._v("The attributes of a document or message obtained after encrypted data processing. The digital signature is used to check the integrity of the document (no modification) and authenticity (verification of the identity of the sender).")]),t._v(" "),a("h3",{attrs:{id:"smart-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-contract"}},[t._v("#")]),t._v(" Smart contract")]),t._v(" "),a("p",[t._v("In the program that performs data storage operations in the blockchain, all contracts are stored in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-fee"}},[t._v("#")]),t._v(" Transaction fee")]),t._v(" "),a("p",[t._v("The fee paid to the honor node to execute the transaction.")]),t._v(" "),a("h3",{attrs:{id:"double-spend"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#double-spend"}},[t._v("#")]),t._v(" Double spend")]),t._v(" "),a("p",[t._v("A method of attacking the blockchain network. The result is that a transaction costs the same token twice.")]),t._v(" "),a("p",[t._v("This kind of attack occurs when the blockchain is forked, which can only be executed when the attacker controls more than 50% of the network's verification capability.")]),t._v(" "),a("h3",{attrs:{id:"encryption"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#encryption"}},[t._v("#")]),t._v(" Encryption")]),t._v(" "),a("p",[t._v("A way of digital data conversion, only the party with the corresponding decryption key can read it.")]),t._v(" "),a("h3",{attrs:{id:"private-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-blockchain"}},[t._v("#")]),t._v(" Private blockchain")]),t._v(" "),a("p",[t._v("A blockchain network where all nodes and data access rights are centrally controlled by a single organization (government, company or individual).")]),t._v(" "),a("h3",{attrs:{id:"public-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-blockchain"}},[t._v("#")]),t._v(" Public blockchain")]),t._v(" "),a("p",[t._v("In a blockchain network that is not controlled by any organization, all decisions are made by reaching a consensus among network participants. Everyone can obtain and access the data of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#proof-of-authority"}},[t._v("#")]),t._v(" Proof of Authority")]),t._v(" "),a("p",[t._v("Proof of Authority (PoA), IBAX Network has created a new consensus mechanism that combines distribution, weak centralization, and a certification authority. We call it PoA (Proof of Authority). To ensure continuity for the entire IBAX Network, the consensus covers not only IBAX Public Network, but also ecoLibs created by each user and user group. This creates a truly self-governed, decentralized, fair, transparent, and fraud-proof Decentralized Autonomous Organization (DAO).")]),t._v(" "),a("h2",{attrs:{id:"ibax-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-terms"}},[t._v("#")]),t._v(" IBAX Terms")]),t._v(" "),a("h3",{attrs:{id:"testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testnet"}},[t._v("#")]),t._v(" Testnet")]),t._v(" "),a("p",[t._v("The version of the blockchain network used for testing.")]),t._v(" "),a("h3",{attrs:{id:"mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mainnet"}},[t._v("#")]),t._v(" Mainnet")]),t._v(" "),a("p",[t._v("The main version of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"transaction-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-2"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Call the contract and pass the parameters to the operation command of the contract. The result of the honor node execution is the update of the database.")]),t._v(" "),a("h3",{attrs:{id:"gas-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gas-fee"}},[t._v("#")]),t._v(" Gas fee")]),t._v(" "),a("p",[t._v("A conventional unit used to calculate the cost of performing certain operations on a network of nodes. The fuel exchange rate is determined by a vote on the honor node.")]),t._v(" "),a("h3",{attrs:{id:"account-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#account-address"}},[t._v("#")]),t._v(" Account address")]),t._v(" "),a("p",[t._v("The data records store the token and can be accessed through a pair of keys (private key and public key).")]),t._v(" "),a("h3",{attrs:{id:"wallet-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallet-address"}},[t._v("#")]),t._v(" Wallet address")]),t._v(" "),a("p",[t._v("The character encoding identifier of the user on the node network that is used as the name of the user's virtual account.")]),t._v(" "),a("h3",{attrs:{id:"weaver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#weaver"}},[t._v("#")]),t._v(" Weaver")]),t._v(" "),a("p",[t._v("The software client used to connect to the node network, which provides the desktop and web browser versions.")]),t._v(" "),a("p",[t._v("Weaver integrates the platform development environment, including creating and editing tables, pages, and contracts. Users can build ECOLIBs, create and use applications in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[t._v("#")]),t._v(" ECOLIB")]),t._v(" "),a("p",[t._v("A relatively closed or open software programming environment, including applications and ECOLIB members.")]),t._v(" "),a("p",[t._v("ECOLIB members can issue exclusive tokens belonging to the ECOLIB, use smart contracts to establish interaction rules between members, and set access rights to application elements for members.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-parameters"}},[t._v("#")]),t._v(" ECOLIB parameters")]),t._v(" "),a("p",[t._v("A set of configurable ECOLIB parameters, such as the account of the creator of the ECOLIB and the permissions of changing application elements, can be changed in the parameter table.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[t._v("#")]),t._v(" ECOLIB members")]),t._v(" "),a("p",[t._v("Users who can access specific ECOLIBs and application features.")]),t._v(" "),a("h3",{attrs:{id:"virtual-private-ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecolib"}},[t._v("#")]),t._v(" Virtual private ECOLIB")]),t._v(" "),a("p",[t._v("Virtual private ECOLIB - Cross Ledgers Base (CLB), which has the full set of functions of the standard ECOLIB, but works outside the blockchain. In CLB, you can use and create contracts and template languages, database tables, and use Weaver to create applications. You can call contracts on the blockchain ECOLIB via APIs.")]),t._v(" "),a("h3",{attrs:{id:"decentralized-proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decentralized-proof-of-authority"}},[t._v("#")]),t._v(" Decentralized Proof-of-Authority")]),t._v(" "),a("p",[t._v("Decentralized Proof-of-Authority (DPoA) is a new consensus algorithm that provides high performance and fault tolerance. In DPoA, the right to generate new blocks is granted to nodes that have proven the right to do so, and such nodes must be subject to preliminary verification.")]),t._v(" "),a("h3",{attrs:{id:"needle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle"}},[t._v("#")]),t._v(" Needle")]),t._v(" "),a("p",[t._v("A scripting language used to create smart contracts that can handle data received from user pages and value operations performed in database tables.\nYou can create and edit contracts in Weaver's editor.")]),t._v(" "),a("h3",{attrs:{id:"logicor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#logicor"}},[t._v("#")]),t._v(" Logicor")]),t._v(" "),a("p",[t._v("The template language used to create pages. It can get values from database tables, build user pages, and pass user input data to the "),a("strong",[t._v("data")]),t._v(" section of the contract.")]),t._v(" "),a("h3",{attrs:{id:"integrated-development-environment-ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#integrated-development-environment-ide"}},[t._v("#")]),t._v(" Integrated Development Environment (IDE)")]),t._v(" "),a("p",[t._v("Integrated Development Environment (IDE) is a set of software tools used to create applications.")]),t._v(" "),a("p",[t._v("Weaver's IDE includes a contract editor, page editor, database table management tool, multi-language resources editor, as well as application export and import functions. The IDE complements the visual page designer based on semantic tools.")]),t._v(" "),a("h3",{attrs:{id:"page-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-editor"}},[t._v("#")]),t._v(" Page editor")]),t._v(" "),a("p",[t._v("In Weaver, you can create application pages by directly arranging basic application elements, HTML containers, form fields, buttons and other tools on the screen.")]),t._v(" "),a("h3",{attrs:{id:"visual-page-designer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#visual-page-designer"}},[t._v("#")]),t._v(" Visual page designer")]),t._v(" "),a("p",[t._v('Tools for creating application pages in Weaver, including interface designer and "Logicor" page code generator.')]),t._v(" "),a("h3",{attrs:{id:"contract-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-editor"}},[t._v("#")]),t._v(" Contract editor")]),t._v(" "),a("p",[t._v("A tool for creating contracts using visual pages in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"multilingual-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multilingual-resources"}},[t._v("#")]),t._v(" Multilingual resources")]),t._v(" "),a("p",[t._v("The module of application page localization in Weaver, which associates the label on the application page with the text value of the selected language.")]),t._v(" "),a("h3",{attrs:{id:"application-export"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-export"}},[t._v("#")]),t._v(" Application export")]),t._v(" "),a("p",[t._v("Save the source code of all tables, pages, and contracts of the application as files.")]),t._v(" "),a("h3",{attrs:{id:"application-import"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-import"}},[t._v("#")]),t._v(" Application import")]),t._v(" "),a("p",[t._v("Load all tables, pages, and contracts of an application included in the export file into the ECOLIB.")]),t._v(" "),a("h3",{attrs:{id:"smart-law"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-law"}},[t._v("#")]),t._v(" Smart law")]),t._v(" "),a("p",[t._v("It is a special set of smart contracts that contain regulatory information and used to manage and control the operation and register access rights.")]),t._v(" "),a("h3",{attrs:{id:"legal-system"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#legal-system"}},[t._v("#")]),t._v(" Legal system")]),t._v(" "),a("p",[t._v("A set of rules and mechanisms established in smart law, which can regulate the relationship between ECOLIB users, define procedural rules for changing protocol parameters, and define various challenging solutions.")]),t._v(" "),a("h3",{attrs:{id:"application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application"}},[t._v("#")]),t._v(" Application")]),t._v(" "),a("p",[t._v("Create fully functional software products in Weaver's IDE.")]),t._v(" "),a("p",[t._v("An application is a collection of elements such as database tables, smart contracts, and user pages with configuration access rights.")]),t._v(" "),a("h3",{attrs:{id:"page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page"}},[t._v("#")]),t._v(" Page")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that forms an interactive interface on the screen.")]),t._v(" "),a("h3",{attrs:{id:"code-segment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#code-segment"}},[t._v("#")]),t._v(" Code segment")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that can be reused in application pages.")]),t._v(" "),a("h3",{attrs:{id:"access-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights"}},[t._v("#")]),t._v(" Access rights")]),t._v(" "),a("p",[t._v("Conditions to get access rights for creating and editing tables, contracts and pages.")]),t._v(" "),a("p",[t._v("The access rights to tables can be configured with rights to add rows and columns, and edit the values in columns.")]),t._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[t._v("#")]),t._v(" Honor node")]),t._v(" "),a("p",[t._v("A node in the network node that has the right to generate and verify blocks.")]),t._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[t._v("#")]),t._v(" Guardian node")]),t._v(" "),a("p",[t._v("A node on the network used to store the latest version of the complete blockchain.")]),t._v(" "),a("h3",{attrs:{id:"concurrent-transaction-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#concurrent-transaction-processing"}},[t._v("#")]),t._v(" Concurrent transaction processing")]),t._v(" "),a("p",[t._v("A method to increase transaction processing speed by processing data from different ECOLIBs at the same time.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{393:function(t,e,a){"use strict";a.r(e);var r=a(51),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"terms-and-definitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#terms-and-definitions"}},[t._v("#")]),t._v(" Terms and Definitions")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-terms"}},[t._v("Blockchain terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain"}},[t._v("Blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#peer-to-peer-network"}},[t._v("Peer-to-peer network")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#hash"}},[t._v("Hash")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block"}},[t._v("Block")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block-verification"}},[t._v("Block verification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#consensus"}},[t._v("Consensus")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#token"}},[t._v("Token")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#identification"}},[t._v("Identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#unique-identification"}},[t._v("Unique identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-key"}},[t._v("Private key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-key"}},[t._v("Public key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#digital-signature"}},[t._v("Digital signature")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-contract"}},[t._v("Smart contract")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#transaction-fee"}},[t._v("Transaction fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#double-spend"}},[t._v("Double spend")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#encryption"}},[t._v("Encryption")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-blockchain"}},[t._v("Private blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-blockchain"}},[t._v("Public blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#proof-of-authority"}},[t._v("Proof of Authority")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ibax-terms"}},[t._v("IBAX Terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#testnet"}},[t._v("Testnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#mainnet"}},[t._v("Mainnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#gas-fee"}},[t._v("Gas fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#account-address"}},[t._v("Account address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#wallet-address"}},[t._v("Wallet address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#weaver"}},[t._v("Weaver")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[t._v("ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-parameters"}},[t._v("ECOLIB parameters")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[t._v("ECOLIB members")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecolib"}},[t._v("Virtual private ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#decentralized-proof-of-authority"}},[t._v("Decentralized Proof-of-Authority")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#needle"}},[t._v("Needle")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#logicor"}},[t._v("Logicor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#integrated-development-environment-ide"}},[t._v("Integrated Development Environment (IDE)")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page-editor"}},[t._v("Page editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#visual-page-designer"}},[t._v("Visual page designer")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#contract-editor"}},[t._v("Contract editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#multilingual-resources"}},[t._v("Multilingual resources")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-export"}},[t._v("Application export")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-import"}},[t._v("Application import")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-law"}},[t._v("Smart law")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#legal-system"}},[t._v("Legal system")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application"}},[t._v("Application")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page"}},[t._v("Page")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#code-segment"}},[t._v("Code segment")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#access-rights"}},[t._v("Access rights")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[t._v("Honor node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#guardian-node"}},[t._v("Guardian node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#concurrent-transaction-processing"}},[t._v("Concurrent transaction processing")])])])])]),t._v(" "),a("h2",{attrs:{id:"blockchain-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-terms"}},[t._v("#")]),t._v(" Blockchain terms")]),t._v(" "),a("h3",{attrs:{id:"blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain"}},[t._v("#")]),t._v(" Blockchain")]),t._v(" "),a("p",[t._v("Blockchain is an information system that stores data and transmits and processes data within the system to prevent data from being forged or lost while maintaining data reliability; Data protection is achieved by:")]),t._v(" "),a("p",[t._v("1.writing data into a blockchain of a series of encrypted blocks;")]),t._v(" "),a("p",[t._v("2.distributed storage of blockchain copies in peer-to-peer networks;")]),t._v(" "),a("p",[t._v("3.synchronization of blockchains on all nodes using a consensus mechanism;")]),t._v(" "),a("p",[t._v("4.ensuring data reliability when performing data operations using the network with algorithms that store data transmissions and process contracts in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"peer-to-peer-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#peer-to-peer-network"}},[t._v("#")]),t._v(" Peer-to-peer network")]),t._v(" "),a("p",[t._v("A computer network, consisting of equally privileged nodes (without a central server).")]),t._v(" "),a("h3",{attrs:{id:"hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hash"}},[t._v("#")]),t._v(" Hash")]),t._v(" "),a("p",[t._v("Also known as hashing, the binary value of any file or data set length that is mapped to a shorter fixed-length binary value.")]),t._v(" "),a("h3",{attrs:{id:"block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block"}},[t._v("#")]),t._v(" Block")]),t._v(" "),a("p",[t._v("After verifying the format and signature of the transaction, a transaction set is grouped by the honor node into a specific data structure. A block contains a hash pointer as a link to the previous block, which is one of the measures to ensure the security of blockchain encryption.")]),t._v(" "),a("h3",{attrs:{id:"block-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-verification"}},[t._v("#")]),t._v(" Block verification")]),t._v(" "),a("p",[t._v("A procedure to verify the correctness of the block structure, generation time, compatibility with the previous block, transaction signatures, and the correspondence between the transaction and the block data.")]),t._v(" "),a("h3",{attrs:{id:"consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consensus"}},[t._v("#")]),t._v(" Consensus")]),t._v(" "),a("p",[t._v("The verification protocol or algorithm of this type of protocol used by the honor node in the process of adding new blocks to the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Data transmission operations on the blockchain network or records of such transactions in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"token"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#token"}},[t._v("#")]),t._v(" Token")]),t._v(" "),a("p",[t._v("Proof of encrypted digital rights and shares that can be circulated on the blockchain. A set of identifiable digital records stored in a register, including a mechanism for exchanging rights and shares between these records.")]),t._v(" "),a("h3",{attrs:{id:"identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#identification"}},[t._v("#")]),t._v(" Identification")]),t._v(" "),a("p",[t._v("An encryption program used to identify users in the system.")]),t._v(" "),a("h3",{attrs:{id:"unique-identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unique-identification"}},[t._v("#")]),t._v(" Unique identification")]),t._v(" "),a("p",[t._v("The process of linking accounts with users requires legal and organizational efforts or other procedures to achieve biometric identification in order to link user names with actual users.")]),t._v(" "),a("h3",{attrs:{id:"private-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-key"}},[t._v("#")]),t._v(" Private key")]),t._v(" "),a("p",[t._v("A string of characters secretly stored by its owner, used by the owner to access virtual accounts on the internet and sign transactions.")]),t._v(" "),a("h3",{attrs:{id:"public-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-key"}},[t._v("#")]),t._v(" Public key")]),t._v(" "),a("p",[t._v("A string of characters used to check the authenticity of the private key. The public key is uniquely derived from the private key.")]),t._v(" "),a("h3",{attrs:{id:"digital-signature"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#digital-signature"}},[t._v("#")]),t._v(" Digital signature")]),t._v(" "),a("p",[t._v("The attributes of a document or message obtained after encrypted data processing. The digital signature is used to check the integrity of the document (no modification) and authenticity (verification of the identity of the sender).")]),t._v(" "),a("h3",{attrs:{id:"smart-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-contract"}},[t._v("#")]),t._v(" Smart contract")]),t._v(" "),a("p",[t._v("In the program that performs data storage operations in the blockchain, all contracts are stored in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-fee"}},[t._v("#")]),t._v(" Transaction fee")]),t._v(" "),a("p",[t._v("The fee paid to the honor node to execute the transaction.")]),t._v(" "),a("h3",{attrs:{id:"double-spend"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#double-spend"}},[t._v("#")]),t._v(" Double spend")]),t._v(" "),a("p",[t._v("A method of attacking the blockchain network. The result is that a transaction costs the same token twice.")]),t._v(" "),a("p",[t._v("This kind of attack occurs when the blockchain is forked, which can only be executed when the attacker controls more than 50% of the network's verification capability.")]),t._v(" "),a("h3",{attrs:{id:"encryption"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#encryption"}},[t._v("#")]),t._v(" Encryption")]),t._v(" "),a("p",[t._v("A way of digital data conversion, only the party with the corresponding decryption key can read it.")]),t._v(" "),a("h3",{attrs:{id:"private-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-blockchain"}},[t._v("#")]),t._v(" Private blockchain")]),t._v(" "),a("p",[t._v("A blockchain network where all nodes and data access rights are centrally controlled by a single organization (government, company or individual).")]),t._v(" "),a("h3",{attrs:{id:"public-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-blockchain"}},[t._v("#")]),t._v(" Public blockchain")]),t._v(" "),a("p",[t._v("In a blockchain network that is not controlled by any organization, all decisions are made by reaching a consensus among network participants. Everyone can obtain and access the data of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#proof-of-authority"}},[t._v("#")]),t._v(" Proof of Authority")]),t._v(" "),a("p",[t._v("Proof of Authority (PoA), IBAX Network has created a new consensus mechanism that combines distribution, weak centralization, and a certification authority. We call it PoA (Proof of Authority). To ensure continuity for the entire IBAX Network, the consensus covers not only IBAX Public Network, but also ecoLibs created by each user and user group. This creates a truly self-governed, decentralized, fair, transparent, and fraud-proof Decentralized Autonomous Organization (DAO).")]),t._v(" "),a("h2",{attrs:{id:"ibax-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-terms"}},[t._v("#")]),t._v(" IBAX Terms")]),t._v(" "),a("h3",{attrs:{id:"testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testnet"}},[t._v("#")]),t._v(" Testnet")]),t._v(" "),a("p",[t._v("The version of the blockchain network used for testing.")]),t._v(" "),a("h3",{attrs:{id:"mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mainnet"}},[t._v("#")]),t._v(" Mainnet")]),t._v(" "),a("p",[t._v("The main version of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"transaction-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-2"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Call the contract and pass the parameters to the operation command of the contract. The result of the honor node execution is the update of the database.")]),t._v(" "),a("h3",{attrs:{id:"gas-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gas-fee"}},[t._v("#")]),t._v(" Gas fee")]),t._v(" "),a("p",[t._v("A conventional unit used to calculate the cost of performing certain operations on a network of nodes. The fuel exchange rate is determined by a vote on the honor node.")]),t._v(" "),a("h3",{attrs:{id:"account-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#account-address"}},[t._v("#")]),t._v(" Account address")]),t._v(" "),a("p",[t._v("The data records store the token and can be accessed through a pair of keys (private key and public key).")]),t._v(" "),a("h3",{attrs:{id:"wallet-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallet-address"}},[t._v("#")]),t._v(" Wallet address")]),t._v(" "),a("p",[t._v("The character encoding identifier of the user on the node network that is used as the name of the user's virtual account.")]),t._v(" "),a("h3",{attrs:{id:"weaver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#weaver"}},[t._v("#")]),t._v(" Weaver")]),t._v(" "),a("p",[t._v("The software client used to connect to the node network, which provides the desktop and web browser versions.")]),t._v(" "),a("p",[t._v("Weaver integrates the platform development environment, including creating and editing tables, pages, and contracts. Users can build ECOLIBs, create and use applications in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[t._v("#")]),t._v(" ECOLIB")]),t._v(" "),a("p",[t._v("A relatively closed or open software programming environment, including applications and ECOLIB members.")]),t._v(" "),a("p",[t._v("ECOLIB members can issue exclusive tokens belonging to the ECOLIB, use smart contracts to establish interaction rules between members, and set access rights to application elements for members.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-parameters"}},[t._v("#")]),t._v(" ECOLIB parameters")]),t._v(" "),a("p",[t._v("A set of configurable ECOLIB parameters, such as the account of the creator of the ECOLIB and the permissions of changing application elements, can be changed in the parameter table.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[t._v("#")]),t._v(" ECOLIB members")]),t._v(" "),a("p",[t._v("Users who can access specific ECOLIBs and application features.")]),t._v(" "),a("h3",{attrs:{id:"virtual-private-ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecolib"}},[t._v("#")]),t._v(" Virtual private ECOLIB")]),t._v(" "),a("p",[t._v("Virtual private ECOLIB - Cross Ledgers Base (CLB), which has the full set of functions of the standard ECOLIB, but works outside the blockchain. In CLB, you can use and create contracts and template languages, database tables, and use Weaver to create applications. You can call contracts on the blockchain ECOLIB via APIs.")]),t._v(" "),a("h3",{attrs:{id:"decentralized-proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decentralized-proof-of-authority"}},[t._v("#")]),t._v(" Decentralized Proof-of-Authority")]),t._v(" "),a("p",[t._v("Decentralized Proof-of-Authority (DPoA) is a new consensus algorithm that provides high performance and fault tolerance. In DPoA, the right to generate new blocks is granted to nodes that have proven the right to do so, and such nodes must be subject to preliminary verification.")]),t._v(" "),a("h3",{attrs:{id:"needle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle"}},[t._v("#")]),t._v(" Needle")]),t._v(" "),a("p",[t._v("A scripting language used to create smart contracts that can handle data received from user pages and value operations performed in database tables.\nYou can create and edit contracts in Weaver's editor.")]),t._v(" "),a("h3",{attrs:{id:"logicor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#logicor"}},[t._v("#")]),t._v(" Logicor")]),t._v(" "),a("p",[t._v("The template language used to create pages. It can get values from database tables, build user pages, and pass user input data to the "),a("strong",[t._v("data")]),t._v(" section of the contract.")]),t._v(" "),a("h3",{attrs:{id:"integrated-development-environment-ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#integrated-development-environment-ide"}},[t._v("#")]),t._v(" Integrated Development Environment (IDE)")]),t._v(" "),a("p",[t._v("Integrated Development Environment (IDE) is a set of software tools used to create applications.")]),t._v(" "),a("p",[t._v("Weaver's IDE includes a contract editor, page editor, database table management tool, multi-language resources editor, as well as application export and import functions. The IDE complements the visual page designer based on semantic tools.")]),t._v(" "),a("h3",{attrs:{id:"page-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-editor"}},[t._v("#")]),t._v(" Page editor")]),t._v(" "),a("p",[t._v("In Weaver, you can create application pages by directly arranging basic application elements, HTML containers, form fields, buttons and other tools on the screen.")]),t._v(" "),a("h3",{attrs:{id:"visual-page-designer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#visual-page-designer"}},[t._v("#")]),t._v(" Visual page designer")]),t._v(" "),a("p",[t._v('Tools for creating application pages in Weaver, including interface designer and "Logicor" page code generator.')]),t._v(" "),a("h3",{attrs:{id:"contract-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-editor"}},[t._v("#")]),t._v(" Contract editor")]),t._v(" "),a("p",[t._v("A tool for creating contracts using visual pages in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"multilingual-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multilingual-resources"}},[t._v("#")]),t._v(" Multilingual resources")]),t._v(" "),a("p",[t._v("The module of application page localization in Weaver, which associates the label on the application page with the text value of the selected language.")]),t._v(" "),a("h3",{attrs:{id:"application-export"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-export"}},[t._v("#")]),t._v(" Application export")]),t._v(" "),a("p",[t._v("Save the source code of all tables, pages, and contracts of the application as files.")]),t._v(" "),a("h3",{attrs:{id:"application-import"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-import"}},[t._v("#")]),t._v(" Application import")]),t._v(" "),a("p",[t._v("Load all tables, pages, and contracts of an application included in the export file into the ECOLIB.")]),t._v(" "),a("h3",{attrs:{id:"smart-law"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-law"}},[t._v("#")]),t._v(" Smart law")]),t._v(" "),a("p",[t._v("It is a special set of smart contracts that contain regulatory information and used to manage and control the operation and register access rights.")]),t._v(" "),a("h3",{attrs:{id:"legal-system"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#legal-system"}},[t._v("#")]),t._v(" Legal system")]),t._v(" "),a("p",[t._v("A set of rules and mechanisms established in smart law, which can regulate the relationship between ECOLIB users, define procedural rules for changing protocol parameters, and define various challenging solutions.")]),t._v(" "),a("h3",{attrs:{id:"application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application"}},[t._v("#")]),t._v(" Application")]),t._v(" "),a("p",[t._v("Create fully functional software products in Weaver's IDE.")]),t._v(" "),a("p",[t._v("An application is a collection of elements such as database tables, smart contracts, and user pages with configuration access rights.")]),t._v(" "),a("h3",{attrs:{id:"page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page"}},[t._v("#")]),t._v(" Page")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that forms an interactive interface on the screen.")]),t._v(" "),a("h3",{attrs:{id:"code-segment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#code-segment"}},[t._v("#")]),t._v(" Code segment")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that can be reused in application pages.")]),t._v(" "),a("h3",{attrs:{id:"access-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights"}},[t._v("#")]),t._v(" Access rights")]),t._v(" "),a("p",[t._v("Conditions to get access rights for creating and editing tables, contracts and pages.")]),t._v(" "),a("p",[t._v("The access rights to tables can be configured with rights to add rows and columns, and edit the values in columns.")]),t._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[t._v("#")]),t._v(" Honor node")]),t._v(" "),a("p",[t._v("A node in the network node that has the right to generate and verify blocks.")]),t._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[t._v("#")]),t._v(" Guardian node")]),t._v(" "),a("p",[t._v("A node on the network used to store the latest version of the complete blockchain.")]),t._v(" "),a("h3",{attrs:{id:"concurrent-transaction-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#concurrent-transaction-processing"}},[t._v("#")]),t._v(" Concurrent transaction processing")]),t._v(" "),a("p",[t._v("A method to increase transaction processing speed by processing data from different ECOLIBs at the same time.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/120.0be976db.js b/assets/js/120.017e1c20.js similarity index 99% rename from assets/js/120.0be976db.js rename to assets/js/120.017e1c20.js index cdccba1..834bd71 100644 --- a/assets/js/120.0be976db.js +++ b/assets/js/120.017e1c20.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{501:function(a,t,s){"use strict";s.r(t);var e=s(51),r=Object(e.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"restful-api-v2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[a._v("#")]),a._v(" RESTful API v2")]),a._v(" "),s("p",[a._v("Kimlik doğrulama, ekosistem veri alımı, hata işleme, veritabanı tablosu işlemleri, sayfalar ve sözleşmelerin uygulanması dahil olmak üzere Weaver tarafından sağlanan tüm işlevler, IBAX'in REST API'si kullanılarak kullanılabilir.")]),a._v(" "),s("p",[a._v("REST API ile geliştiriciler, Weaver kullanmadan tüm platform işlevlerine erişebilir.")]),a._v(" "),s("p",[a._v('API komut çağrıları, "/api/v2/command/[param]" adresiyle yürütülür; burada "komut" komut adıdır ve "param" ek bir parametredir. İstek parametreleri \'Content-Type: x-www-form-urlencoded\' formatında gönderilmelidir. Sunucu yanıtı sonucu JSON biçimindedir.')]),a._v(" "),s("ul",[s("li",[s("p",[s("a",{attrs:{href:"#Hata-y%C3%B6netimi"}},[a._v("Hata yönetimi")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#Hata-listesi"}},[a._v("Hata listesi")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#Kimlik-do%C4%9Frulama"}},[a._v("Kimlik doğrulama")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#getuid"}},[a._v("getuid")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#Giri%C5%9F"}},[a._v("Giriş")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#API'ler-CLB-taraf%C4%B1ndan-kullan%C4%B1lam%C4%B1yor"}},[a._v("API'ler CLB tarafından kullanılamıyor")])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#Servis-komutlar%C4%B1"}},[a._v("Servis komutları")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#version"}},[a._v("Versiyon")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#Veri-talebi-i%C5%9Flevleri"}},[a._v("Veri talebi işlevleri")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#balance"}},[a._v("Balans")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#bloklar"}},[a._v("Bloklar")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#detayl%C4%B1-bloklar"}},[a._v("Detaylı bloklar")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#data-table-id-column-hash"}},[a._v("/data/{table}/{id}/{column}/{hash}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#keyinfo"}},[a._v("keyinfo")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#Metrikleri-al"}},[a._v("Metrikleri al")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#keys"}},[a._v("keys")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#blocks"}},[a._v("blocks")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#%C4%B0%C5%9Flemler"}},[a._v("işlemler")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#Ekosistemler"}},[a._v("ekosistemler")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#fullnodes"}},[a._v("fullnodes")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#ecosystem"}},[a._v("Ekosistem")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#ecosystemname"}},[a._v("ekosistemadı")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#ecosystems"}},[a._v("ekosistemler")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#appparams-appid"}},[a._v("appparams/{appID}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#appparam-appid-name"}},[a._v("appparam/{appid}/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#ecosystemparams"}},[a._v("ecosystemparams")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#ecosystemparam-name"}},[a._v("ecosystemparam/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#tables-limit-offset"}},[a._v("tables/[?limit=…&offset=…]")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#table-name"}},[a._v("table/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#list-name-limit-offset-colums"}},[a._v("list/{name}[?limit=…&offset=…&columns=…]")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#sections-limit-offset-lang"}},[a._v("sections[?limit=…&offset=…&lang=]")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#row-name-id-colums"}},[a._v("row/{name}/{id}[?columns=]")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#systemparams"}},[a._v("systemparams")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#history-name-id"}},[a._v("history/{name}/{id}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#interface-page-menu-block-name"}},[a._v("interface/{page|menu|block}/{name}")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#contract-functions"}},[a._v("Contract functions")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#contracts-limit-offset"}},[a._v("contracts[?limit=…&offset=…]")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#contract-name"}},[a._v("contract/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#sendtx"}},[a._v("sendTX")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#txstatus"}},[a._v("txstatus")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#txinfo-hash"}},[a._v("txinfo/{hash}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#txinfomultiple"}},[a._v("txinfoMultiple/")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#page-validators_count-name"}},[a._v("/page/validators_count/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#content-menu-page-name"}},[a._v("content/menu|page/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#content-source-name"}},[a._v("content/source/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#content-hash-name"}},[a._v("content/hash/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#content"}},[a._v("content")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#maxblockid"}},[a._v("maxblockid")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#block-id"}},[a._v("block/{id}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#avatar-ecosystem-member"}},[a._v("avatar/{ecosystem}/{member}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#config-centrifugo"}},[a._v("config/centrifugo")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#updnotificator"}},[a._v("updnotificator")])])])])]),a._v(" "),s("h2",{attrs:{id:"hata-yonetimi"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hata-yonetimi"}},[a._v("#")]),a._v(" Hata yönetimi")]),a._v(" "),s("p",[a._v('İstek başarıyla yürütülürse, "200" durum kodu döndürülür. Bir hata oluşursa, hata durumuna ek olarak aşağıdaki alanlara sahip bir JSON nesnesi döndürülür:')]),a._v(" "),s("ul",[s("li",[a._v("hata")])]),a._v(" "),s("p",[a._v("Hata tanımlayıcısı.")]),a._v(" "),s("ul",[s("li",[a._v("mesaj")])]),a._v(" "),s("p",[a._v("Bir hata durumunda metin döndürülür.")]),a._v(" "),s("ul",[s("li",[a._v("parametreler")])]),a._v(" "),s("p",[a._v("Bir hata durumunda döndürülen metinde bulunabilecek hatanın ek parametreleri.")]),a._v(" "),s("blockquote",[s("p",[a._v("Yanıt örneği")])]),a._v(" "),s("p",[a._v("400 (Kötü istek)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"err"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"E_INVALIDWALLET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"msg"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"Wallet 1234-5678-9012-3444-3488 is not valid"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"params"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1234-5678-9012-3444-3488"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"hata-listesi"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hata-listesi"}},[a._v("#")]),a._v(" Hata listesi")]),a._v(" "),s("blockquote",[s("p",[a._v("E_CONTRACT")])]),a._v(" "),s("p",[s("code",[a._v("%s")]),a._v(" kontratı mevcut değil")]),a._v(" "),s("blockquote",[s("p",[a._v("E_DBNIL")])]),a._v(" "),s("p",[a._v("Boş database")]),a._v(" "),s("blockquote",[s("p",[a._v("E_DELETEDKEY")])]),a._v(" "),s("p",[a._v("Hesap adresi askıya alındı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_ECOSYSTEM")])]),a._v(" "),s("p",[a._v('Ekosistem "%d" mevcut değil')]),a._v(" "),s("blockquote",[s("p",[a._v("E_EMPTYPUBLIC")])]),a._v(" "),s("p",[a._v("Hesap için geçersiz public key")]),a._v(" "),s("blockquote",[s("p",[a._v("E_KEYNOTFOUND")])]),a._v(" "),s("p",[a._v("Hesap adresi bulunamadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_HASHWRONG")])]),a._v(" "),s("p",[a._v("Yanlış hash")]),a._v(" "),s("blockquote",[s("p",[a._v("E_HASHNOTFOUND")])]),a._v(" "),s("p",[a._v("Hash bulunamadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_HEAVYPAGE")])]),a._v(" "),s("p",[a._v("Çok fazla sayfa yüklendi")]),a._v(" "),s("blockquote",[s("p",[a._v("E_INVALIDWALLET")])]),a._v(" "),s("p",[a._v('Geçersiz cüzdan adresi "%s"')]),a._v(" "),s("blockquote",[s("p",[a._v("E_LIMITTXSIZE")])]),a._v(" "),s("p",[a._v("Limit dışı bir işlemin boyutu")]),a._v(" "),s("blockquote",[s("p",[a._v("E_NOTFOUND")])]),a._v(" "),s("p",[a._v("Sayfa veya menü içeriği bulunamadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_PARAMNOTFOUND")])]),a._v(" "),s("p",[a._v("Parametre bulunamadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_PERMISSION")])]),a._v(" "),s("p",[a._v("İzin yok")]),a._v(" "),s("blockquote",[s("p",[a._v("E_QUERY")])]),a._v(" "),s("p",[a._v("Veritabanı sorgu hatası")]),a._v(" "),s("blockquote",[s("p",[a._v("E_RECOVERED")])]),a._v(" "),s("p",[a._v("API'de panik hatası var.\nPanik hatası varsa bir hata döndürün.\nBulunması ve düzeltilmesi gereken bir hatayla karşılaştığınız anlamına gelir.")]),a._v(" "),s("blockquote",[s("p",[a._v("E_SERVER")])]),a._v(" "),s("p",[a._v("Server hatası.\ngolang library işlevinde bir hata varsa, geri döner. Mesaj alanı, bir hata durumunda döndürülen metni içerir.")]),a._v(" "),s("p",[a._v("Herhangi bir komuta yanıt olarak bir "),s("strong",[a._v("E_SERVER")]),a._v(" hatası oluşabilir. Hatalı giriş parametreleri nedeniyle oluşursa, bunu ilgili bir hatayla değiştirebilirsiniz. Başka bir durumda, bu hata, daha ayrıntılı bir araştırma raporu gerektiren geçersiz işlem veya yanlış sistem yapılandırması bildirir.")]),a._v(" "),s("blockquote",[s("p",[a._v("E_SIGNATURE")])]),a._v(" "),s("p",[a._v("Yanlış imza")]),a._v(" "),s("blockquote",[s("p",[a._v("E_STATELOGIN")])]),a._v(" "),s("p",[s("code",[a._v("%s")]),a._v(" ekosisteminin bir üyesi değil")]),a._v(" "),s("blockquote",[s("p",[a._v("E_TABLENOTFOUND")])]),a._v(" "),s("p",[s("code",[a._v("%s")]),a._v(" tablosu bulunamadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_TOKENEXPIRED")])]),a._v(" "),s("p",[s("code",[a._v("%s")]),a._v(" oturumunun süresi doldu")]),a._v(" "),s("blockquote",[s("p",[a._v("E_UNAUTHORIZED")])]),a._v(" "),s("p",[a._v("Yetkisiz.")]),a._v(" "),s("p",[a._v("Giriş yapılmadıysa veya oturumun süresi dolduysa, "),s("code",[a._v("getuid, login")]),a._v(" dışında herhangi bir komut\nE_UNAUTHORIZED error.")]),a._v(" "),s("blockquote",[s("p",[a._v("E_UNKNOWNUID\nUnknown UID")])]),a._v(" "),s("blockquote",[s("p",[a._v("E_UPDATING")])]),a._v(" "),s("p",[a._v("Düğüm blok zincirini güncelliyor")]),a._v(" "),s("blockquote",[s("p",[a._v("E_STOPPING")])]),a._v(" "),s("p",[a._v("Düğüm Durdu")]),a._v(" "),s("blockquote",[s("p",[a._v("E_NOTIMPLEMENTED")])]),a._v(" "),s("p",[a._v("Henüz uygulanmadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_BANNED")])]),a._v(" "),s("p",[a._v("Hesap adresi "),s("code",[a._v("%s")]),a._v(" içinde yasaklandı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_CHECKROLE")])]),a._v(" "),s("p",[a._v("Erişim reddedildi")]),a._v(" "),s("h2",{attrs:{id:"api-ler-clb-tarafından-kullanılamıyor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#api-ler-clb-tarafından-kullanılamıyor"}},[a._v("#")]),a._v(" API'ler CLB tarafından kullanılamıyor")]),a._v(" "),s("p",[a._v("CLB düğümü için arabirim isteği kullanılamıyor:")]),a._v(" "),s("ul",[s("li",[a._v("metrics")]),a._v(" "),s("li",[a._v("txinfo")]),a._v(" "),s("li",[a._v("txinfoMultiple")]),a._v(" "),s("li",[a._v("appparam")]),a._v(" "),s("li",[a._v("appparams")]),a._v(" "),s("li",[a._v("appcontent")]),a._v(" "),s("li",[a._v("history")]),a._v(" "),s("li",[a._v("balance")]),a._v(" "),s("li",[a._v("block")]),a._v(" "),s("li",[a._v("maxblockid")]),a._v(" "),s("li",[a._v("blocks")]),a._v(" "),s("li",[a._v("detailed blocks")]),a._v(" "),s("li",[a._v("ecosystemparams")]),a._v(" "),s("li",[a._v("systemparams")]),a._v(" "),s("li",[a._v("ecosystems")]),a._v(" "),s("li",[a._v("ecosystemparam")]),a._v(" "),s("li",[a._v("ecosystemname")]),a._v(" "),s("li",[a._v("walletHistory")]),a._v(" "),s("li",[a._v("tx_record")])]),a._v(" "),s("h2",{attrs:{id:"kimlik-dogrulama"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#kimlik-dogrulama"}},[a._v("#")]),a._v(" Kimlik doğrulama")]),a._v(" "),s("p",[a._v("Kimlik doğrulama için "),s("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#https://jwt.io/"}},[a._v("JWT token")]),a._v(" kullanılır. JWT belirtecini aldıktan sonra, her istek başlığına yerleştirilmelidir: "),s("code",[a._v("Yetkilendirme: Taşıyıcı TOKEN_HERE")]),a._v(".")],1),a._v(" "),s("h3",{attrs:{id:"getuid"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[a._v("#")]),a._v(" getuid")]),a._v(" "),s("p",[a._v("GET/ benzersiz bir değer döndürür, özel anahtarla imzalar ve ardından "),s("a",{attrs:{href:"#login"}},[a._v("login")]),a._v(" komutunu kullanarak sunucuya geri gönderir.")]),a._v(" "),s("p",[a._v("Geçici bir JWT belirteci oluşturmak için, "),s("strong",[a._v("login")]),a._v(" çağrılırken belirteci "),s("strong",[a._v("Yetkilendirme")]),a._v("'ye iletmeniz gerekir.")]),a._v(" "),s("h4",{attrs:{id:"istek"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/getuid")])]),a._v(" "),s("h4",{attrs:{id:"cevap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[a._v("uid")])]),a._v(" "),s("p",[a._v("İmza numaraları.")]),a._v(" "),s("ul",[s("li",[a._v("token")])]),a._v(" "),s("p",[a._v("Oturum açma sırasında geçici belirteç iletildi.")]),a._v(" "),s("p",[a._v("Geçici bir tokenın ömrü 5 saniyedir.")]),a._v(" "),s("ul",[s("li",[a._v("network_id")])]),a._v(" "),s("p",[a._v("Sunucu identifier.")]),a._v(" "),s("p",[a._v("Yetkilendirme gerekli değilse, aşağıdaki bilgiler iade edilecektir:")]),a._v(" "),s("ul",[s("li",[a._v("expire")])]),a._v(" "),s("p",[a._v("Son kullanma süresi.")]),a._v(" "),s("ul",[s("li",[a._v("ecosystem")])]),a._v(" "),s("p",[a._v("Ecosystem ID.")]),a._v(" "),s("ul",[s("li",[a._v("key_id")])]),a._v(" "),s("p",[a._v("Hesap adresi.")]),a._v(" "),s("ul",[s("li",[a._v("address")])]),a._v(" "),s("p",[a._v("Cüzdan adresi "),s("code",[a._v("XXXX-XXXX-.....-XXXX")]),a._v(".")]),a._v(" "),s("h4",{attrs:{id:"cevap-example"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"uid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"4999317241855959593"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"token"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9........I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"network_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"4717243765193692211"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"giris"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#giris"}},[a._v("#")]),a._v(" Giriş")]),a._v(" "),s("p",[a._v("POST/ Kullanıcı kimliğinin doğrulanması.")]),a._v(" "),s("p",[a._v("Benzersiz bir değer almak ve imzalamak için önce "),s("strong",[a._v("getuid")]),a._v(" komutu çağrılmalıdır. Getuid'in geçici JWT belirtecinin istek başlığında iletilmesi gerekir.")]),a._v(" "),s("p",[a._v("İstek başarılı olursa yanıtta alınan belirteç "),s("strong",[a._v("Yetkilendirme")]),a._v("'ye dahil edilir.")]),a._v(" "),s("h4",{attrs:{id:"istek-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-2"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/login")])]),a._v(" "),s("ul",[s("li",[a._v("[ecosystem]")])]),a._v(" "),s("p",[a._v("Ecosystem ID.")]),a._v(" "),s("p",[a._v("Belirtilmezse, varsayılan olarak ilk ekosistemin kimliği.")]),a._v(" "),s("ul",[s("li",[a._v("[expire]")])]),a._v(" "),s("p",[a._v("JWT tokenın ömrü, saniye cinsinden varsayılan olarak 28800.")]),a._v(" "),s("ul",[s("li",[a._v("[pubkey]")])]),a._v(" "),s("p",[a._v("Hesabın onaltılık sistemde public keyi.")]),a._v(" "),s("ul",[s("li",[a._v("[key_id]")])]),a._v(" "),s("p",[a._v("Hesap adresi "),s("code",[a._v("XXXX-...-XXXX")]),a._v(".")]),a._v(" "),s("p",[a._v("Public key blok zincirinde zaten depolanmışsa bu parametreyi kullanın. pubkey parametresi ile aynı anda kullanılamaz.")]),a._v(" "),s("ul",[s("li",[a._v("signature")])]),a._v(" "),s("p",[a._v("Getuid aracılığıyla alınan UID imzası.")]),a._v(" "),s("h4",{attrs:{id:"cevap-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-2"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("token")]),a._v(" "),s("p",[a._v("JWT token.")])]),a._v(" "),s("li",[s("p",[a._v("ecosystem")]),a._v(" "),s("p",[a._v("Ecosystem ID.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("Hesap adres ID")])]),a._v(" "),s("li",[s("p",[a._v("address")]),a._v(" "),s("p",[a._v("Cüzdan adresi "),s("code",[a._v("XXXX-XXXX-.....-XXXX")]),a._v(".")])]),a._v(" "),s("li",[s("p",[a._v("notify_key")]),a._v(" "),s("p",[a._v("Bildirim ID.")])]),a._v(" "),s("li",[s("p",[a._v("isnode")]),a._v(" "),s("p",[a._v("Hesap adresinin düğümün sahibi olup olmadığı. Değer: "),s("code",[a._v("true, false")]),a._v(".")])]),a._v(" "),s("li",[s("p",[a._v("isowner")]),a._v(" "),s("p",[a._v("Hesap adresinin ekosistemin yaratıcısı olup olmadığı. Değer: "),s("code",[a._v("doğru, yanlış")]),a._v(".")])]),a._v(" "),s("li",[s("p",[a._v("obs")]),a._v(" "),s("p",[a._v("Kayıtlı ekosistemin CLB olup olmadığı. Değer: "),s("code",[a._v("doğru, yanlış")]),a._v(".")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-example-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-2"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"token"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9........AHDRDqDFBoWEHw-9lfIcLobehvNEeIYBB4BIb5J72aQ"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ecosystem"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"key_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"54321"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"address"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"4321-....-2223"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-2"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")]),a._v(" "),s("h2",{attrs:{id:"servis-komutları"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#servis-komutları"}},[a._v("#")]),a._v(" Servis komutları")]),a._v(" "),s("h3",{attrs:{id:"versiyon"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#versiyon"}},[a._v("#")]),a._v(" Versiyon")]),a._v(" "),s("p",[a._v("GET/ Geçerli sunucunun sürümünü döndürür.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-3"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/version")])]),a._v(" "),s("h4",{attrs:{id:"cevap-example-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-3"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('200 (OK)\nContent-Type: application/json\n"1.2.6"\n')])])]),s("h2",{attrs:{id:"veri-talebi-islevleri"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#veri-talebi-islevleri"}},[a._v("#")]),a._v(" Veri talebi işlevleri")]),a._v(" "),s("h3",{attrs:{id:"balans"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#balans"}},[a._v("#")]),a._v(" Balans")]),a._v(" "),s("p",[a._v("GET/ Mevcut ekosistemdeki hesap adresinin bakiyesini isteyin.")]),a._v(" "),s("h4",{attrs:{id:"istek-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-4"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/balance/{wallet}")])]),a._v(" "),s("ul",[s("li",[a._v("wallet")])]),a._v(" "),s("p",[a._v("Adres tanımlayıcı. Herhangi bir biçimde "),s("code",[a._v("int64, uint64, XXXX-...-XXXX")]),a._v(" belirtebilirsiniz. Bu adres, kullanıcının şu anda oturum açtığı ekosistemde sorgulanacaktır.")]),a._v(" "),s("h4",{attrs:{id:"cevap-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-3"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("amount")]),a._v(" "),s("p",[a._v("En küçük birimin hesap bakiyesi.")])]),a._v(" "),s("li",[s("p",[a._v("money")]),a._v(" "),s("p",[a._v("Hesap bakiyesi.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-example-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-4"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"amount"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"877450000000000"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"money"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"877.45"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-3"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER, E_INVALIDWALLET")]),a._v(" "),s("h3",{attrs:{id:"bloklar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bloklar"}},[a._v("#")]),a._v(" Bloklar")]),a._v(" "),s("p",[a._v("GET/, her bloktaki işlemlerle ilgili ek bilgileri içeren bir liste döndürür.\nBu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-5"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/blocks")])]),a._v(" "),s("ul",[s("li",[a._v("block_id")])]),a._v(" "),s("p",[a._v("Sorgulanacak başlangıç ​​bloğunun yüksekliği.")]),a._v(" "),s("ul",[s("li",[a._v("count")])]),a._v(" "),s("p",[a._v("blok sayısı")]),a._v(" "),s("h4",{attrs:{id:"cevap-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-4"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("Block Height")]),a._v(" "),s("p",[a._v("Bloktaki işlemlerin listesi ve her işlemin ek bilgileri:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İşlem hash.")])]),a._v(" "),s("li",[s("p",[a._v("contract_name")]),a._v(" "),s("p",[a._v("Kontrat Adı.")])]),a._v(" "),s("li",[s("p",[a._v("params")]),a._v(" "),s("p",[a._v("Bir dizi sözleşme parametresi.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("İlk blok için, işlemi imzalayan ilk bloğun hesap adresi.\nDiğer tüm bloklar için, işlemi imzalayan hesabın adresi.")])])])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('200 (OK)\nContent-Type: application/json\n{"1":\n [{"hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),s("h4",{attrs:{id:"hatalı-cevap-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-4"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER, E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"detaylı-bloklar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#detaylı-bloklar"}},[a._v("#")]),a._v(" Detaylı bloklar")]),a._v(" "),s("p",[a._v("GET/, her bloktaki işlemlerle ilgili ayrıntılı ek bilgileri içeren bir liste döndürür.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-6"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/detailed_blocks")])]),a._v(" "),s("h4",{attrs:{id:"cevap-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-5"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[a._v("Blok Height\n"),s("ul",[s("li",[s("p",[a._v("Başlık bloğu")]),a._v(" "),s("p",[a._v("Blok başlığı aşağıdaki alanları içerir:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("block_id")]),a._v(" "),s("p",[a._v("Block height.")])]),a._v(" "),s("li",[s("p",[a._v("time")]),a._v(" "),s("p",[a._v("Blok oluşturma timestamp.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("Bloğu imzalayan hesabın adresi.")])]),a._v(" "),s("li",[s("p",[a._v("node_position")]),a._v(" "),s("p",[a._v("Honor node listesinde bloğu oluşturan node konumu.")])]),a._v(" "),s("li",[s("p",[a._v("version")]),a._v(" "),s("p",[a._v("Blok yapısı sürümü.")])])])]),a._v(" "),s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("Blok hash.")])]),a._v(" "),s("li",[s("p",[a._v("node_position")]),a._v(" "),s("p",[a._v("Honor node listesinde bloğu oluşturan node konumu.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("Bloğu imzalayan hesabın adresi.")])]),a._v(" "),s("li",[s("p",[a._v("time")]),a._v(" "),s("p",[a._v("Blok oluşturma timestamp.")])]),a._v(" "),s("li",[s("p",[a._v("tx_count")]),a._v(" "),s("p",[a._v("Bloktaki işlem sayısı.")])]),a._v(" "),s("li",[s("p",[a._v("rollback_hash")]),a._v(" "),s("p",[a._v("Block rollback hash.")])]),a._v(" "),s("li",[s("p",[a._v("mrkl_root")]),a._v(" "),s("p",[a._v("Blok işlemlerinin Merkel ağacı.")])]),a._v(" "),s("li",[s("p",[a._v("bin_data")]),a._v(" "),s("p",[a._v("Blok başlığının, bloktaki tüm işlemlerin, önceki blok hashinin ve bloğu oluşturan düğümün özel anahtarının serileştirilmesi.")])]),a._v(" "),s("li",[s("p",[a._v("sys_update")]),a._v(" "),s("p",[a._v("Blok, sistem parametrelerini güncellemek için işlemler içeriyor mu?")])]),a._v(" "),s("li",[s("p",[a._v("Transaction")]),a._v(" "),s("p",[a._v("Bloktaki işlemlerin listesi ve her işlemin ek bilgileri:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İşlem hash.")])]),a._v(" "),s("li",[s("p",[a._v("contract_name")]),a._v(" "),s("p",[a._v("Kontrat adı.")])]),a._v(" "),s("li",[s("p",[a._v("params")]),a._v(" "),s("p",[a._v("Kontrat parametreleri.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("İşlemi imzalayan hesabın adresi.")])]),a._v(" "),s("li",[s("p",[a._v("time")]),a._v(" "),s("p",[a._v("İşlem oluşturma timestamp.")])]),a._v(" "),s("li",[s("p",[a._v("type")]),a._v(" "),s("p",[a._v("İşlem tipi.")])])])])])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-2"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"header"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"block_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"time"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1551069320")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ecosystem_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"key_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("-118432674655542910")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"node_position"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"version"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ecosystem_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"node_position"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"key_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("-118432674655542910")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"time"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1551069320")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tx_count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"rollbacks_hash"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"mrkl_root"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"bin_data"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token null keyword"}},[a._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"sys_update"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"gen_block"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"stop_count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"transactions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"contract_name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"params"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token null keyword"}},[a._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"key_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"time"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-5"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER, E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"data-table-id-column-hash"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"data-table-id-column-hash"}},[a._v("/data/{table}/{id}/{column}/{hash}")])]),a._v(" "),s("p",[a._v("GET/ Belirtilen hash, belirtilen tablo, alan ve kayıttaki verilerle eşleşirse, bu istek verileri döndürür. Aksi takdirde, bir hata döndürülür.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-7"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /data/{table}/{id}/{column}/{hash}")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("table")]),a._v(" "),s("p",[a._v("Tablo ismi.")])]),a._v(" "),s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Kayıt ID.")])]),a._v(" "),s("li",[s("p",[a._v("column")]),a._v(" "),s("p",[a._v("Alan adı.")])]),a._v(" "),s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İstenen verilerin hash'i.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-6"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("p",[a._v("Ikili veri")]),a._v(" "),s("h3",{attrs:{id:"keyinfo"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[a._v("#")]),a._v(" keyinfo")]),a._v(" "),s("p",[a._v("GET/, belirtilen adrese kayıtlı roller de dahil olmak üzere bir ekosistem listesi döndürür.\nBu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-8"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/keyinfo/{key_id}")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("Adres tanımlayıcı, herhangi bir biçimde "),s("code",[a._v("int64, uint64, XXXX-...-XXXX")]),a._v(" şeklinde belirtebilirsiniz.")]),a._v(" "),s("p",[a._v("Tüm ekosistemlerde sorgulanan istek.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-7"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("ecosystem")]),a._v(" "),s("p",[a._v("Ecosystem ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("ekosistem adı.")])]),a._v(" "),s("li",[s("p",[a._v("roles")]),a._v(" "),s("p",[a._v("Kimlik ve ad alanlarına sahip roller listesi.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-3"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ecosystem"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"platform ecosystem"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"roles"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"Admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"Developer"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-6"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER, E_INVALIDWALLET")]),a._v(" "),s("h2",{attrs:{id:"metrikleri-al"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#metrikleri-al"}},[a._v("#")]),a._v(" Metrikleri al")]),a._v(" "),s("h3",{attrs:{id:"keys"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#keys"}},[a._v("#")]),a._v(" keys")]),a._v(" "),s("p",[a._v("GET/ Hesap adreslerinin sayısını verir.")]),a._v(" "),s("h4",{attrs:{id:"istek-9"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-9"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/metrics/keys")])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-4"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("28")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"blocks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[a._v("#")]),a._v(" blocks")]),a._v(" "),s("p",[a._v("GET/ Blok sayısını verir.")]),a._v(" "),s("h4",{attrs:{id:"istek-10"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-10"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/metrics/blocks")])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-5"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("28")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"islemler"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#islemler"}},[a._v("#")]),a._v(" İşlemler")]),a._v(" "),s("p",[a._v("GET/ Toplam işlem sayısını verir.")]),a._v(" "),s("h4",{attrs:{id:"istek-11"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-11"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/metrics/transactions")])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-6"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("28")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"ekosistemler"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ekosistemler"}},[a._v("#")]),a._v(" Ekosistemler")]),a._v(" "),s("p",[a._v("GET/ Ekosistemlerin sayısını verir.")]),a._v(" "),s("h4",{attrs:{id:"istek-12"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-12"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/metrics/ecosystems")])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-7"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("28")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"fullnodes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fullnodes"}},[a._v("#")]),a._v(" fullnodes")]),a._v(" "),s("p",[a._v("GET/, honor node sayısını döndürür.")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/metrics/fullnodes")])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-8"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("28")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h2",{attrs:{id:"ekosistem"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ekosistem"}},[a._v("#")]),a._v(" Ekosistem")]),a._v(" "),s("h3",{attrs:{id:"ecosystemname"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[a._v("#")]),a._v(" ecosystemname")]),a._v(" "),s("p",[a._v("GET/, tanımlayıcısına göre ekosistemin adını döndürür.\nBu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-13"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-13"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/ecosystemname?id=..")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Ekosistem ID.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-9"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-9"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ecosystem_name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"platform_ecosystem"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-7"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_PARAMNOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"ecosystems"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ecosystems"}},[a._v("#")]),a._v(" ecosystems")]),a._v(" "),s("p",[a._v("GET/ Ekosistemlerin sayısını verir.")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/ecosystems/")])]),a._v(" "),s("h4",{attrs:{id:"cevap-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-8"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[a._v("number")])]),a._v(" "),s("p",[a._v("Kurulan ekosistemlerin sayısı.")]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-10"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-10"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"number"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("100")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"appparams-appid"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"appparams-appid"}},[a._v("appparams/{appID}")])]),a._v(" "),s("p",[a._v("GET/ Geçerli veya belirtilen ekosistemdeki uygulama parametrelerinin bir listesini döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-14"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-14"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/appparams")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[appid]")]),a._v(" "),s("p",[a._v("Application ID.")])]),a._v(" "),s("li",[s("p",[a._v("[ecosystem]")]),a._v(" "),s("p",[a._v("Ecosystem ID. Belirtilmezse, mevcut ekosistemin parametreleri döndürülür.")])]),a._v(" "),s("li",[s("p",[a._v("[names]")]),a._v(" "),s("p",[a._v("Alınan parametrelerin listesi.\nVirgülle ayrılmış parametre adlarının listesini belirleyebilirsiniz. Örneğin: "),s("code",[a._v("/api/v2/appparams/1?names=name,mypar")]),a._v(".")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-9"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-9"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Each element in the array contains the following parameters:")]),a._v(" "),s("ul",[s("li",[a._v("name, parameter name;")]),a._v(" "),s("li",[a._v("value, parameter value;")]),a._v(" "),s("li",[a._v("conditions, permission to change parameters.")])])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-11"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-11"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MyState"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"mypar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"My value"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-8"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_ECOSYSTEM")]),a._v(" "),s("h3",{attrs:{id:"appparam-appid-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"appparam-appid-name"}},[a._v("appparam/{appid}/{name}")])]),a._v(" "),s("p",[a._v("GET/ Geçerli veya belirtilen ekosistemdeki {appid} uygulamasının {name} parametresiyle ilgili bilgileri döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-15"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-15"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/appparam/{appid}/{name}[?ecosystem=1]")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("appid")]),a._v(" "),s("p",[a._v("Uygulama ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("İstenen parametrenin adı.")])]),a._v(" "),s("li",[s("p",[a._v("[ecosystem]")]),a._v(" "),s("p",[a._v("Ekosistem Kimliği (isteğe bağlı parametre).\nVarsayılan olarak mevcut ekosistemi döndürür.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-10"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-10"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Parametre ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Parametre adı.")])]),a._v(" "),s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("Parametre değeri.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Parametreleri değiştirme izni.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-12"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-12"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"10"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"par"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"My value"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-9"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-9"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_ECOSYSTEM, E_PARAMNOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"ecosystemparams"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[a._v("#")]),a._v(" ecosystemparams")]),a._v(" "),s("p",[a._v("GET/ Ekosistem parametrelerinin listesini döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-16"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/ecosystemparams/[?ecosystem=...&names=...]")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[ecosystem]")]),a._v(" "),s("p",[a._v("Ekosistem ID. Belirtilmezse mevcut ekosistem kimliği döndürülür.")])]),a._v(" "),s("li",[s("p",[a._v("[names]\nVirgülle ayrılmış istek parametrelerinin listesi.\nÖrnek "),s("code",[a._v("/api/v2/ecosystemparams/?names=name,currency,logo*")]),a._v(".")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-11"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-11"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe aşağıdaki parametreleri içerir:")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Parametre adı.")])]),a._v(" "),s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("Parametre değeri.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Parametreleri değiştirme izni.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-13"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-13"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MyState"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"currency"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MY"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-10"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-10"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_ECOSYSTEM")]),a._v(" "),s("h3",{attrs:{id:"ecosystemparam-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"ecosystemparam-name"}},[a._v("ecosystemparam/{name}")])]),a._v(" "),s("p",[a._v("GET/ Geçerli veya belirtilen ekosistemdeki {name} parametresiyle ilgili bilgileri döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-17"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-17"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/ecosystemparam/{name}[?ecosystem=1]")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("İstek parametresinin adı.")])]),a._v(" "),s("li",[s("p",[a._v("[ecosystem]")]),a._v(" "),s("p",[a._v("Ekosistem kimliğini belirtebilirsiniz. Varsayılan olarak, mevcut ekosistem id döndürülür.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-12"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-12"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Parametre adı.")])]),a._v(" "),s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("Parametre değeri.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Parametreleri değiştirme izni.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-14"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-14"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"currency"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MYCUR"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-11"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-11"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_ECOSYSTEM")]),a._v(" "),s("h3",{attrs:{id:"tables-limit-offset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"tables-limit-offset"}},[a._v("tables/[?limit=…&offset=…]")])]),a._v(" "),s("p",[a._v("GET/ Ofseti ve giriş sayısını ayarlayabileceğiniz mevcut ekosistemin tablolarının listesini döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-18"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-18"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[limit]")]),a._v(" "),s("p",[a._v("Giriş sayısı, varsayılan olarak 25.")])]),a._v(" "),s("li",[s("p",[a._v("[offset]")]),a._v(" "),s("p",[a._v("Ofset, varsayılan olarak 0.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/tables")])]),a._v(" "),s("h4",{attrs:{id:"cevap-13"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-13"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("count")]),a._v(" "),s("p",[a._v("Tablodaki toplam girişler.")])]),a._v(" "),s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe aşağıdaki parametreleri içerir:")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Ön eki olmayan tablo adı.")])]),a._v(" "),s("li",[s("p",[a._v("count")]),a._v(" "),s("p",[a._v("Tablodaki giriş sayısı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-15"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-15"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"100"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"accounts"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"10"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"citizens"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"5"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"table-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"table-name"}},[a._v("table/{name}")])]),a._v(" "),s("p",[a._v("GET/ Mevcut ekosistem tarafından istenen tabloyla ilgili bilgileri döndürür.\nAşağıdaki alan bilgilerini döndürür:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Tablo ismi.")])]),a._v(" "),s("li",[s("p",[a._v("insert")]),a._v(" "),s("p",[a._v("Yeni girişler ekleme izni.")])]),a._v(" "),s("li",[s("p",[a._v("new_column")]),a._v(" "),s("p",[a._v("Yeni alanlar ekleme izni.")])]),a._v(" "),s("li",[s("p",[a._v("update")]),a._v(" "),s("p",[a._v("Girişleri değiştirme izni.")])]),a._v(" "),s("li",[s("p",[a._v("columns")]),a._v(" "),s("p",[a._v("Alanla ilgili bir dizi bilgi:")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Alan adı.")])]),a._v(" "),s("li",[s("p",[a._v("type")]),a._v(" "),s("p",[a._v("Alan veri türü.")])]),a._v(" "),s("li",[s("p",[a._v("perm")]),a._v(" "),s("p",[a._v("Bu alanın değerini değiştirme izni.")])])]),a._v(" "),s("h4",{attrs:{id:"istek-19"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-19"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/table/mytable")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Ekosistem ön eki olmayan tablo adı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-14"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-14"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Ekosistem ön eki olmayan tablo adı.")])]),a._v(" "),s("li",[s("p",[a._v("insert")]),a._v(" "),s("p",[a._v("Yeni girişler ekleme izni.")])]),a._v(" "),s("li",[s("p",[a._v("new_column")]),a._v(" "),s("p",[a._v("Yeni alanlar ekleme izni.")])]),a._v(" "),s("li",[s("p",[a._v("update")]),a._v(" "),s("p",[a._v("Girişleri değiştirme izni.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Tablo yapılandırmasını değiştirme izni.")])]),a._v(" "),s("li",[s("p",[a._v("columns")]),a._v(" "),s("p",[a._v("Alanla ilgili bir dizi bilgi:")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Alan adı.")])]),a._v(" "),s("li",[s("p",[a._v("type")]),a._v(" "),s("p",[a._v("Alan veri türü.")])]),a._v(" "),s("li",[s("p",[a._v("perm")]),a._v(" "),s("p",[a._v("Bu alanın değerini değiştirme izni.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-16"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"mytable"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"insert"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"new_column"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"update"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"columns"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"mynum"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"number"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"perm"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"mytext"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"text"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"perm"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-12"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-12"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_TABLENOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"list-name-limit-offset-columns"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"list-name-limit-offset-colums"}},[a._v("list/{name}[?limit=…&offset=…&columns=…]")])]),a._v(" "),s("p",[a._v("GET/ Geçerli ekosistemdeki belirtilen tablo girişlerinin listesini ve girişlerin ofsetini ve sayısını ayarlayabileceğiniz yeri döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-20"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-20"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Tablo adı.")])]),a._v(" "),s("li",[s("p",[a._v("[limit]")]),a._v(" "),s("p",[a._v("Giriş sayısı, varsayılan olarak 25'tir.")])]),a._v(" "),s("li",[s("p",[a._v("[offset]")]),a._v(" "),s("p",[a._v("Offset, 0 by default.")])]),a._v(" "),s("li",[s("p",[a._v("[columns]")]),a._v(" "),s("p",[a._v("İstenen sütunların virgülle ayrılmış listesi. Belirtilmezse, tüm sütunlar döndürülür. Çağrı durumlarında, id sütunu döndürülür.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/list/mytable?columns=name")])]),a._v(" "),s("h4",{attrs:{id:"cevap-15"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-15"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("count")]),a._v(" "),s("p",[a._v("Toplam girişler.")])]),a._v(" "),s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe aşağıdaki parametreleri içerir:")])]),a._v(" "),s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Entry ID.\nİstenen sütunların sırası.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-17"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-17"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"10"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"John"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"Mark"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"sections-limit-offset-lang"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"sections-limit-offset-lang"}},[a._v("sections[?limit=…&offset=…&lang=]")])]),a._v(" "),s("p",[a._v("GET/ Mevcut ekosistemin tablo bölümlerindeki girişlerin listesini ve girişlerin ofset ve sayısının ayarlanabileceği yeri döndürür.")]),a._v(" "),s("p",[a._v("role_access alanı bir roller listesi içeriyorsa ve mevcut rolü içermiyorsa, hiçbir kayıt döndürülmez. Başlık alanındaki veriler, istek başlığındaki Kabul Et-Dil dil kaynağı ile değiştirilecektir.")]),a._v(" "),s("h4",{attrs:{id:"istek-21"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-21"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[limit]")]),a._v(" "),s("p",[a._v("Giriş sayısı, varsayılan olarak 25.")])]),a._v(" "),s("li",[s("p",[a._v("[offset]")]),a._v(" "),s("p",[a._v("Offset, 0 by default.")])]),a._v(" "),s("li",[s("p",[a._v("[lang]")]),a._v(" "),s("p",[a._v("Bu alan, dil kaynaklarını veya yerelleştirme kodunu belirtir, örneğin: en, zh. Belirtilen dil kaynakları bulamazsanız, örneğin: en-US, o zaman en dil kaynakları grubunda arama yapın.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/sections")])]),a._v(" "),s("h4",{attrs:{id:"cevap-16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-16"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("count")]),a._v(" "),s("p",[a._v("Tablo bölümlerindeki toplam giriş sayısı.")])]),a._v(" "),s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe, tablo bölümlerindeki tüm sütunların bilgilerini içerir.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-18"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-18"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"title"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"Development"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"urlpage"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"develop"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n ...\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-13"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-13"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_TABLENOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"row-name-id-columns"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"row-name-id-colums"}},[a._v("row/{name}/{id}[?columns=]")])]),a._v(" "),s("h3",{attrs:{id:""}},[s("a",{staticClass:"header-anchor",attrs:{href:"#"}},[a._v("#")])]),a._v(" "),s("p",[a._v("GET/ Geçerli ekosistemde belirtilen tablonun girişini döndürür. Döndürülecek sütunları belirtebilirsiniz.")]),a._v(" "),s("h4",{attrs:{id:"istek-22"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-22"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Tablo ismi.")])]),a._v(" "),s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Giriş ID.")])]),a._v(" "),s("li",[s("p",[a._v("[columns]")]),a._v(" "),s("p",[a._v("İstenen sütunların virgülle ayrılmış listesi. Belirtilmezse, tüm sütunlar döndürülür. Her durumda, id sütunu döndürülür.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/row/mytable/10?columns=name")])]),a._v(" "),s("h4",{attrs:{id:"cevap-17"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-17"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("İstenen sütunların bir dizi değeri")]),a._v(" "),s("ul",[s("li",[a._v("id")])]),a._v(" "),s("p",[a._v("Giriş ID.")]),a._v(" "),s("ul",[s("li",[a._v("Sequence of İsteked columns.")])])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-19"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-19"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"values"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"10"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"John"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-14"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-14"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"systemparams"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[a._v("#")]),a._v(" systemparams")]),a._v(" "),s("p",[a._v("GET/ Returns the list of platform parameters.")]),a._v(" "),s("h4",{attrs:{id:"istek-23"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-23"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/systemparams/[?names=...]")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[names]")]),a._v(" "),s("p",[a._v("Virgülle ayrılmış bir istek parametreleri listesi. Örneğin, /api/v2/systemparams/?names=max_columns,max_indexes.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-18"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-18"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe aşağıdaki parametreleri içerir:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Parametre adı.")])])])]),a._v(" "),s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("Parametre değeri.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Parametreyi değiştirme izinleri.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-20"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-20"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"max_columns"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"100"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractAccess("')]),a._v("@1UpdateSysParam"),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('")"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"max_indexes"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractAccess("')]),a._v("@1UpdateSysParam"),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('")"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-15"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-15"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_PARAMNOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"history-name-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"history-name-id"}},[a._v("history/{name}/{id}")])]),a._v(" "),s("p",[a._v("GET/ Geçerli ekosistemde belirtilen tablodaki girişin değişiklik kaydını döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-24"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-24"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Tablo adı.")])]),a._v(" "),s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Giriş ID.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-19"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-19"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Öğeleri istenen girişin değiştirilmiş parametrelerini içeren bir dizideki her öğe.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-21"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-21"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"default_page"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"P(class, Default Ecosystem Page)"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"menu"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"default_menu"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"interface-page-menu-block-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-block-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"interface-page-menu-block-name"}},[a._v("interface/{page|menu|block}/{name}")])]),a._v(" "),s("p",[a._v("GET/ Geçerli ekosistemin belirtilen tablosundaki (sayfalar, menü veya bloklar) ad alanının girişini döndürür.")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/interface/page/default_page")])]),a._v(" "),s("h4",{attrs:{id:"istek-25"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-25"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Tabloda belirtilen girdinin adı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-20"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-20"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Giriş ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Giriş adı.")])]),a._v(" "),s("li",[s("p",[a._v("other")]),a._v(" "),s("p",[a._v("Tablonun diğer sütunları.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-22"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-22"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"default_page"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"P(Page content)"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"default_menu"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"default_menu"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"validate_count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-16"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_QUERY, E_NOTFOUND")]),a._v(" "),s("h2",{attrs:{id:"contract-functions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contract-functions"}},[a._v("#")]),a._v(" Contract functions")]),a._v(" "),s("h3",{attrs:{id:"contracts-limit-offset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"contracts-limit-offset"}},[a._v("contracts[?limit=…&offset=…]")])]),a._v(" "),s("p",[a._v("GET/ Mevcut ekosistemdeki sözleşmelerin listesini verir ve girişlerin mahsup ve sayısını ayarlayabilir.")]),a._v(" "),s("h4",{attrs:{id:"istek-26"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-26"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[limit]")]),a._v(" "),s("p",[a._v("Giriş sayısı, varsayılan olarak 25.")])]),a._v(" "),s("li",[s("p",[a._v("[offset]")]),a._v(" "),s("p",[a._v("Ofset, varsayılan olarak 0.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/contracts")])]),a._v(" "),s("h4",{attrs:{id:"cevap-21"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-21"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("count")]),a._v(" "),s("p",[a._v("Toplam giriş sayısı.")])]),a._v(" "),s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe aşağıdaki parametreleri içerir:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Kontrat ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Kontrat adı.")])]),a._v(" "),s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("Kontrat içeriği.")])]),a._v(" "),s("li",[s("p",[a._v("wallet_id")]),a._v(" "),s("p",[a._v("Kontratı bağlı hesap adresi.")])]),a._v(" "),s("li",[s("p",[a._v("address")]),a._v(" "),s("p",[a._v("Cüzdan adresi "),s("code",[a._v("XXXX-...-XXXX")]),a._v(" kontrata bağlı.")])]),a._v(" "),s("li",[s("p",[a._v("ecosystem_id")]),a._v(" "),s("p",[a._v("Kontratı ait olduğu ekosistemin ID.")])]),a._v(" "),s("li",[s("p",[a._v("app_id")]),a._v(" "),s("p",[a._v("Kontratın ait olduğu uygulamanın ID.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Kontratı değiştirme izinleri.")])]),a._v(" "),s("li",[s("p",[a._v("token_id")]),a._v(" "),s("p",[a._v("Kontrat ücretini ödemek için kullanılan jetonun bulunduğu ekosistemin ID.")])])])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-23"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-23"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"10"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MainCondition"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"token_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"wallet_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"0"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(' "contract MainCondition '),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n conditions "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n if(EcosysParam(`founder_account`)!=$key_id)\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n warning `Sorry"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" you dont have access to this action.`\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v('"'),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"address"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"0000-0000-0000-0000-0000"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n ...\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"contract-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"contract-name"}},[a._v("contract/{name}")])]),a._v(" "),s("p",[a._v("GET/ Belirtilen kontratın ilgili bilgilerini döndürür. Varsayılan olarak, kontrat mevcut ekosistemde sorgulanır.")]),a._v(" "),s("h4",{attrs:{id:"istek-27"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-27"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Kontrat adı.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/contract/mycontract")])]),a._v(" "),s("h4",{attrs:{id:"cevap-22"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-22"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Sanal makinede kontrat ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v('Ekosistem ID sahip kontrat adı "@1MainCondition".')])]),a._v(" "),s("li",[s("p",[a._v("state")]),a._v(" "),s("p",[a._v("Kontratın ait olduğu ekosistemin ID.")])]),a._v(" "),s("li",[s("p",[a._v("walletid")]),a._v(" "),s("p",[a._v("Kontrata bağlı hesap adresi.")])]),a._v(" "),s("li",[s("p",[a._v("tokenid")]),a._v(" "),s("p",[a._v("Kontrat ücretini ödemek için kullanılan token bulunduğu ekosistemin ID.")])]),a._v(" "),s("li",[s("p",[a._v("address")]),a._v(" "),s("p",[a._v("Cüzdan adresi "),s("code",[a._v("XXXX-...-XXXX")]),a._v(" sözleşmeye bağlı.")])]),a._v(" "),s("li",[s("p",[a._v("tableid")]),a._v(" "),s("p",[a._v("Kontrat tablosundaki kontratın giriş ID.")])]),a._v(" "),s("li",[s("p",[a._v("fields")]),a._v(" "),s("p",[a._v("Dizi, kontrat veri bölümündeki her parametrenin yapı bilgilerini içerir:")]),a._v(" "),s("ul",[s("li",[a._v("name")])]),a._v(" "),s("p",[a._v("Parametre adı.")]),a._v(" "),s("ul",[s("li",[a._v("type")])]),a._v(" "),s("p",[a._v("Parametre türü.")]),a._v(" "),s("ul",[s("li",[a._v("optional")])]),a._v(" "),s("p",[a._v("Parametre seçeneği, true isteğe bağlı parametre anlamına gelir, false zorunlu parametre anlamına gelir.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-24"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-24"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"fields"')]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"amount"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"int"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"optional"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"optional"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("150")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"@1mycontract"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tableid"')]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("10")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-17"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-17"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_CONTRACT")]),a._v(" "),s("h3",{attrs:{id:"sendtx"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[a._v("#")]),a._v(" sendTX")]),a._v(" "),s("p",[a._v("POST/ Parametredeki işlemi alın ve işlem kuyruğuna ekleyin. İstek başarıyla yürütülürse, işlem hash döndürülür. Hash ile bloktaki ilgili işlemi elde edebilirsiniz. Bir hata yanıtı oluştuğunda, hash, hata metin mesajına dahil edilir.")]),a._v(" "),s("h4",{attrs:{id:"istek-28"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-28"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("tx_key")]),a._v(" "),s("p",[a._v("İşlem içeriği. Bu parametre ile herhangi bir isim belirleyebilir ve birden fazla işlem almayı destekleyebilirsiniz.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/sendTx")])]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v("Headers:\nContent-Type: multipart/form-data\nParameters:\ntx1 - transaction 1\ntxN - transaction N\n")])])]),s("h4",{attrs:{id:"cevap-23"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-23"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hashes")]),a._v(" "),s("p",[a._v("Array of transaction hashes:")])]),a._v(" "),s("li",[s("p",[a._v("tx1")]),a._v(" "),s("p",[a._v("Hash of transaction 1.")])]),a._v(" "),s("li",[s("p",[a._v("txN")]),a._v(" "),s("p",[a._v("Hash of transaction N.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-25"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-25"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hashes"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tx1"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"67afbc435634....."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"txN"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"89ce4498eaf7....."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-18"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-18"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_LIMITTXSIZE,"),s("em",[a._v("E_BANNED")])]),a._v(" "),s("h3",{attrs:{id:"txstatus"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[a._v("#")]),a._v(" txstatus")]),a._v(" "),s("p",[a._v("POST/ Belirtilen işlem hashinin blok id ve hata mesajını döndürür. Blok id ve hata metin mesajının dönüş değeri boşsa, işlem bloğa dahil edilmemiştir.")]),a._v(" "),s("h4",{attrs:{id:"istek-29"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-29"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[a._v("data\nJSON list of transaction hashes."),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/txstatus/")])]),a._v(" "),s("h4",{attrs:{id:"cevap-24"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-24"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("results\nVeri sözlüğünde, anahtar olarak işlem hash'i, değer olarak işlem detayı.")]),a._v(" "),s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İşlem hash.")]),a._v(" "),s("ul",[s("li",[a._v("blockid")])]),a._v(" "),s("p",[a._v("İşlem başarılı bir şekilde yürütülürse blok id döndürülür; işlem gerçekleştirilemezse, blok id 0'dır.")]),a._v(" "),s("ul",[s("li",[a._v("result")])]),a._v(" "),s("p",[a._v("$result değişkeni aracılığıyla işlem sonucunu döndürün.")]),a._v(" "),s("ul",[s("li",[a._v("errmsg")])]),a._v(" "),s("p",[a._v("İşlem gerçekleştirilemezse, bir hata metin mesajı döndürülür.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-26"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-26"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"results"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash1"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"blockid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3123"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash2"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"blockid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3124"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-19"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-19"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_HASHWRONG, E_HASHNOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"txinfo-hash"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"txinfo-hash"}},[a._v("txinfo/{hash}")])]),a._v(" "),s("p",[a._v("GET/ Blok kimliği ve onay sayısı da dahil olmak üzere, işlemle ilişkili belirtilen hash bilgilerini döndürür. İsteğe bağlı parametreler belirtilirse, kontrat adı ve ilgili parametreler de döndürülebilir.")]),a._v(" "),s("h4",{attrs:{id:"istek-30"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-30"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İşlem hash.")])]),a._v(" "),s("li",[s("p",[a._v("[contractinfo]")]),a._v(" "),s("p",[a._v("Ayrıntılı kontrat parametresi tanımlayıcısı. İşlemle ilgili kontrat ayrıntılarını elde etmek için "),s("code",[a._v("contractinfo=1")]),a._v(" belirtin.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1")])]),a._v(" "),s("h4",{attrs:{id:"cevap-25"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-25"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("blockid")]),a._v(" "),s("p",[a._v('İşlemin blok id içerir. Değer "0" ise, bu hash ile işlem bulunamaz.')])]),a._v(" "),s("li",[s("p",[a._v("confirm")]),a._v(" "),s("p",[a._v("Blok blokidinin onay sayısı.")])]),a._v(" "),s("li",[s("p",[a._v("data")]),a._v(" "),s("p",[s("code",[a._v("contentinfo=1")]),a._v(" belirtilirse, sözleşme detayları bu parametreye döndürülecektir.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-27"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-27"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"blockid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"9"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"confirm"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("11")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"data"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"block"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"9"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"contract"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"@1NewContract"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"params"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ApplicationId"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"Conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"Value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t}"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-20"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-20"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_HASHWRONG")]),a._v(" "),s("h3",{attrs:{id:"txinfomultiple"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[a._v("#")]),a._v(" txinfoMultiple/")]),a._v(" "),s("p",[a._v("GET/ Bir işlemle ilgili olarak belirtilen hash bilgilerini döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-31"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-31"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İşlem hashlerinin listesi.")])]),a._v(" "),s("li",[s("p",[a._v("[contractinfo]")]),a._v(" "),s("p",[a._v("Ayrıntılı kontrat parametresi tanımlayıcısı. İşlemle ilgili kontrat ayrıntılarını almak için "),s("code",[a._v("contractinfo=1")]),a._v(" belirtin.")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/txinfoMultiple/")])]),a._v(" "),s("h4",{attrs:{id:"cevap-26"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-26"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("results")]),a._v(" "),s("p",[a._v("Veri sözlüğünde, anahtar olarak işlem hash'leri ve değer olarak işlem ayrıntıları.")]),a._v(" "),s("p",[a._v("doğramak")]),a._v(" "),s("p",[a._v("İşlem hash.")]),a._v(" "),s("p",[a._v("blockid")]),a._v(" "),s("p",[a._v('İşlemi içeren blok kimliği. Değer "0" ise, bu hash ile işlem bulunamaz.')]),a._v(" "),s("p",[a._v("onaylama")]),a._v(" "),s("p",[a._v("Blok blokidinin onay sayısı.")]),a._v(" "),s("p",[a._v("veri")]),a._v(" "),s("p",[s("code",[a._v("contentinfo=1")]),a._v(" belirtilirse, sözleşme detayları bu parametreye döndürülecektir.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-28"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-28"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"results"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash1"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"blockid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3123"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"confirm"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"5"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash2"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"blockid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3124"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"confirm"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-21"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-21"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_HASHWRONG")]),a._v(" "),s("h3",{attrs:{id:"page-validators-count-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"page-validators_count-name"}},[a._v("/page/validators_count/{name}")])]),a._v(" "),s("p",[a._v("GET/ Belirtilen sayfayı doğrulamak için gereken düğüm sayısını döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-32"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Ekosistem id sahip sayfa adı: "),s("code",[a._v("@ecosystem_id%%page_name%")]),a._v('. Örneğin, "@1main_page".')])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/page/validators_count/@1page_name")])]),a._v(" "),s("h4",{attrs:{id:"cevap-27"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-27"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("validate_count")]),a._v(" "),s("p",[a._v("Belirtilen sayfayı doğrulamak için gereken node sayısı")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-29"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-29"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),s("h4",{attrs:{id:"hatalı-cevap-22"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-22"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND, E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"content-menu-page-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"content-menu-page-name"}},[a._v("content/menu|page/{name}")])]),a._v(" "),s("p",[a._v("POST/ Şablon motoru işlemenin sonucu olan, belirtilen sayfa veya menü adının kodunun JSON nesne ağacını döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-33"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-33"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Sayfa veya menü adı.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/content/page/default")])]),a._v(" "),s("h4",{attrs:{id:"cevap-28"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-28"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("menu")]),a._v(" "),s("p",[a._v("İçerik/sayfa/… isteğinde bulunulurken sayfanın menü adı")])]),a._v(" "),s("li",[s("p",[a._v("menutree")]),a._v(" "),s("p",[a._v("İçerik/sayfa/... isteğinde bulunulurken sayfa menüsünün bir JSON nesne ağacı")])]),a._v(" "),s("li",[s("p",[a._v("title–head for the menu content/menu/…")]),a._v(" "),s("p",[a._v("İçerik/menü/...")])]),a._v(" "),s("li",[s("p",[a._v("tree")]),a._v(" "),s("p",[a._v("Bir sayfanın veya menünün JSON nesne ağacı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-30"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-30"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tree"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"......"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"children"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-23"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-23"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"content-source-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"content-source-name"}},[a._v("content/source/{name}")])]),a._v(" "),s("p",[a._v('POST/ Belirtilen sayfa adı kodunun JSON nesne ağacını döndürür. Herhangi bir işlevi yürütmez veya herhangi bir veri almaz. Döndürülen JSON nesne ağacı, sayfa şablonuna karşılık gelir ve görsel sayfa tasarımcısında kullanılabilir. Sayfa bulunamazsa, 404 hatası döndürülür. İstek """""""')]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Sayfa adı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-29"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-29"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/content/source/default")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("tree")]),a._v(" "),s("p",[a._v("Sayfanın bir JSON nesne ağacı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-31"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-31"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tree"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"......"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"children"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-24"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-24"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND, E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"content-hash-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"content-hash-name"}},[a._v("content/hash/{name}")])]),a._v(" "),s("p",[a._v("POST/ Belirtilen sayfa adının SHA256 hashi veya sayfa bulunamazsa 404 hatasını döndürür.")]),a._v(" "),s("p",[a._v('Bu istek için oturum açma yetkisi gerekli değildir. Diğer nodelara istekte bulunurken doğru hash almak için ekosistem, keyID, roleID, isMobile parametrelerini de iletmelisiniz. Diğer ekosistemlerden sayfa almak için, ekosistem idnin sayfa adının önüne eklenmesi gerekir. Örneğin: "@2sayfam".')]),a._v(" "),s("h4",{attrs:{id:"istek-34"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-34"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Ekosistem id sahip sayfa adı.")])]),a._v(" "),s("li",[s("p",[a._v("ecosystem")]),a._v(" "),s("p",[a._v("Ekosistem ID.")])]),a._v(" "),s("li",[s("p",[a._v("keyID")]),a._v(" "),s("p",[a._v("Hesap adresi.")])]),a._v(" "),s("li",[s("p",[a._v("roleID")]),a._v(" "),s("p",[a._v("Rol ID.")])]),a._v(" "),s("li",[s("p",[a._v("isMobile")]),a._v(" "),s("p",[a._v("Mobil platformun parametre tanımlayıcısı.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/content/hash/default")])]),a._v(" "),s("h4",{attrs:{id:"cevap-30"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-30"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hex")]),a._v(" "),s("p",[a._v("Hexadecimal hash.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-32"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n}\n')])])]),s("h4",{attrs:{id:"hatalı-cevap-25"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-25"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")]),a._v(" "),s("h3",{attrs:{id:"icerik"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#icerik"}},[a._v("#")]),a._v(" İçerik")]),a._v(" "),s("p",[a._v('POST/ Şablon parametresinden sayfa kodunu döndüren JSON nesnelerinin sayısı. İsteğe bağlı parametre kaynağı "true" veya "1" olarak belirtilirse, JSON nesne ağacı alınan herhangi bir işlevi ve veriyi yürütmez. JSON nesne ağacı, görsel sayfa tasarımcısında kullanılabilir.')]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-35"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-35"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("template")]),a._v(" "),s("p",[a._v("Sayfa kodu.")])]),a._v(" "),s("li",[s("p",[a._v("[source]")]),a._v(" "),s("p",[s("code",[a._v("true")]),a._v(" veya "),s("code",[a._v("1")]),a._v(" olarak belirtilirse, JSON nesne ağacı, alınan herhangi bir işlevi ve veriyi yürütmez.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/content")])]),a._v(" "),s("h4",{attrs:{id:"cevap-31"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-31"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("tree")]),a._v(" "),s("p",[a._v("JSON nesne ağacı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-33"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-33"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tree"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"......"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"children"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-26"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-26"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND, E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"maxblockid"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[a._v("#")]),a._v(" maxblockid")]),a._v(" "),s("p",[a._v("GET/ Geçerli nodedaki en yüksek bloğun idsini döndürür.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-36"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-36"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/maxblockid")])]),a._v(" "),s("h4",{attrs:{id:"cevap-32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-32"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("max_block_id")]),a._v(" "),s("p",[a._v("Geçerli nodedaki en yüksek bloğun id.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-34"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-34"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"max_block_id"')]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("341")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-27"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-27"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"block-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"block-id"}},[a._v("block/{id}")])]),a._v(" "),s("p",[a._v("GET/ Belirtilen ID ile bloğun ilgili bilgilerini döndürür.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-37"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-37"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[a._v("id\nBlock ID.")])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/block/32")])]),a._v(" "),s("h4",{attrs:{id:"cevap-33"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-33"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("Hash of the block.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("Bloğu imzalayan hesabın adresi.")])]),a._v(" "),s("li",[s("p",[a._v("time")]),a._v(" "),s("p",[a._v("Block generation timestamp.")])]),a._v(" "),s("li",[s("p",[a._v("tx_count")]),a._v(" "),s("p",[a._v("Bloktaki toplam işlem sayısı.")])]),a._v(" "),s("li",[s("p",[a._v("rollbacks_hash")]),a._v(" "),s("p",[a._v("Hash for block rollback.")])]),a._v(" "),s("li",[s("p",[a._v("node_position")]),a._v(" "),s("p",[a._v("Honor node listesinde bloğun konumu.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-example-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-5"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"key_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("-118432674655542910")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"time"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1551145365")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tx_count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"rollbacks_hash"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"node_position"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-28"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-28"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"avatar-ecosystem-member"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"avatar-ecosystem-member"}},[a._v("avatar/{ecosystem}/{member}")])]),a._v(" "),s("p",[a._v("GET/ Üye tablosundaki kullanıcının avatarını döndürür (oturum açmadan kullanabilirsiniz).")]),a._v(" "),s("h4",{attrs:{id:"istek-38"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-38"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("ecosystem")]),a._v(" "),s("p",[a._v("Ekosistem ID.")])]),a._v(" "),s("li",[s("p",[a._v("member")]),a._v(" "),s("p",[a._v("Kullanıcının hesap adresi.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/avatar/1/-118432674655542910")])]),a._v(" "),s("h4",{attrs:{id:"cevap-34"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-34"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("p",[a._v("İçerik Tipi istek başlığının türü resimdir ve resim verileri yanıt gövdesinde döndürülür.")]),a._v(" "),s("h4",{attrs:{id:"cevap-example-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-6"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v("200 (OK)\nContent-Type: image/png\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-29"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-29"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"config-centrifugo"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"config-centrifugo"}},[a._v("config/centrifugo")])]),a._v(" "),s("p",[a._v("GET/ Centrifugo ana bilgisayar adresini ve portunu döndürür.\nBu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-39"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-39"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/config/centrifugo")])]),a._v(" "),s("h4",{attrs:{id:"cevap-35"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-35"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("p",[a._v("Yanıt biçimi "),s("code",[a._v("http://adres:port")]),a._v(" şeklindedir, örneğin: "),s("code",[a._v("http://127.0.0.1:8100")]),a._v(".")]),a._v(" "),s("h4",{attrs:{id:"hatalı-cevap-30"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-30"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"updnotificator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[a._v("#")]),a._v(" updnotificator")]),a._v(" "),s("p",[a._v("POST/ Henüz gönderilmemiş tüm mesajları centrifugo bildirim hizmetine gönderin. Yalnızca belirtilen ekosistemler ve üyeler için mesaj gönderin.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-40"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-40"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Üye hesap adresi.")])]),a._v(" "),s("li",[s("p",[a._v("ecosystem")]),a._v(" "),s("p",[a._v("Ekosistem ID.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/updnotificator")])]),a._v(" "),s("h4",{attrs:{id:"cevap-example-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-7"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("true")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{498:function(a,t,s){"use strict";s.r(t);var e=s(51),r=Object(e.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"restful-api-v2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[a._v("#")]),a._v(" RESTful API v2")]),a._v(" "),s("p",[a._v("Kimlik doğrulama, ekosistem veri alımı, hata işleme, veritabanı tablosu işlemleri, sayfalar ve sözleşmelerin uygulanması dahil olmak üzere Weaver tarafından sağlanan tüm işlevler, IBAX'in REST API'si kullanılarak kullanılabilir.")]),a._v(" "),s("p",[a._v("REST API ile geliştiriciler, Weaver kullanmadan tüm platform işlevlerine erişebilir.")]),a._v(" "),s("p",[a._v('API komut çağrıları, "/api/v2/command/[param]" adresiyle yürütülür; burada "komut" komut adıdır ve "param" ek bir parametredir. İstek parametreleri \'Content-Type: x-www-form-urlencoded\' formatında gönderilmelidir. Sunucu yanıtı sonucu JSON biçimindedir.')]),a._v(" "),s("ul",[s("li",[s("p",[s("a",{attrs:{href:"#Hata-y%C3%B6netimi"}},[a._v("Hata yönetimi")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#Hata-listesi"}},[a._v("Hata listesi")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#Kimlik-do%C4%9Frulama"}},[a._v("Kimlik doğrulama")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#getuid"}},[a._v("getuid")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#Giri%C5%9F"}},[a._v("Giriş")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#API'ler-CLB-taraf%C4%B1ndan-kullan%C4%B1lam%C4%B1yor"}},[a._v("API'ler CLB tarafından kullanılamıyor")])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#Servis-komutlar%C4%B1"}},[a._v("Servis komutları")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#version"}},[a._v("Versiyon")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#Veri-talebi-i%C5%9Flevleri"}},[a._v("Veri talebi işlevleri")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#balance"}},[a._v("Balans")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#bloklar"}},[a._v("Bloklar")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#detayl%C4%B1-bloklar"}},[a._v("Detaylı bloklar")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#data-table-id-column-hash"}},[a._v("/data/{table}/{id}/{column}/{hash}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#keyinfo"}},[a._v("keyinfo")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#Metrikleri-al"}},[a._v("Metrikleri al")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#keys"}},[a._v("keys")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#blocks"}},[a._v("blocks")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#%C4%B0%C5%9Flemler"}},[a._v("işlemler")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#Ekosistemler"}},[a._v("ekosistemler")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#fullnodes"}},[a._v("fullnodes")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#ecosystem"}},[a._v("Ekosistem")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#ecosystemname"}},[a._v("ekosistemadı")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#ecosystems"}},[a._v("ekosistemler")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#appparams-appid"}},[a._v("appparams/{appID}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#appparam-appid-name"}},[a._v("appparam/{appid}/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#ecosystemparams"}},[a._v("ecosystemparams")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#ecosystemparam-name"}},[a._v("ecosystemparam/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#tables-limit-offset"}},[a._v("tables/[?limit=…&offset=…]")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#table-name"}},[a._v("table/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#list-name-limit-offset-colums"}},[a._v("list/{name}[?limit=…&offset=…&columns=…]")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#sections-limit-offset-lang"}},[a._v("sections[?limit=…&offset=…&lang=]")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#row-name-id-colums"}},[a._v("row/{name}/{id}[?columns=]")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#systemparams"}},[a._v("systemparams")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#history-name-id"}},[a._v("history/{name}/{id}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#interface-page-menu-block-name"}},[a._v("interface/{page|menu|block}/{name}")])])])]),a._v(" "),s("li",[s("p",[s("a",{attrs:{href:"#contract-functions"}},[a._v("Contract functions")])]),a._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#contracts-limit-offset"}},[a._v("contracts[?limit=…&offset=…]")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#contract-name"}},[a._v("contract/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#sendtx"}},[a._v("sendTX")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#txstatus"}},[a._v("txstatus")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#txinfo-hash"}},[a._v("txinfo/{hash}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#txinfomultiple"}},[a._v("txinfoMultiple/")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#page-validators_count-name"}},[a._v("/page/validators_count/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#content-menu-page-name"}},[a._v("content/menu|page/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#content-source-name"}},[a._v("content/source/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#content-hash-name"}},[a._v("content/hash/{name}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#content"}},[a._v("content")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#maxblockid"}},[a._v("maxblockid")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#block-id"}},[a._v("block/{id}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#avatar-ecosystem-member"}},[a._v("avatar/{ecosystem}/{member}")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#config-centrifugo"}},[a._v("config/centrifugo")])]),a._v(" "),s("li",[s("a",{attrs:{href:"#updnotificator"}},[a._v("updnotificator")])])])])]),a._v(" "),s("h2",{attrs:{id:"hata-yonetimi"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hata-yonetimi"}},[a._v("#")]),a._v(" Hata yönetimi")]),a._v(" "),s("p",[a._v('İstek başarıyla yürütülürse, "200" durum kodu döndürülür. Bir hata oluşursa, hata durumuna ek olarak aşağıdaki alanlara sahip bir JSON nesnesi döndürülür:')]),a._v(" "),s("ul",[s("li",[a._v("hata")])]),a._v(" "),s("p",[a._v("Hata tanımlayıcısı.")]),a._v(" "),s("ul",[s("li",[a._v("mesaj")])]),a._v(" "),s("p",[a._v("Bir hata durumunda metin döndürülür.")]),a._v(" "),s("ul",[s("li",[a._v("parametreler")])]),a._v(" "),s("p",[a._v("Bir hata durumunda döndürülen metinde bulunabilecek hatanın ek parametreleri.")]),a._v(" "),s("blockquote",[s("p",[a._v("Yanıt örneği")])]),a._v(" "),s("p",[a._v("400 (Kötü istek)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"err"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"E_INVALIDWALLET"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"msg"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"Wallet 1234-5678-9012-3444-3488 is not valid"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"params"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1234-5678-9012-3444-3488"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"hata-listesi"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hata-listesi"}},[a._v("#")]),a._v(" Hata listesi")]),a._v(" "),s("blockquote",[s("p",[a._v("E_CONTRACT")])]),a._v(" "),s("p",[s("code",[a._v("%s")]),a._v(" kontratı mevcut değil")]),a._v(" "),s("blockquote",[s("p",[a._v("E_DBNIL")])]),a._v(" "),s("p",[a._v("Boş database")]),a._v(" "),s("blockquote",[s("p",[a._v("E_DELETEDKEY")])]),a._v(" "),s("p",[a._v("Hesap adresi askıya alındı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_ECOSYSTEM")])]),a._v(" "),s("p",[a._v('Ekosistem "%d" mevcut değil')]),a._v(" "),s("blockquote",[s("p",[a._v("E_EMPTYPUBLIC")])]),a._v(" "),s("p",[a._v("Hesap için geçersiz public key")]),a._v(" "),s("blockquote",[s("p",[a._v("E_KEYNOTFOUND")])]),a._v(" "),s("p",[a._v("Hesap adresi bulunamadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_HASHWRONG")])]),a._v(" "),s("p",[a._v("Yanlış hash")]),a._v(" "),s("blockquote",[s("p",[a._v("E_HASHNOTFOUND")])]),a._v(" "),s("p",[a._v("Hash bulunamadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_HEAVYPAGE")])]),a._v(" "),s("p",[a._v("Çok fazla sayfa yüklendi")]),a._v(" "),s("blockquote",[s("p",[a._v("E_INVALIDWALLET")])]),a._v(" "),s("p",[a._v('Geçersiz cüzdan adresi "%s"')]),a._v(" "),s("blockquote",[s("p",[a._v("E_LIMITTXSIZE")])]),a._v(" "),s("p",[a._v("Limit dışı bir işlemin boyutu")]),a._v(" "),s("blockquote",[s("p",[a._v("E_NOTFOUND")])]),a._v(" "),s("p",[a._v("Sayfa veya menü içeriği bulunamadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_PARAMNOTFOUND")])]),a._v(" "),s("p",[a._v("Parametre bulunamadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_PERMISSION")])]),a._v(" "),s("p",[a._v("İzin yok")]),a._v(" "),s("blockquote",[s("p",[a._v("E_QUERY")])]),a._v(" "),s("p",[a._v("Veritabanı sorgu hatası")]),a._v(" "),s("blockquote",[s("p",[a._v("E_RECOVERED")])]),a._v(" "),s("p",[a._v("API'de panik hatası var.\nPanik hatası varsa bir hata döndürün.\nBulunması ve düzeltilmesi gereken bir hatayla karşılaştığınız anlamına gelir.")]),a._v(" "),s("blockquote",[s("p",[a._v("E_SERVER")])]),a._v(" "),s("p",[a._v("Server hatası.\ngolang library işlevinde bir hata varsa, geri döner. Mesaj alanı, bir hata durumunda döndürülen metni içerir.")]),a._v(" "),s("p",[a._v("Herhangi bir komuta yanıt olarak bir "),s("strong",[a._v("E_SERVER")]),a._v(" hatası oluşabilir. Hatalı giriş parametreleri nedeniyle oluşursa, bunu ilgili bir hatayla değiştirebilirsiniz. Başka bir durumda, bu hata, daha ayrıntılı bir araştırma raporu gerektiren geçersiz işlem veya yanlış sistem yapılandırması bildirir.")]),a._v(" "),s("blockquote",[s("p",[a._v("E_SIGNATURE")])]),a._v(" "),s("p",[a._v("Yanlış imza")]),a._v(" "),s("blockquote",[s("p",[a._v("E_STATELOGIN")])]),a._v(" "),s("p",[s("code",[a._v("%s")]),a._v(" ekosisteminin bir üyesi değil")]),a._v(" "),s("blockquote",[s("p",[a._v("E_TABLENOTFOUND")])]),a._v(" "),s("p",[s("code",[a._v("%s")]),a._v(" tablosu bulunamadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_TOKENEXPIRED")])]),a._v(" "),s("p",[s("code",[a._v("%s")]),a._v(" oturumunun süresi doldu")]),a._v(" "),s("blockquote",[s("p",[a._v("E_UNAUTHORIZED")])]),a._v(" "),s("p",[a._v("Yetkisiz.")]),a._v(" "),s("p",[a._v("Giriş yapılmadıysa veya oturumun süresi dolduysa, "),s("code",[a._v("getuid, login")]),a._v(" dışında herhangi bir komut\nE_UNAUTHORIZED error.")]),a._v(" "),s("blockquote",[s("p",[a._v("E_UNKNOWNUID\nUnknown UID")])]),a._v(" "),s("blockquote",[s("p",[a._v("E_UPDATING")])]),a._v(" "),s("p",[a._v("Düğüm blok zincirini güncelliyor")]),a._v(" "),s("blockquote",[s("p",[a._v("E_STOPPING")])]),a._v(" "),s("p",[a._v("Düğüm Durdu")]),a._v(" "),s("blockquote",[s("p",[a._v("E_NOTIMPLEMENTED")])]),a._v(" "),s("p",[a._v("Henüz uygulanmadı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_BANNED")])]),a._v(" "),s("p",[a._v("Hesap adresi "),s("code",[a._v("%s")]),a._v(" içinde yasaklandı")]),a._v(" "),s("blockquote",[s("p",[a._v("E_CHECKROLE")])]),a._v(" "),s("p",[a._v("Erişim reddedildi")]),a._v(" "),s("h2",{attrs:{id:"api-ler-clb-tarafından-kullanılamıyor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#api-ler-clb-tarafından-kullanılamıyor"}},[a._v("#")]),a._v(" API'ler CLB tarafından kullanılamıyor")]),a._v(" "),s("p",[a._v("CLB düğümü için arabirim isteği kullanılamıyor:")]),a._v(" "),s("ul",[s("li",[a._v("metrics")]),a._v(" "),s("li",[a._v("txinfo")]),a._v(" "),s("li",[a._v("txinfoMultiple")]),a._v(" "),s("li",[a._v("appparam")]),a._v(" "),s("li",[a._v("appparams")]),a._v(" "),s("li",[a._v("appcontent")]),a._v(" "),s("li",[a._v("history")]),a._v(" "),s("li",[a._v("balance")]),a._v(" "),s("li",[a._v("block")]),a._v(" "),s("li",[a._v("maxblockid")]),a._v(" "),s("li",[a._v("blocks")]),a._v(" "),s("li",[a._v("detailed blocks")]),a._v(" "),s("li",[a._v("ecosystemparams")]),a._v(" "),s("li",[a._v("systemparams")]),a._v(" "),s("li",[a._v("ecosystems")]),a._v(" "),s("li",[a._v("ecosystemparam")]),a._v(" "),s("li",[a._v("ecosystemname")]),a._v(" "),s("li",[a._v("walletHistory")]),a._v(" "),s("li",[a._v("tx_record")])]),a._v(" "),s("h2",{attrs:{id:"kimlik-dogrulama"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#kimlik-dogrulama"}},[a._v("#")]),a._v(" Kimlik doğrulama")]),a._v(" "),s("p",[a._v("Kimlik doğrulama için "),s("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#https://jwt.io/"}},[a._v("JWT token")]),a._v(" kullanılır. JWT belirtecini aldıktan sonra, her istek başlığına yerleştirilmelidir: "),s("code",[a._v("Yetkilendirme: Taşıyıcı TOKEN_HERE")]),a._v(".")],1),a._v(" "),s("h3",{attrs:{id:"getuid"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[a._v("#")]),a._v(" getuid")]),a._v(" "),s("p",[a._v("GET/ benzersiz bir değer döndürür, özel anahtarla imzalar ve ardından "),s("a",{attrs:{href:"#login"}},[a._v("login")]),a._v(" komutunu kullanarak sunucuya geri gönderir.")]),a._v(" "),s("p",[a._v("Geçici bir JWT belirteci oluşturmak için, "),s("strong",[a._v("login")]),a._v(" çağrılırken belirteci "),s("strong",[a._v("Yetkilendirme")]),a._v("'ye iletmeniz gerekir.")]),a._v(" "),s("h4",{attrs:{id:"istek"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/getuid")])]),a._v(" "),s("h4",{attrs:{id:"cevap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[a._v("uid")])]),a._v(" "),s("p",[a._v("İmza numaraları.")]),a._v(" "),s("ul",[s("li",[a._v("token")])]),a._v(" "),s("p",[a._v("Oturum açma sırasında geçici belirteç iletildi.")]),a._v(" "),s("p",[a._v("Geçici bir tokenın ömrü 5 saniyedir.")]),a._v(" "),s("ul",[s("li",[a._v("network_id")])]),a._v(" "),s("p",[a._v("Sunucu identifier.")]),a._v(" "),s("p",[a._v("Yetkilendirme gerekli değilse, aşağıdaki bilgiler iade edilecektir:")]),a._v(" "),s("ul",[s("li",[a._v("expire")])]),a._v(" "),s("p",[a._v("Son kullanma süresi.")]),a._v(" "),s("ul",[s("li",[a._v("ecosystem")])]),a._v(" "),s("p",[a._v("Ecosystem ID.")]),a._v(" "),s("ul",[s("li",[a._v("key_id")])]),a._v(" "),s("p",[a._v("Hesap adresi.")]),a._v(" "),s("ul",[s("li",[a._v("address")])]),a._v(" "),s("p",[a._v("Cüzdan adresi "),s("code",[a._v("XXXX-XXXX-.....-XXXX")]),a._v(".")]),a._v(" "),s("h4",{attrs:{id:"cevap-example"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"uid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"4999317241855959593"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"token"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9........I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"network_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"4717243765193692211"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"giris"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#giris"}},[a._v("#")]),a._v(" Giriş")]),a._v(" "),s("p",[a._v("POST/ Kullanıcı kimliğinin doğrulanması.")]),a._v(" "),s("p",[a._v("Benzersiz bir değer almak ve imzalamak için önce "),s("strong",[a._v("getuid")]),a._v(" komutu çağrılmalıdır. Getuid'in geçici JWT belirtecinin istek başlığında iletilmesi gerekir.")]),a._v(" "),s("p",[a._v("İstek başarılı olursa yanıtta alınan belirteç "),s("strong",[a._v("Yetkilendirme")]),a._v("'ye dahil edilir.")]),a._v(" "),s("h4",{attrs:{id:"istek-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-2"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/login")])]),a._v(" "),s("ul",[s("li",[a._v("[ecosystem]")])]),a._v(" "),s("p",[a._v("Ecosystem ID.")]),a._v(" "),s("p",[a._v("Belirtilmezse, varsayılan olarak ilk ekosistemin kimliği.")]),a._v(" "),s("ul",[s("li",[a._v("[expire]")])]),a._v(" "),s("p",[a._v("JWT tokenın ömrü, saniye cinsinden varsayılan olarak 28800.")]),a._v(" "),s("ul",[s("li",[a._v("[pubkey]")])]),a._v(" "),s("p",[a._v("Hesabın onaltılık sistemde public keyi.")]),a._v(" "),s("ul",[s("li",[a._v("[key_id]")])]),a._v(" "),s("p",[a._v("Hesap adresi "),s("code",[a._v("XXXX-...-XXXX")]),a._v(".")]),a._v(" "),s("p",[a._v("Public key blok zincirinde zaten depolanmışsa bu parametreyi kullanın. pubkey parametresi ile aynı anda kullanılamaz.")]),a._v(" "),s("ul",[s("li",[a._v("signature")])]),a._v(" "),s("p",[a._v("Getuid aracılığıyla alınan UID imzası.")]),a._v(" "),s("h4",{attrs:{id:"cevap-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-2"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("token")]),a._v(" "),s("p",[a._v("JWT token.")])]),a._v(" "),s("li",[s("p",[a._v("ecosystem")]),a._v(" "),s("p",[a._v("Ecosystem ID.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("Hesap adres ID")])]),a._v(" "),s("li",[s("p",[a._v("address")]),a._v(" "),s("p",[a._v("Cüzdan adresi "),s("code",[a._v("XXXX-XXXX-.....-XXXX")]),a._v(".")])]),a._v(" "),s("li",[s("p",[a._v("notify_key")]),a._v(" "),s("p",[a._v("Bildirim ID.")])]),a._v(" "),s("li",[s("p",[a._v("isnode")]),a._v(" "),s("p",[a._v("Hesap adresinin düğümün sahibi olup olmadığı. Değer: "),s("code",[a._v("true, false")]),a._v(".")])]),a._v(" "),s("li",[s("p",[a._v("isowner")]),a._v(" "),s("p",[a._v("Hesap adresinin ekosistemin yaratıcısı olup olmadığı. Değer: "),s("code",[a._v("doğru, yanlış")]),a._v(".")])]),a._v(" "),s("li",[s("p",[a._v("obs")]),a._v(" "),s("p",[a._v("Kayıtlı ekosistemin CLB olup olmadığı. Değer: "),s("code",[a._v("doğru, yanlış")]),a._v(".")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-example-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-2"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"token"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9........AHDRDqDFBoWEHw-9lfIcLobehvNEeIYBB4BIb5J72aQ"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ecosystem"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"key_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"54321"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"address"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"4321-....-2223"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-2"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")]),a._v(" "),s("h2",{attrs:{id:"servis-komutları"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#servis-komutları"}},[a._v("#")]),a._v(" Servis komutları")]),a._v(" "),s("h3",{attrs:{id:"versiyon"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#versiyon"}},[a._v("#")]),a._v(" Versiyon")]),a._v(" "),s("p",[a._v("GET/ Geçerli sunucunun sürümünü döndürür.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-3"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/version")])]),a._v(" "),s("h4",{attrs:{id:"cevap-example-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-3"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('200 (OK)\nContent-Type: application/json\n"1.2.6"\n')])])]),s("h2",{attrs:{id:"veri-talebi-islevleri"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#veri-talebi-islevleri"}},[a._v("#")]),a._v(" Veri talebi işlevleri")]),a._v(" "),s("h3",{attrs:{id:"balans"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#balans"}},[a._v("#")]),a._v(" Balans")]),a._v(" "),s("p",[a._v("GET/ Mevcut ekosistemdeki hesap adresinin bakiyesini isteyin.")]),a._v(" "),s("h4",{attrs:{id:"istek-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-4"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/balance/{wallet}")])]),a._v(" "),s("ul",[s("li",[a._v("wallet")])]),a._v(" "),s("p",[a._v("Adres tanımlayıcı. Herhangi bir biçimde "),s("code",[a._v("int64, uint64, XXXX-...-XXXX")]),a._v(" belirtebilirsiniz. Bu adres, kullanıcının şu anda oturum açtığı ekosistemde sorgulanacaktır.")]),a._v(" "),s("h4",{attrs:{id:"cevap-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-3"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("amount")]),a._v(" "),s("p",[a._v("En küçük birimin hesap bakiyesi.")])]),a._v(" "),s("li",[s("p",[a._v("money")]),a._v(" "),s("p",[a._v("Hesap bakiyesi.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-example-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-4"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"amount"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"877450000000000"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"money"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"877.45"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-3"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER, E_INVALIDWALLET")]),a._v(" "),s("h3",{attrs:{id:"bloklar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bloklar"}},[a._v("#")]),a._v(" Bloklar")]),a._v(" "),s("p",[a._v("GET/, her bloktaki işlemlerle ilgili ek bilgileri içeren bir liste döndürür.\nBu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-5"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/blocks")])]),a._v(" "),s("ul",[s("li",[a._v("block_id")])]),a._v(" "),s("p",[a._v("Sorgulanacak başlangıç ​​bloğunun yüksekliği.")]),a._v(" "),s("ul",[s("li",[a._v("count")])]),a._v(" "),s("p",[a._v("blok sayısı")]),a._v(" "),s("h4",{attrs:{id:"cevap-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-4"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("Block Height")]),a._v(" "),s("p",[a._v("Bloktaki işlemlerin listesi ve her işlemin ek bilgileri:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İşlem hash.")])]),a._v(" "),s("li",[s("p",[a._v("contract_name")]),a._v(" "),s("p",[a._v("Kontrat Adı.")])]),a._v(" "),s("li",[s("p",[a._v("params")]),a._v(" "),s("p",[a._v("Bir dizi sözleşme parametresi.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("İlk blok için, işlemi imzalayan ilk bloğun hesap adresi.\nDiğer tüm bloklar için, işlemi imzalayan hesabın adresi.")])])])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('200 (OK)\nContent-Type: application/json\n{"1":\n [{"hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),s("h4",{attrs:{id:"hatalı-cevap-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-4"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER, E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"detaylı-bloklar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#detaylı-bloklar"}},[a._v("#")]),a._v(" Detaylı bloklar")]),a._v(" "),s("p",[a._v("GET/, her bloktaki işlemlerle ilgili ayrıntılı ek bilgileri içeren bir liste döndürür.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-6"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/detailed_blocks")])]),a._v(" "),s("h4",{attrs:{id:"cevap-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-5"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[a._v("Blok Height\n"),s("ul",[s("li",[s("p",[a._v("Başlık bloğu")]),a._v(" "),s("p",[a._v("Blok başlığı aşağıdaki alanları içerir:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("block_id")]),a._v(" "),s("p",[a._v("Block height.")])]),a._v(" "),s("li",[s("p",[a._v("time")]),a._v(" "),s("p",[a._v("Blok oluşturma timestamp.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("Bloğu imzalayan hesabın adresi.")])]),a._v(" "),s("li",[s("p",[a._v("node_position")]),a._v(" "),s("p",[a._v("Honor node listesinde bloğu oluşturan node konumu.")])]),a._v(" "),s("li",[s("p",[a._v("version")]),a._v(" "),s("p",[a._v("Blok yapısı sürümü.")])])])]),a._v(" "),s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("Blok hash.")])]),a._v(" "),s("li",[s("p",[a._v("node_position")]),a._v(" "),s("p",[a._v("Honor node listesinde bloğu oluşturan node konumu.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("Bloğu imzalayan hesabın adresi.")])]),a._v(" "),s("li",[s("p",[a._v("time")]),a._v(" "),s("p",[a._v("Blok oluşturma timestamp.")])]),a._v(" "),s("li",[s("p",[a._v("tx_count")]),a._v(" "),s("p",[a._v("Bloktaki işlem sayısı.")])]),a._v(" "),s("li",[s("p",[a._v("rollback_hash")]),a._v(" "),s("p",[a._v("Block rollback hash.")])]),a._v(" "),s("li",[s("p",[a._v("mrkl_root")]),a._v(" "),s("p",[a._v("Blok işlemlerinin Merkel ağacı.")])]),a._v(" "),s("li",[s("p",[a._v("bin_data")]),a._v(" "),s("p",[a._v("Blok başlığının, bloktaki tüm işlemlerin, önceki blok hashinin ve bloğu oluşturan düğümün özel anahtarının serileştirilmesi.")])]),a._v(" "),s("li",[s("p",[a._v("sys_update")]),a._v(" "),s("p",[a._v("Blok, sistem parametrelerini güncellemek için işlemler içeriyor mu?")])]),a._v(" "),s("li",[s("p",[a._v("Transaction")]),a._v(" "),s("p",[a._v("Bloktaki işlemlerin listesi ve her işlemin ek bilgileri:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İşlem hash.")])]),a._v(" "),s("li",[s("p",[a._v("contract_name")]),a._v(" "),s("p",[a._v("Kontrat adı.")])]),a._v(" "),s("li",[s("p",[a._v("params")]),a._v(" "),s("p",[a._v("Kontrat parametreleri.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("İşlemi imzalayan hesabın adresi.")])]),a._v(" "),s("li",[s("p",[a._v("time")]),a._v(" "),s("p",[a._v("İşlem oluşturma timestamp.")])]),a._v(" "),s("li",[s("p",[a._v("type")]),a._v(" "),s("p",[a._v("İşlem tipi.")])])])])])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-2"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"header"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"block_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"time"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1551069320")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ecosystem_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"key_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("-118432674655542910")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"node_position"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"version"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ecosystem_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"node_position"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"key_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("-118432674655542910")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"time"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1551069320")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tx_count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"rollbacks_hash"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"mrkl_root"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"bin_data"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token null keyword"}},[a._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"sys_update"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"gen_block"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"stop_count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"transactions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"contract_name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"params"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token null keyword"}},[a._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"key_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"time"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-5"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER, E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"data-table-id-column-hash"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"data-table-id-column-hash"}},[a._v("/data/{table}/{id}/{column}/{hash}")])]),a._v(" "),s("p",[a._v("GET/ Belirtilen hash, belirtilen tablo, alan ve kayıttaki verilerle eşleşirse, bu istek verileri döndürür. Aksi takdirde, bir hata döndürülür.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-7"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /data/{table}/{id}/{column}/{hash}")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("table")]),a._v(" "),s("p",[a._v("Tablo ismi.")])]),a._v(" "),s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Kayıt ID.")])]),a._v(" "),s("li",[s("p",[a._v("column")]),a._v(" "),s("p",[a._v("Alan adı.")])]),a._v(" "),s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İstenen verilerin hash'i.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-6"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("p",[a._v("Ikili veri")]),a._v(" "),s("h3",{attrs:{id:"keyinfo"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[a._v("#")]),a._v(" keyinfo")]),a._v(" "),s("p",[a._v("GET/, belirtilen adrese kayıtlı roller de dahil olmak üzere bir ekosistem listesi döndürür.\nBu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-8"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/keyinfo/{key_id}")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("Adres tanımlayıcı, herhangi bir biçimde "),s("code",[a._v("int64, uint64, XXXX-...-XXXX")]),a._v(" şeklinde belirtebilirsiniz.")]),a._v(" "),s("p",[a._v("Tüm ekosistemlerde sorgulanan istek.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-7"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("ecosystem")]),a._v(" "),s("p",[a._v("Ecosystem ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("ekosistem adı.")])]),a._v(" "),s("li",[s("p",[a._v("roles")]),a._v(" "),s("p",[a._v("Kimlik ve ad alanlarına sahip roller listesi.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-3"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ecosystem"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"platform ecosystem"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"roles"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"Admin"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"Developer"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-6"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER, E_INVALIDWALLET")]),a._v(" "),s("h2",{attrs:{id:"metrikleri-al"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#metrikleri-al"}},[a._v("#")]),a._v(" Metrikleri al")]),a._v(" "),s("h3",{attrs:{id:"keys"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#keys"}},[a._v("#")]),a._v(" keys")]),a._v(" "),s("p",[a._v("GET/ Hesap adreslerinin sayısını verir.")]),a._v(" "),s("h4",{attrs:{id:"istek-9"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-9"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/metrics/keys")])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-4"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("28")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"blocks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[a._v("#")]),a._v(" blocks")]),a._v(" "),s("p",[a._v("GET/ Blok sayısını verir.")]),a._v(" "),s("h4",{attrs:{id:"istek-10"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-10"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/metrics/blocks")])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-5"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("28")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"islemler"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#islemler"}},[a._v("#")]),a._v(" İşlemler")]),a._v(" "),s("p",[a._v("GET/ Toplam işlem sayısını verir.")]),a._v(" "),s("h4",{attrs:{id:"istek-11"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-11"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/metrics/transactions")])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-6"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("28")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"ekosistemler"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ekosistemler"}},[a._v("#")]),a._v(" Ekosistemler")]),a._v(" "),s("p",[a._v("GET/ Ekosistemlerin sayısını verir.")]),a._v(" "),s("h4",{attrs:{id:"istek-12"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-12"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/metrics/ecosystems")])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-7"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("28")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"fullnodes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#fullnodes"}},[a._v("#")]),a._v(" fullnodes")]),a._v(" "),s("p",[a._v("GET/, honor node sayısını döndürür.")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/metrics/fullnodes")])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-8"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("28")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h2",{attrs:{id:"ekosistem"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ekosistem"}},[a._v("#")]),a._v(" Ekosistem")]),a._v(" "),s("h3",{attrs:{id:"ecosystemname"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[a._v("#")]),a._v(" ecosystemname")]),a._v(" "),s("p",[a._v("GET/, tanımlayıcısına göre ekosistemin adını döndürür.\nBu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-13"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-13"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/ecosystemname?id=..")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Ekosistem ID.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-9"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-9"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ecosystem_name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"platform_ecosystem"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-7"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_PARAMNOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"ecosystems"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ecosystems"}},[a._v("#")]),a._v(" ecosystems")]),a._v(" "),s("p",[a._v("GET/ Ekosistemlerin sayısını verir.")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/ecosystems/")])]),a._v(" "),s("h4",{attrs:{id:"cevap-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-8"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[a._v("number")])]),a._v(" "),s("p",[a._v("Kurulan ekosistemlerin sayısı.")]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-10"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-10"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"number"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("100")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"appparams-appid"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"appparams-appid"}},[a._v("appparams/{appID}")])]),a._v(" "),s("p",[a._v("GET/ Geçerli veya belirtilen ekosistemdeki uygulama parametrelerinin bir listesini döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-14"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-14"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/appparams")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[appid]")]),a._v(" "),s("p",[a._v("Application ID.")])]),a._v(" "),s("li",[s("p",[a._v("[ecosystem]")]),a._v(" "),s("p",[a._v("Ecosystem ID. Belirtilmezse, mevcut ekosistemin parametreleri döndürülür.")])]),a._v(" "),s("li",[s("p",[a._v("[names]")]),a._v(" "),s("p",[a._v("Alınan parametrelerin listesi.\nVirgülle ayrılmış parametre adlarının listesini belirleyebilirsiniz. Örneğin: "),s("code",[a._v("/api/v2/appparams/1?names=name,mypar")]),a._v(".")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-9"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-9"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Each element in the array contains the following parameters:")]),a._v(" "),s("ul",[s("li",[a._v("name, parameter name;")]),a._v(" "),s("li",[a._v("value, parameter value;")]),a._v(" "),s("li",[a._v("conditions, permission to change parameters.")])])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-11"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-11"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MyState"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"mypar"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"My value"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-8"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-8"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_ECOSYSTEM")]),a._v(" "),s("h3",{attrs:{id:"appparam-appid-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"appparam-appid-name"}},[a._v("appparam/{appid}/{name}")])]),a._v(" "),s("p",[a._v("GET/ Geçerli veya belirtilen ekosistemdeki {appid} uygulamasının {name} parametresiyle ilgili bilgileri döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-15"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-15"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/appparam/{appid}/{name}[?ecosystem=1]")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("appid")]),a._v(" "),s("p",[a._v("Uygulama ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("İstenen parametrenin adı.")])]),a._v(" "),s("li",[s("p",[a._v("[ecosystem]")]),a._v(" "),s("p",[a._v("Ekosistem Kimliği (isteğe bağlı parametre).\nVarsayılan olarak mevcut ekosistemi döndürür.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-10"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-10"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Parametre ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Parametre adı.")])]),a._v(" "),s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("Parametre değeri.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Parametreleri değiştirme izni.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-12"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-12"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"10"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"par"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"My value"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-9"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-9"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_ECOSYSTEM, E_PARAMNOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"ecosystemparams"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[a._v("#")]),a._v(" ecosystemparams")]),a._v(" "),s("p",[a._v("GET/ Ekosistem parametrelerinin listesini döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-16"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/ecosystemparams/[?ecosystem=...&names=...]")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[ecosystem]")]),a._v(" "),s("p",[a._v("Ekosistem ID. Belirtilmezse mevcut ekosistem kimliği döndürülür.")])]),a._v(" "),s("li",[s("p",[a._v("[names]\nVirgülle ayrılmış istek parametrelerinin listesi.\nÖrnek "),s("code",[a._v("/api/v2/ecosystemparams/?names=name,currency,logo*")]),a._v(".")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-11"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-11"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe aşağıdaki parametreleri içerir:")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Parametre adı.")])]),a._v(" "),s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("Parametre değeri.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Parametreleri değiştirme izni.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-13"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-13"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MyState"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"currency"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MY"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-10"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-10"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_ECOSYSTEM")]),a._v(" "),s("h3",{attrs:{id:"ecosystemparam-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"ecosystemparam-name"}},[a._v("ecosystemparam/{name}")])]),a._v(" "),s("p",[a._v("GET/ Geçerli veya belirtilen ekosistemdeki {name} parametresiyle ilgili bilgileri döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-17"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-17"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/ecosystemparam/{name}[?ecosystem=1]")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("İstek parametresinin adı.")])]),a._v(" "),s("li",[s("p",[a._v("[ecosystem]")]),a._v(" "),s("p",[a._v("Ekosistem kimliğini belirtebilirsiniz. Varsayılan olarak, mevcut ekosistem id döndürülür.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-12"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-12"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Parametre adı.")])]),a._v(" "),s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("Parametre değeri.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Parametreleri değiştirme izni.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-14"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-14"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"currency"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MYCUR"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-11"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-11"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_ECOSYSTEM")]),a._v(" "),s("h3",{attrs:{id:"tables-limit-offset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"tables-limit-offset"}},[a._v("tables/[?limit=…&offset=…]")])]),a._v(" "),s("p",[a._v("GET/ Ofseti ve giriş sayısını ayarlayabileceğiniz mevcut ekosistemin tablolarının listesini döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-18"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-18"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[limit]")]),a._v(" "),s("p",[a._v("Giriş sayısı, varsayılan olarak 25.")])]),a._v(" "),s("li",[s("p",[a._v("[offset]")]),a._v(" "),s("p",[a._v("Ofset, varsayılan olarak 0.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/tables")])]),a._v(" "),s("h4",{attrs:{id:"cevap-13"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-13"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("count")]),a._v(" "),s("p",[a._v("Tablodaki toplam girişler.")])]),a._v(" "),s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe aşağıdaki parametreleri içerir:")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Ön eki olmayan tablo adı.")])]),a._v(" "),s("li",[s("p",[a._v("count")]),a._v(" "),s("p",[a._v("Tablodaki giriş sayısı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-15"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-15"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"100"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"accounts"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"10"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"citizens"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"5"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"table-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"table-name"}},[a._v("table/{name}")])]),a._v(" "),s("p",[a._v("GET/ Mevcut ekosistem tarafından istenen tabloyla ilgili bilgileri döndürür.\nAşağıdaki alan bilgilerini döndürür:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Tablo ismi.")])]),a._v(" "),s("li",[s("p",[a._v("insert")]),a._v(" "),s("p",[a._v("Yeni girişler ekleme izni.")])]),a._v(" "),s("li",[s("p",[a._v("new_column")]),a._v(" "),s("p",[a._v("Yeni alanlar ekleme izni.")])]),a._v(" "),s("li",[s("p",[a._v("update")]),a._v(" "),s("p",[a._v("Girişleri değiştirme izni.")])]),a._v(" "),s("li",[s("p",[a._v("columns")]),a._v(" "),s("p",[a._v("Alanla ilgili bir dizi bilgi:")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Alan adı.")])]),a._v(" "),s("li",[s("p",[a._v("type")]),a._v(" "),s("p",[a._v("Alan veri türü.")])]),a._v(" "),s("li",[s("p",[a._v("perm")]),a._v(" "),s("p",[a._v("Bu alanın değerini değiştirme izni.")])])]),a._v(" "),s("h4",{attrs:{id:"istek-19"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-19"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/table/mytable")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Ekosistem ön eki olmayan tablo adı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-14"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-14"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Ekosistem ön eki olmayan tablo adı.")])]),a._v(" "),s("li",[s("p",[a._v("insert")]),a._v(" "),s("p",[a._v("Yeni girişler ekleme izni.")])]),a._v(" "),s("li",[s("p",[a._v("new_column")]),a._v(" "),s("p",[a._v("Yeni alanlar ekleme izni.")])]),a._v(" "),s("li",[s("p",[a._v("update")]),a._v(" "),s("p",[a._v("Girişleri değiştirme izni.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Tablo yapılandırmasını değiştirme izni.")])]),a._v(" "),s("li",[s("p",[a._v("columns")]),a._v(" "),s("p",[a._v("Alanla ilgili bir dizi bilgi:")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Alan adı.")])]),a._v(" "),s("li",[s("p",[a._v("type")]),a._v(" "),s("p",[a._v("Alan veri türü.")])]),a._v(" "),s("li",[s("p",[a._v("perm")]),a._v(" "),s("p",[a._v("Bu alanın değerini değiştirme izni.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-16"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"mytable"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"insert"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"new_column"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"update"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"columns"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"mynum"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"number"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"perm"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"mytext"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"text"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"perm"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),a._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-12"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-12"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_TABLENOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"list-name-limit-offset-columns"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"list-name-limit-offset-colums"}},[a._v("list/{name}[?limit=…&offset=…&columns=…]")])]),a._v(" "),s("p",[a._v("GET/ Geçerli ekosistemdeki belirtilen tablo girişlerinin listesini ve girişlerin ofsetini ve sayısını ayarlayabileceğiniz yeri döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-20"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-20"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Tablo adı.")])]),a._v(" "),s("li",[s("p",[a._v("[limit]")]),a._v(" "),s("p",[a._v("Giriş sayısı, varsayılan olarak 25'tir.")])]),a._v(" "),s("li",[s("p",[a._v("[offset]")]),a._v(" "),s("p",[a._v("Offset, 0 by default.")])]),a._v(" "),s("li",[s("p",[a._v("[columns]")]),a._v(" "),s("p",[a._v("İstenen sütunların virgülle ayrılmış listesi. Belirtilmezse, tüm sütunlar döndürülür. Çağrı durumlarında, id sütunu döndürülür.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/list/mytable?columns=name")])]),a._v(" "),s("h4",{attrs:{id:"cevap-15"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-15"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("count")]),a._v(" "),s("p",[a._v("Toplam girişler.")])]),a._v(" "),s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe aşağıdaki parametreleri içerir:")])]),a._v(" "),s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Entry ID.\nİstenen sütunların sırası.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-17"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-17"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"10"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"John"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"Mark"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"sections-limit-offset-lang"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"sections-limit-offset-lang"}},[a._v("sections[?limit=…&offset=…&lang=]")])]),a._v(" "),s("p",[a._v("GET/ Mevcut ekosistemin tablo bölümlerindeki girişlerin listesini ve girişlerin ofset ve sayısının ayarlanabileceği yeri döndürür.")]),a._v(" "),s("p",[a._v("role_access alanı bir roller listesi içeriyorsa ve mevcut rolü içermiyorsa, hiçbir kayıt döndürülmez. Başlık alanındaki veriler, istek başlığındaki Kabul Et-Dil dil kaynağı ile değiştirilecektir.")]),a._v(" "),s("h4",{attrs:{id:"istek-21"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-21"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[limit]")]),a._v(" "),s("p",[a._v("Giriş sayısı, varsayılan olarak 25.")])]),a._v(" "),s("li",[s("p",[a._v("[offset]")]),a._v(" "),s("p",[a._v("Offset, 0 by default.")])]),a._v(" "),s("li",[s("p",[a._v("[lang]")]),a._v(" "),s("p",[a._v("Bu alan, dil kaynaklarını veya yerelleştirme kodunu belirtir, örneğin: en, zh. Belirtilen dil kaynakları bulamazsanız, örneğin: en-US, o zaman en dil kaynakları grubunda arama yapın.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/sections")])]),a._v(" "),s("h4",{attrs:{id:"cevap-16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-16"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("count")]),a._v(" "),s("p",[a._v("Tablo bölümlerindeki toplam giriş sayısı.")])]),a._v(" "),s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe, tablo bölümlerindeki tüm sütunların bilgilerini içerir.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-18"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-18"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"title"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"Development"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"urlpage"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"develop"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n ...\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-13"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-13"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_TABLENOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"row-name-id-columns"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"row-name-id-colums"}},[a._v("row/{name}/{id}[?columns=]")])]),a._v(" "),s("h3",{attrs:{id:""}},[s("a",{staticClass:"header-anchor",attrs:{href:"#"}},[a._v("#")])]),a._v(" "),s("p",[a._v("GET/ Geçerli ekosistemde belirtilen tablonun girişini döndürür. Döndürülecek sütunları belirtebilirsiniz.")]),a._v(" "),s("h4",{attrs:{id:"istek-22"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-22"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Tablo ismi.")])]),a._v(" "),s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Giriş ID.")])]),a._v(" "),s("li",[s("p",[a._v("[columns]")]),a._v(" "),s("p",[a._v("İstenen sütunların virgülle ayrılmış listesi. Belirtilmezse, tüm sütunlar döndürülür. Her durumda, id sütunu döndürülür.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/row/mytable/10?columns=name")])]),a._v(" "),s("h4",{attrs:{id:"cevap-17"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-17"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("İstenen sütunların bir dizi değeri")]),a._v(" "),s("ul",[s("li",[a._v("id")])]),a._v(" "),s("p",[a._v("Giriş ID.")]),a._v(" "),s("ul",[s("li",[a._v("Sequence of İsteked columns.")])])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-19"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-19"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"values"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"10"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"John"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-14"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-14"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"systemparams"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[a._v("#")]),a._v(" systemparams")]),a._v(" "),s("p",[a._v("GET/ Returns the list of platform parameters.")]),a._v(" "),s("h4",{attrs:{id:"istek-23"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-23"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/systemparams/[?names=...]")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[names]")]),a._v(" "),s("p",[a._v("Virgülle ayrılmış bir istek parametreleri listesi. Örneğin, /api/v2/systemparams/?names=max_columns,max_indexes.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-18"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-18"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe aşağıdaki parametreleri içerir:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Parametre adı.")])])])]),a._v(" "),s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("Parametre değeri.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Parametreyi değiştirme izinleri.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-20"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-20"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"max_columns"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"100"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractAccess("')]),a._v("@1UpdateSysParam"),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('")"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"max_indexes"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractAccess("')]),a._v("@1UpdateSysParam"),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('")"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-15"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-15"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_PARAMNOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"history-name-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"history-name-id"}},[a._v("history/{name}/{id}")])]),a._v(" "),s("p",[a._v("GET/ Geçerli ekosistemde belirtilen tablodaki girişin değişiklik kaydını döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-24"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-24"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Tablo adı.")])]),a._v(" "),s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Giriş ID.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-19"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-19"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Öğeleri istenen girişin değiştirilmiş parametrelerini içeren bir dizideki her öğe.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-21"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-21"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"default_page"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"P(class, Default Ecosystem Page)"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"menu"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"default_menu"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"interface-page-menu-block-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-block-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"interface-page-menu-block-name"}},[a._v("interface/{page|menu|block}/{name}")])]),a._v(" "),s("p",[a._v("GET/ Geçerli ekosistemin belirtilen tablosundaki (sayfalar, menü veya bloklar) ad alanının girişini döndürür.")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/interface/page/default_page")])]),a._v(" "),s("h4",{attrs:{id:"istek-25"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-25"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Tabloda belirtilen girdinin adı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-20"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-20"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Giriş ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Giriş adı.")])]),a._v(" "),s("li",[s("p",[a._v("other")]),a._v(" "),s("p",[a._v("Tablonun diğer sütunları.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-22"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-22"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"default_page"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"P(Page content)"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"default_menu"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"default_menu"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"validate_count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-16"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-16"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_QUERY, E_NOTFOUND")]),a._v(" "),s("h2",{attrs:{id:"contract-functions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contract-functions"}},[a._v("#")]),a._v(" Contract functions")]),a._v(" "),s("h3",{attrs:{id:"contracts-limit-offset"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"contracts-limit-offset"}},[a._v("contracts[?limit=…&offset=…]")])]),a._v(" "),s("p",[a._v("GET/ Mevcut ekosistemdeki sözleşmelerin listesini verir ve girişlerin mahsup ve sayısını ayarlayabilir.")]),a._v(" "),s("h4",{attrs:{id:"istek-26"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-26"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("[limit]")]),a._v(" "),s("p",[a._v("Giriş sayısı, varsayılan olarak 25.")])]),a._v(" "),s("li",[s("p",[a._v("[offset]")]),a._v(" "),s("p",[a._v("Ofset, varsayılan olarak 0.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/contracts")])]),a._v(" "),s("h4",{attrs:{id:"cevap-21"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-21"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("count")]),a._v(" "),s("p",[a._v("Toplam giriş sayısı.")])]),a._v(" "),s("li",[s("p",[a._v("list")]),a._v(" "),s("p",[a._v("Dizideki her öğe aşağıdaki parametreleri içerir:")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Kontrat ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Kontrat adı.")])]),a._v(" "),s("li",[s("p",[a._v("value")]),a._v(" "),s("p",[a._v("Kontrat içeriği.")])]),a._v(" "),s("li",[s("p",[a._v("wallet_id")]),a._v(" "),s("p",[a._v("Kontratı bağlı hesap adresi.")])]),a._v(" "),s("li",[s("p",[a._v("address")]),a._v(" "),s("p",[a._v("Cüzdan adresi "),s("code",[a._v("XXXX-...-XXXX")]),a._v(" kontrata bağlı.")])]),a._v(" "),s("li",[s("p",[a._v("ecosystem_id")]),a._v(" "),s("p",[a._v("Kontratı ait olduğu ekosistemin ID.")])]),a._v(" "),s("li",[s("p",[a._v("app_id")]),a._v(" "),s("p",[a._v("Kontratın ait olduğu uygulamanın ID.")])]),a._v(" "),s("li",[s("p",[a._v("conditions")]),a._v(" "),s("p",[a._v("Kontratı değiştirme izinleri.")])]),a._v(" "),s("li",[s("p",[a._v("token_id")]),a._v(" "),s("p",[a._v("Kontrat ücretini ödemek için kullanılan jetonun bulunduğu ekosistemin ID.")])])])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-23"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-23"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"10"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"list"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"MainCondition"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"token_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"wallet_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"0"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(' "contract MainCondition '),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n conditions "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n if(EcosysParam(`founder_account`)!=$key_id)\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n warning `Sorry"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" you dont have access to this action.`\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v('"'),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"address"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"0000-0000-0000-0000-0000"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"ContractConditions(`MainCondition`)"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n ...\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"contract-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"contract-name"}},[a._v("contract/{name}")])]),a._v(" "),s("p",[a._v("GET/ Belirtilen kontratın ilgili bilgilerini döndürür. Varsayılan olarak, kontrat mevcut ekosistemde sorgulanır.")]),a._v(" "),s("h4",{attrs:{id:"istek-27"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-27"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Kontrat adı.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/contract/mycontract")])]),a._v(" "),s("h4",{attrs:{id:"cevap-22"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-22"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Sanal makinede kontrat ID.")])]),a._v(" "),s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v('Ekosistem ID sahip kontrat adı "@1MainCondition".')])]),a._v(" "),s("li",[s("p",[a._v("state")]),a._v(" "),s("p",[a._v("Kontratın ait olduğu ekosistemin ID.")])]),a._v(" "),s("li",[s("p",[a._v("walletid")]),a._v(" "),s("p",[a._v("Kontrata bağlı hesap adresi.")])]),a._v(" "),s("li",[s("p",[a._v("tokenid")]),a._v(" "),s("p",[a._v("Kontrat ücretini ödemek için kullanılan token bulunduğu ekosistemin ID.")])]),a._v(" "),s("li",[s("p",[a._v("address")]),a._v(" "),s("p",[a._v("Cüzdan adresi "),s("code",[a._v("XXXX-...-XXXX")]),a._v(" sözleşmeye bağlı.")])]),a._v(" "),s("li",[s("p",[a._v("tableid")]),a._v(" "),s("p",[a._v("Kontrat tablosundaki kontratın giriş ID.")])]),a._v(" "),s("li",[s("p",[a._v("fields")]),a._v(" "),s("p",[a._v("Dizi, kontrat veri bölümündeki her parametrenin yapı bilgilerini içerir:")]),a._v(" "),s("ul",[s("li",[a._v("name")])]),a._v(" "),s("p",[a._v("Parametre adı.")]),a._v(" "),s("ul",[s("li",[a._v("type")])]),a._v(" "),s("p",[a._v("Parametre türü.")]),a._v(" "),s("ul",[s("li",[a._v("optional")])]),a._v(" "),s("p",[a._v("Parametre seçeneği, true isteğe bağlı parametre anlamına gelir, false zorunlu parametre anlamına gelir.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-24"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-24"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"fields"')]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"amount"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"int"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"optional"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"string"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"optional"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("150")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"@1mycontract"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tableid"')]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("10")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-17"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-17"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_CONTRACT")]),a._v(" "),s("h3",{attrs:{id:"sendtx"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[a._v("#")]),a._v(" sendTX")]),a._v(" "),s("p",[a._v("POST/ Parametredeki işlemi alın ve işlem kuyruğuna ekleyin. İstek başarıyla yürütülürse, işlem hash döndürülür. Hash ile bloktaki ilgili işlemi elde edebilirsiniz. Bir hata yanıtı oluştuğunda, hash, hata metin mesajına dahil edilir.")]),a._v(" "),s("h4",{attrs:{id:"istek-28"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-28"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("tx_key")]),a._v(" "),s("p",[a._v("İşlem içeriği. Bu parametre ile herhangi bir isim belirleyebilir ve birden fazla işlem almayı destekleyebilirsiniz.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/sendTx")])]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v("Headers:\nContent-Type: multipart/form-data\nParameters:\ntx1 - transaction 1\ntxN - transaction N\n")])])]),s("h4",{attrs:{id:"cevap-23"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-23"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hashes")]),a._v(" "),s("p",[a._v("Array of transaction hashes:")])]),a._v(" "),s("li",[s("p",[a._v("tx1")]),a._v(" "),s("p",[a._v("Hash of transaction 1.")])]),a._v(" "),s("li",[s("p",[a._v("txN")]),a._v(" "),s("p",[a._v("Hash of transaction N.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-25"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-25"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)\nContent-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hashes"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tx1"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"67afbc435634....."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"txN"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"89ce4498eaf7....."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-18"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-18"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_LIMITTXSIZE,"),s("em",[a._v("E_BANNED")])]),a._v(" "),s("h3",{attrs:{id:"txstatus"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[a._v("#")]),a._v(" txstatus")]),a._v(" "),s("p",[a._v("POST/ Belirtilen işlem hashinin blok id ve hata mesajını döndürür. Blok id ve hata metin mesajının dönüş değeri boşsa, işlem bloğa dahil edilmemiştir.")]),a._v(" "),s("h4",{attrs:{id:"istek-29"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-29"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[a._v("data\nJSON list of transaction hashes."),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/txstatus/")])]),a._v(" "),s("h4",{attrs:{id:"cevap-24"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-24"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("results\nVeri sözlüğünde, anahtar olarak işlem hash'i, değer olarak işlem detayı.")]),a._v(" "),s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İşlem hash.")]),a._v(" "),s("ul",[s("li",[a._v("blockid")])]),a._v(" "),s("p",[a._v("İşlem başarılı bir şekilde yürütülürse blok id döndürülür; işlem gerçekleştirilemezse, blok id 0'dır.")]),a._v(" "),s("ul",[s("li",[a._v("result")])]),a._v(" "),s("p",[a._v("$result değişkeni aracılığıyla işlem sonucunu döndürün.")]),a._v(" "),s("ul",[s("li",[a._v("errmsg")])]),a._v(" "),s("p",[a._v("İşlem gerçekleştirilemezse, bir hata metin mesajı döndürülür.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-26"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-26"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"results"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash1"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"blockid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3123"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash2"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"blockid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3124"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-19"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-19"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_HASHWRONG, E_HASHNOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"txinfo-hash"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"txinfo-hash"}},[a._v("txinfo/{hash}")])]),a._v(" "),s("p",[a._v("GET/ Blok kimliği ve onay sayısı da dahil olmak üzere, işlemle ilişkili belirtilen hash bilgilerini döndürür. İsteğe bağlı parametreler belirtilirse, kontrat adı ve ilgili parametreler de döndürülebilir.")]),a._v(" "),s("h4",{attrs:{id:"istek-30"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-30"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İşlem hash.")])]),a._v(" "),s("li",[s("p",[a._v("[contractinfo]")]),a._v(" "),s("p",[a._v("Ayrıntılı kontrat parametresi tanımlayıcısı. İşlemle ilgili kontrat ayrıntılarını elde etmek için "),s("code",[a._v("contractinfo=1")]),a._v(" belirtin.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1")])]),a._v(" "),s("h4",{attrs:{id:"cevap-25"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-25"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("blockid")]),a._v(" "),s("p",[a._v('İşlemin blok id içerir. Değer "0" ise, bu hash ile işlem bulunamaz.')])]),a._v(" "),s("li",[s("p",[a._v("confirm")]),a._v(" "),s("p",[a._v("Blok blokidinin onay sayısı.")])]),a._v(" "),s("li",[s("p",[a._v("data")]),a._v(" "),s("p",[s("code",[a._v("contentinfo=1")]),a._v(" belirtilirse, sözleşme detayları bu parametreye döndürülecektir.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-27"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-27"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"blockid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"9"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"confirm"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("11")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"data"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"block"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"9"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"contract"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"@1NewContract"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"params"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"ApplicationId"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"Conditions"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"true"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"Value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t}"')]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-20"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-20"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_HASHWRONG")]),a._v(" "),s("h3",{attrs:{id:"txinfomultiple"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[a._v("#")]),a._v(" txinfoMultiple/")]),a._v(" "),s("p",[a._v("GET/ Bir işlemle ilgili olarak belirtilen hash bilgilerini döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-31"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-31"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("İşlem hashlerinin listesi.")])]),a._v(" "),s("li",[s("p",[a._v("[contractinfo]")]),a._v(" "),s("p",[a._v("Ayrıntılı kontrat parametresi tanımlayıcısı. İşlemle ilgili kontrat ayrıntılarını almak için "),s("code",[a._v("contractinfo=1")]),a._v(" belirtin.")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/txinfoMultiple/")])]),a._v(" "),s("h4",{attrs:{id:"cevap-26"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-26"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("results")]),a._v(" "),s("p",[a._v("Veri sözlüğünde, anahtar olarak işlem hash'leri ve değer olarak işlem ayrıntıları.")]),a._v(" "),s("p",[a._v("doğramak")]),a._v(" "),s("p",[a._v("İşlem hash.")]),a._v(" "),s("p",[a._v("blockid")]),a._v(" "),s("p",[a._v('İşlemi içeren blok kimliği. Değer "0" ise, bu hash ile işlem bulunamaz.')]),a._v(" "),s("p",[a._v("onaylama")]),a._v(" "),s("p",[a._v("Blok blokidinin onay sayısı.")]),a._v(" "),s("p",[a._v("veri")]),a._v(" "),s("p",[s("code",[a._v("contentinfo=1")]),a._v(" belirtilirse, sözleşme detayları bu parametreye döndürülecektir.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-28"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-28"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"results"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash1"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"blockid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3123"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"confirm"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"5"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash2"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"blockid"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3124"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"confirm"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"3"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-21"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-21"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_HASHWRONG")]),a._v(" "),s("h3",{attrs:{id:"page-validators-count-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"page-validators_count-name"}},[a._v("/page/validators_count/{name}")])]),a._v(" "),s("p",[a._v("GET/ Belirtilen sayfayı doğrulamak için gereken düğüm sayısını döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-32"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Ekosistem id sahip sayfa adı: "),s("code",[a._v("@ecosystem_id%%page_name%")]),a._v('. Örneğin, "@1main_page".')])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/page/validators_count/@1page_name")])]),a._v(" "),s("h4",{attrs:{id:"cevap-27"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-27"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("validate_count")]),a._v(" "),s("p",[a._v("Belirtilen sayfayı doğrulamak için gereken node sayısı")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-29"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-29"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),s("h4",{attrs:{id:"hatalı-cevap-22"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-22"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND, E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"content-menu-page-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"content-menu-page-name"}},[a._v("content/menu|page/{name}")])]),a._v(" "),s("p",[a._v("POST/ Şablon motoru işlemenin sonucu olan, belirtilen sayfa veya menü adının kodunun JSON nesne ağacını döndürür.")]),a._v(" "),s("h4",{attrs:{id:"istek-33"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-33"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Sayfa veya menü adı.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/content/page/default")])]),a._v(" "),s("h4",{attrs:{id:"cevap-28"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-28"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("menu")]),a._v(" "),s("p",[a._v("İçerik/sayfa/… isteğinde bulunulurken sayfanın menü adı")])]),a._v(" "),s("li",[s("p",[a._v("menutree")]),a._v(" "),s("p",[a._v("İçerik/sayfa/... isteğinde bulunulurken sayfa menüsünün bir JSON nesne ağacı")])]),a._v(" "),s("li",[s("p",[a._v("title–head for the menu content/menu/…")]),a._v(" "),s("p",[a._v("İçerik/menü/...")])]),a._v(" "),s("li",[s("p",[a._v("tree")]),a._v(" "),s("p",[a._v("Bir sayfanın veya menünün JSON nesne ağacı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-30"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-30"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tree"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"......"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"children"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-23"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-23"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"content-source-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"content-source-name"}},[a._v("content/source/{name}")])]),a._v(" "),s("p",[a._v('POST/ Belirtilen sayfa adı kodunun JSON nesne ağacını döndürür. Herhangi bir işlevi yürütmez veya herhangi bir veri almaz. Döndürülen JSON nesne ağacı, sayfa şablonuna karşılık gelir ve görsel sayfa tasarımcısında kullanılabilir. Sayfa bulunamazsa, 404 hatası döndürülür. İstek """""""')]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Sayfa adı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-29"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-29"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/content/source/default")])]),a._v(" "),s("ul",[s("li",[s("p",[a._v("tree")]),a._v(" "),s("p",[a._v("Sayfanın bir JSON nesne ağacı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-31"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-31"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tree"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"......"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"children"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-24"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-24"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND, E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"content-hash-name"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"content-hash-name"}},[a._v("content/hash/{name}")])]),a._v(" "),s("p",[a._v("POST/ Belirtilen sayfa adının SHA256 hashi veya sayfa bulunamazsa 404 hatasını döndürür.")]),a._v(" "),s("p",[a._v('Bu istek için oturum açma yetkisi gerekli değildir. Diğer nodelara istekte bulunurken doğru hash almak için ekosistem, keyID, roleID, isMobile parametrelerini de iletmelisiniz. Diğer ekosistemlerden sayfa almak için, ekosistem idnin sayfa adının önüne eklenmesi gerekir. Örneğin: "@2sayfam".')]),a._v(" "),s("h4",{attrs:{id:"istek-34"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-34"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("name")]),a._v(" "),s("p",[a._v("Ekosistem id sahip sayfa adı.")])]),a._v(" "),s("li",[s("p",[a._v("ecosystem")]),a._v(" "),s("p",[a._v("Ekosistem ID.")])]),a._v(" "),s("li",[s("p",[a._v("keyID")]),a._v(" "),s("p",[a._v("Hesap adresi.")])]),a._v(" "),s("li",[s("p",[a._v("roleID")]),a._v(" "),s("p",[a._v("Rol ID.")])]),a._v(" "),s("li",[s("p",[a._v("isMobile")]),a._v(" "),s("p",[a._v("Mobil platformun parametre tanımlayıcısı.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/content/hash/default")])]),a._v(" "),s("h4",{attrs:{id:"cevap-30"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-30"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hex")]),a._v(" "),s("p",[a._v("Hexadecimal hash.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-32"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n}\n')])])]),s("h4",{attrs:{id:"hatalı-cevap-25"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-25"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")]),a._v(" "),s("h3",{attrs:{id:"icerik"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#icerik"}},[a._v("#")]),a._v(" İçerik")]),a._v(" "),s("p",[a._v('POST/ Şablon parametresinden sayfa kodunu döndüren JSON nesnelerinin sayısı. İsteğe bağlı parametre kaynağı "true" veya "1" olarak belirtilirse, JSON nesne ağacı alınan herhangi bir işlevi ve veriyi yürütmez. JSON nesne ağacı, görsel sayfa tasarımcısında kullanılabilir.')]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-35"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-35"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("template")]),a._v(" "),s("p",[a._v("Sayfa kodu.")])]),a._v(" "),s("li",[s("p",[a._v("[source]")]),a._v(" "),s("p",[s("code",[a._v("true")]),a._v(" veya "),s("code",[a._v("1")]),a._v(" olarak belirtilirse, JSON nesne ağacı, alınan herhangi bir işlevi ve veriyi yürütmez.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/content")])]),a._v(" "),s("h4",{attrs:{id:"cevap-31"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-31"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("tree")]),a._v(" "),s("p",[a._v("JSON nesne ağacı.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-33"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-33"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tree"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"......"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"children"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("[")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("..."),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("]")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-26"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-26"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND, E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"maxblockid"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[a._v("#")]),a._v(" maxblockid")]),a._v(" "),s("p",[a._v("GET/ Geçerli nodedaki en yüksek bloğun idsini döndürür.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-36"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-36"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/maxblockid")])]),a._v(" "),s("h4",{attrs:{id:"cevap-32"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-32"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("max_block_id")]),a._v(" "),s("p",[a._v("Geçerli nodedaki en yüksek bloğun id.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-ornegi-34"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-ornegi-34"}},[a._v("#")]),a._v(" Cevap Örneği")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"max_block_id"')]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("341")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-27"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-27"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"block-id"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"block-id"}},[a._v("block/{id}")])]),a._v(" "),s("p",[a._v("GET/ Belirtilen ID ile bloğun ilgili bilgilerini döndürür.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-37"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-37"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[a._v("id\nBlock ID.")])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/block/32")])]),a._v(" "),s("h4",{attrs:{id:"cevap-33"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-33"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("hash")]),a._v(" "),s("p",[a._v("Hash of the block.")])]),a._v(" "),s("li",[s("p",[a._v("key_id")]),a._v(" "),s("p",[a._v("Bloğu imzalayan hesabın adresi.")])]),a._v(" "),s("li",[s("p",[a._v("time")]),a._v(" "),s("p",[a._v("Block generation timestamp.")])]),a._v(" "),s("li",[s("p",[a._v("tx_count")]),a._v(" "),s("p",[a._v("Bloktaki toplam işlem sayısı.")])]),a._v(" "),s("li",[s("p",[a._v("rollbacks_hash")]),a._v(" "),s("p",[a._v("Hash for block rollback.")])]),a._v(" "),s("li",[s("p",[a._v("node_position")]),a._v(" "),s("p",[a._v("Honor node listesinde bloğun konumu.")])])]),a._v(" "),s("h4",{attrs:{id:"cevap-example-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-5"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"hash"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"key_id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("-118432674655542910")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"time"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1551145365")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"tx_count"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("3")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"rollbacks_hash"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"node_position"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-28"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-28"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND")]),a._v(" "),s("h3",{attrs:{id:"avatar-ecosystem-member"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"avatar-ecosystem-member"}},[a._v("avatar/{ecosystem}/{member}")])]),a._v(" "),s("p",[a._v("GET/ Üye tablosundaki kullanıcının avatarını döndürür (oturum açmadan kullanabilirsiniz).")]),a._v(" "),s("h4",{attrs:{id:"istek-38"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-38"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("ecosystem")]),a._v(" "),s("p",[a._v("Ekosistem ID.")])]),a._v(" "),s("li",[s("p",[a._v("member")]),a._v(" "),s("p",[a._v("Kullanıcının hesap adresi.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/avatar/1/-118432674655542910")])]),a._v(" "),s("h4",{attrs:{id:"cevap-34"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-34"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("p",[a._v("İçerik Tipi istek başlığının türü resimdir ve resim verileri yanıt gövdesinde döndürülür.")]),a._v(" "),s("h4",{attrs:{id:"cevap-example-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-6"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[a._v("200 (OK)\nContent-Type: image/png\n")])])]),s("h4",{attrs:{id:"hatalı-cevap-29"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-29"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_NOTFOUND E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"config-centrifugo"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[a._v("#")]),a._v(" "),s("span",{attrs:{id:"config-centrifugo"}},[a._v("config/centrifugo")])]),a._v(" "),s("p",[a._v("GET/ Centrifugo ana bilgisayar adresini ve portunu döndürür.\nBu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-39"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-39"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("blockquote",[s("p",[a._v("GET /api/v2/config/centrifugo")])]),a._v(" "),s("h4",{attrs:{id:"cevap-35"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-35"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),s("p",[a._v("Yanıt biçimi "),s("code",[a._v("http://adres:port")]),a._v(" şeklindedir, örneğin: "),s("code",[a._v("http://127.0.0.1:8100")]),a._v(".")]),a._v(" "),s("h4",{attrs:{id:"hatalı-cevap-30"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hatalı-cevap-30"}},[a._v("#")]),a._v(" Hatalı Cevap")]),a._v(" "),s("p",[a._v("E_SERVER")]),a._v(" "),s("h3",{attrs:{id:"updnotificator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[a._v("#")]),a._v(" updnotificator")]),a._v(" "),s("p",[a._v("POST/ Henüz gönderilmemiş tüm mesajları centrifugo bildirim hizmetine gönderin. Yalnızca belirtilen ekosistemler ve üyeler için mesaj gönderin.")]),a._v(" "),s("p",[a._v("Bu istek için oturum açma yetkisi gerekli değildir.")]),a._v(" "),s("h4",{attrs:{id:"istek-40"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#istek-40"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),s("ul",[s("li",[s("p",[a._v("id")]),a._v(" "),s("p",[a._v("Üye hesap adresi.")])]),a._v(" "),s("li",[s("p",[a._v("ecosystem")]),a._v(" "),s("p",[a._v("Ekosistem ID.")])])]),a._v(" "),s("blockquote",[s("p",[a._v("POST /api/v2/updnotificator")])]),a._v(" "),s("h4",{attrs:{id:"cevap-example-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cevap-example-7"}},[a._v("#")]),a._v(" Cevap example")]),a._v(" "),s("p",[a._v("200 (OK)")]),a._v(" "),s("p",[a._v("Content-Type: application/json")]),a._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[a._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(":")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("true")]),a._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/121.d5cedafb.js b/assets/js/121.cec73b04.js similarity index 98% rename from assets/js/121.d5cedafb.js rename to assets/js/121.cec73b04.js index a612548..30e0807 100644 --- a/assets/js/121.d5cedafb.js +++ b/assets/js/121.cec73b04.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{498:function(a,n,e){"use strict";e.r(n);var r=e(51),t=Object(r.a)({},(function(){var a=this,n=a.$createElement,e=a._self._c||n;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"sunucu-yapılandırma-dosyası"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sunucu-yapılandırma-dosyası"}},[a._v("#")]),a._v(" Sunucu Yapılandırma Dosyası")]),a._v(" "),e("p",[a._v("Bu bölümde, sunucu yapılandırma dosyasındaki parametreleri tanıtacağız.")]),a._v(" "),e("h2",{attrs:{id:"sunucu-yapılandırma-dosyasına-giris"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sunucu-yapılandırma-dosyasına-giris"}},[a._v("#")]),a._v(" Sunucu yapılandırma dosyasına giriş")]),a._v(" "),e("p",[a._v("Sunucu yapılandırma dosyası, IBAX'in düğüm yapılandırmasını tanımlar.")]),a._v(" "),e("h2",{attrs:{id:"konum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#konum"}},[a._v("#")]),a._v(" Konum")]),a._v(" "),e("p",[a._v("Bu dosya sunucunun çalışma dizininde bulunur ve "),e("code",[a._v("config.toml")]),a._v(" olarak adlandırılır.")]),a._v(" "),e("h2",{attrs:{id:"bolumler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bolumler"}},[a._v("#")]),a._v(" Bölümler")]),a._v(" "),e("p",[a._v("Yapılandırma dosyası aşağıdaki bölümlerden oluşur:")]),a._v(" "),e("blockquote",[e("p",[a._v("genel bölüm")])]),a._v(" "),e("p",[a._v("DataDir çalışma dizini, FirstBlockPath ilk blok dizini ve diğer parametreleri tanımlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[TCPServer]")])]),a._v(" "),e("p",[a._v("TCP hizmet parametrelerini tanımlar.")]),a._v(" "),e("p",[a._v("TCPServer, düğümler arasındaki ağ etkileşimi için kullanılır.")]),a._v(" "),e("blockquote",[e("p",[a._v("[HTTP]")])]),a._v(" "),e("p",[a._v("HTTP hizmet parametrelerini tanımlar.")]),a._v(" "),e("p",[a._v("HTTPServer, RESTful API'ler sağlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[DB]")])]),a._v(" "),e("p",[a._v("PostgreSQL düğüm veritabanının parametrelerini tanımlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[StatsD]")])]),a._v(" "),e("p",[a._v("Düğüm işlem göstergesi toplayıcı StatsD'nin parametrelerini tanımlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[Centrifugo]")])]),a._v(" "),e("p",[a._v("Centrifugo bildirim hizmetinin parametrelerini tanımlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[Log]")])]),a._v(" "),e("p",[a._v("Günlük hizmeti Günlüğünün parametrelerini tanımlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[TokenMovement]")])]),a._v(" "),e("p",[a._v("Token dolaşım hizmeti TokenMovement'in parametrelerini tanımlar.")]),a._v(" "),e("h2",{attrs:{id:"ornek-bir-yapılandırma-dosyası"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ornek-bir-yapılandırma-dosyası"}},[a._v("#")]),a._v(" Örnek bir yapılandırma dosyası")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);n.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{501:function(a,n,e){"use strict";e.r(n);var r=e(51),t=Object(r.a)({},(function(){var a=this,n=a.$createElement,e=a._self._c||n;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"sunucu-yapılandırma-dosyası"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sunucu-yapılandırma-dosyası"}},[a._v("#")]),a._v(" Sunucu Yapılandırma Dosyası")]),a._v(" "),e("p",[a._v("Bu bölümde, sunucu yapılandırma dosyasındaki parametreleri tanıtacağız.")]),a._v(" "),e("h2",{attrs:{id:"sunucu-yapılandırma-dosyasına-giris"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sunucu-yapılandırma-dosyasına-giris"}},[a._v("#")]),a._v(" Sunucu yapılandırma dosyasına giriş")]),a._v(" "),e("p",[a._v("Sunucu yapılandırma dosyası, IBAX'in düğüm yapılandırmasını tanımlar.")]),a._v(" "),e("h2",{attrs:{id:"konum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#konum"}},[a._v("#")]),a._v(" Konum")]),a._v(" "),e("p",[a._v("Bu dosya sunucunun çalışma dizininde bulunur ve "),e("code",[a._v("config.toml")]),a._v(" olarak adlandırılır.")]),a._v(" "),e("h2",{attrs:{id:"bolumler"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bolumler"}},[a._v("#")]),a._v(" Bölümler")]),a._v(" "),e("p",[a._v("Yapılandırma dosyası aşağıdaki bölümlerden oluşur:")]),a._v(" "),e("blockquote",[e("p",[a._v("genel bölüm")])]),a._v(" "),e("p",[a._v("DataDir çalışma dizini, FirstBlockPath ilk blok dizini ve diğer parametreleri tanımlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[TCPServer]")])]),a._v(" "),e("p",[a._v("TCP hizmet parametrelerini tanımlar.")]),a._v(" "),e("p",[a._v("TCPServer, düğümler arasındaki ağ etkileşimi için kullanılır.")]),a._v(" "),e("blockquote",[e("p",[a._v("[HTTP]")])]),a._v(" "),e("p",[a._v("HTTP hizmet parametrelerini tanımlar.")]),a._v(" "),e("p",[a._v("HTTPServer, RESTful API'ler sağlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[DB]")])]),a._v(" "),e("p",[a._v("PostgreSQL düğüm veritabanının parametrelerini tanımlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[StatsD]")])]),a._v(" "),e("p",[a._v("Düğüm işlem göstergesi toplayıcı StatsD'nin parametrelerini tanımlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[Centrifugo]")])]),a._v(" "),e("p",[a._v("Centrifugo bildirim hizmetinin parametrelerini tanımlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[Log]")])]),a._v(" "),e("p",[a._v("Günlük hizmeti Günlüğünün parametrelerini tanımlar.")]),a._v(" "),e("blockquote",[e("p",[a._v("[TokenMovement]")])]),a._v(" "),e("p",[a._v("Token dolaşım hizmeti TokenMovement'in parametrelerini tanımlar.")]),a._v(" "),e("h2",{attrs:{id:"ornek-bir-yapılandırma-dosyası"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ornek-bir-yapılandırma-dosyası"}},[a._v("#")]),a._v(" Örnek bir yapılandırma dosyası")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);n.default=t.exports}}]); \ No newline at end of file diff --git a/assets/js/123.bdff3bcb.js b/assets/js/123.d7928c13.js similarity index 99% rename from assets/js/123.bdff3bcb.js rename to assets/js/123.d7928c13.js index 6e1d570..e0f1fad 100644 --- a/assets/js/123.bdff3bcb.js +++ b/assets/js/123.d7928c13.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{504:function(e,t,a){"use strict";a.r(t);var n=a(51),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"json-rpc-application-programming-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-application-programming-interface"}},[e._v("#")]),e._v(" JSON-RPC Application Programming Interface")]),e._v(" "),a("p",[e._v("In order for a software application to interact with the IBAX blockchain (fetch block data or send transactions to the network), it must be connected to an IBAX network node.")]),e._v(" "),a("p",[e._v("Due to the generality and extensibility of the original REST API interface, it will become more and more complex with more and more interfaces and different clients. We realize the importance of interface unification to ensure that all clients can use the same set of specifications, regardless of the specific node and client implementation.")]),e._v(" "),a("p",[e._v("JSON-RPC is a stateless, lightweight remote procedure call (RPC) protocol. It defines a number of data structures and their processing rules. It is transport independent, as these concepts can be used in the same process, via an interface, hypertext transfer protocol, or in many different messaging environments. It uses JSON (RFC 4627) as the data format.")]),e._v(" "),a("p",[e._v("JSON-RPC is compatible with most of the REST API interfaces, retaining the original REST API interface, the client using the REST API interface can easily transfer to the JSON-RPC interface, part of the interface")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])],1)]),e._v(" "),a("p",[e._v("Available through the REST API interface.")]),e._v(" "),a("h2",{attrs:{id:"client-side-implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-side-implementation"}},[e._v("#")]),e._v(" Client-side implementation")]),e._v(" "),a("p",[e._v("Each client can use a different programming language when implementing the JSON-RPC specification, and you can use the\n"),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("GO-SDK"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"curl-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curl-example"}},[e._v("#")]),e._v(" Curl example")]),e._v(" "),a("p",[e._v("The following provides examples of using the JSON RPC API by making curl requests to IBAX nodes. Each example includes a description of the particular endpoint, its parameters, the return type, and a working example of how it should be used.")]),e._v(" "),a("p",[e._v('Curl requests may return an error message related to the content type. This is because the --data option sets the content type to application/x-www-form-urlencoded. If your request has this problem, set the header manually by placing -H "Content-Type: application/json" at the beginning of the call. These examples also do not include the URL/Internet Protocol and port combination that must be the last parameter of the curl (e.g. 127.0.0.1:7079 A full curl request with this additional data takes the form of')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","params":[],"id":1}\' http://127.0.0.1:7079\t\n')])])]),a("h2",{attrs:{id:"covenant"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#covenant"}},[e._v("#")]),e._v(" Covenant")]),e._v(" "),a("h3",{attrs:{id:"hex"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hex"}},[e._v("#")]),e._v(" Hex")]),e._v(" "),a("p",[a("strong",[e._v("Hexadecimal code")])]),e._v(" "),a("p",[e._v("When encoding byte arrays, hashes, and bytecode arrays: the encoding is hexadecimal, two hexadecimal digits per byte.")]),e._v(" "),a("h3",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("Content-Type: application/json")])]),e._v(" "),a("h3",{attrs:{id:"special-markers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-markers"}},[e._v("#")]),e._v(" Special markers")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("This field is an optional parameter.")]),e._v(" "),a("p",[e._v("If there are multiple "),a("code",[e._v("Omitempty")]),e._v(" fields in a row,\nBut only want to pass the value of a certain field, then you need to set the unwanted field to null (the field type null value), Example:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Name")]),e._v(" "),a("li",[a("strong",[e._v("column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Filter column names")])]),e._v(" "),a("p",[e._v("If only the name value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0, "testname"]')]),e._v(" - "),a("em",[e._v("Number")]),e._v(" null value is 0")]),e._v(" "),a("p",[e._v("If only the column value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0,"", "title,page"]')]),e._v(" - "),a("em",[e._v("String")]),e._v(' empty value for ""')]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("Authorization header, add Authorization to the request header, example:")]),e._v(" "),a("p",[a("strong",[e._v("name")]),e._v(" : Authorization "),a("strong",[e._v("value")]),e._v(" : Bearer +"),a("a",{attrs:{href:"#ibax-login"}},[e._v("login token")])]),e._v(" "),a("p",[e._v("Example:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","params":["@1TokensSend"],"id":1}\' http://127.0.0.1:7079\n\n')])])]),a("h4",{attrs:{id:"accountorkeyid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#accountorkeyid"}},[e._v("#")]),e._v(" AccountOrKeyId")]),e._v(" "),a("p",[e._v("For the account address parameter, you can use two formats of addresses, for example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v(" - Account Address "),a("code",[e._v('"XXXX-XXXX-XXXX-XXXX-XXXX"')]),e._v(" or Account Id "),a("code",[e._v('"64842...538120"')]),e._v(' .538120"`')])])]),e._v(" "),a("li",[a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Address object")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Account Id, Example: "),a("code",[e._v('{"key_id":-64842\t38120}')])]),e._v(" "),a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account address, Example: "),a("code",[e._v('{"account": "1196-... -\t-... -3496"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Account Id is preferred when both account address and account Id exist")]),e._v(".")])])]),e._v(" "),a("h4",{attrs:{id:"blockorhash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockorhash"}},[e._v("#")]),e._v(" BlockOrHash")]),e._v(" "),a("p",[e._v("Block height or block HASH, example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v("\t-\tBlock\tHeight\t"),a("code",[e._v('"100"')]),e._v("\tor\tBlock\tHASH"),a("code",[e._v('"4663aa47...a60753c18d9ba9cb4"')])])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - Block information object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height, example: "),a("code",[e._v('{"id":2}')])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v("\t-\t"),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v("\tString")]),e._v("\t-\tBlock\tHASH,\tExample:\t"),a("code",[e._v('{"hash": "d36b8996c\tc616d3043a0d02a0f59"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Block Height and Block HASH can only choose one")]),e._v(".")])])])])]),e._v(" "),a("h3",{attrs:{id:"batch-requests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#batch-requests"}},[e._v("#")]),e._v(" Batch requests")]),e._v(" "),a("p",[e._v("This feature can be used to reduce network latency, especially when acquiring a large number of largely independent data objects.")]),e._v(" "),a("p",[e._v("The following is an example of obtaining the highest block and total number of transactions:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'[{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]},{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":2,"params":[]}]\' http://127.0.0.1:7079\n\n //Response\n [\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149100\n },\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": 797\n }\n ]\n')])])]),a("h3",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Returns status "),a("code",[e._v("200")]),e._v(" in case the request is executed successfully.")]),e._v(" "),a("p",[e._v("If an error occurs, a JSON object with the following fields will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("jsonrpc")]),e._v(" "),a("p",[e._v("Error identifier.")])]),e._v(" "),a("li",[a("p",[e._v("id")]),e._v(" "),a("p",[e._v("Error text message.")])]),e._v(" "),a("li",[a("p",[e._v("error")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("code")]),e._v(" "),a("p",[e._v("Response Status Code")])]),e._v(" "),a("li",[a("p",[e._v("message")]),e._v(" "),a("p",[e._v("Response Status Description")])])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "jsonrpc": "2.0",\n "id": 1,\n "error": {\n "code": -32014,\n "message": "Unauthorized"\n }\n}\n')])])]),a("h2",{attrs:{id:"json-rpc-namespaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-namespaces"}},[e._v("#")]),e._v(" JSON-RPC Namespaces")]),e._v(" "),a("h3",{attrs:{id:"ibax-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-namespace"}},[e._v("#")]),e._v(" ibax Namespace")]),e._v(" "),a("h4",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getuid"}},[e._v("ibax.getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-login"}},[e._v("ibax.login")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getauthstatus"}},[e._v("ibax.getAuthStatus")])])]),e._v(" "),a("h4",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" server-side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getversion"}},[e._v("ibax.getVersion")])])]),e._v(" "),a("h4",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getbalance"}},[e._v("ibax.getBalance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockstxinfo"}},[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblocks"}},[e._v("ibax.detailedBlocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyinfo"}},[e._v("ibax.getKeyInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblock"}},[e._v("ibax.detailedBlock")])])]),e._v(" "),a("h4",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-maxblockid"}},[e._v("ibax.maxBlockId")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyscount"}},[e._v("ibax.getKeysCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettxcount"}},[e._v("ibax.getTxCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettransactioncount"}},[e._v("ibax.getTransactionCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockscountbynode"}},[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-honornodescount"}},[e._v("ibax.honorNodesCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemcount"}},[e._v("ibax.getEcosystemCount")])])]),e._v(" "),a("h4",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-ecosysteminfo"}},[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-appparams"}},[e._v("ibax.appParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemparams"}},[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettablecount"}},[e._v("ibax.getTableCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettable"}},[e._v("ibax.getTable")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getlist"}},[e._v("ibax.getList")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsections"}},[e._v("ibax.getSections")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getrow"}},[e._v("ibax.getRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-systemparams"}},[e._v("ibax.systemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-history"}},[e._v("ibax.history")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagerow"}},[e._v("ibax.getPageRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenurow"}},[e._v("ibax.getMenuRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsnippetrow"}},[e._v("ibax.getSnippetRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getappcontent"}},[e._v("ibax.getAppContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmember"}},[e._v("ibax.getMember")])])]),e._v(" "),a("h4",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getcontracts"}},[e._v("ibax.getContracts")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-sendtx"}},[e._v("ibax.sendTx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfo"}},[e._v("ibax.txInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfomultiple"}},[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpage"}},[e._v("ibax.getPage")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenu"}},[e._v("ibax.getMenu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsource"}},[e._v("ibax.getSource")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagehash"}},[e._v("ibax.getPageHash")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontent"}},[e._v("ibax.getContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockinfo"}},[e._v("ibax.getBlockInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getconfig"}},[e._v("ibax.getConfig")])])]),e._v(" "),a("h3",{attrs:{id:"net-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-namespace"}},[e._v("#")]),e._v(" net Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#net-getnetwork"}},[e._v("net.getNetwork")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#net-status"}},[e._v("net.status")])])]),e._v(" "),a("h3",{attrs:{id:"rpc-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-namespace"}},[e._v("#")]),e._v(" rpc Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rpc-modules"}},[e._v("rpc.modules")])])]),e._v(" "),a("h3",{attrs:{id:"admin-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-namespace"}},[e._v("#")]),e._v(" admin Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#admin-startjsonrpc"}},[e._v("admin.startJsonRpc")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#admin-stopjsonrpc"}},[e._v("admin.stopJsonRpc")])])]),e._v(" "),a("h3",{attrs:{id:"debug-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-namespace"}},[e._v("#")]),e._v(" debug Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#debug-getnodebanstat"}},[e._v("debug.getNodeBanStat")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#debug-getmemstat"}},[e._v("debug.getMemStat")])])]),e._v(" "),a("h2",{attrs:{id:"json-rpc-interface-methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-interface-methods"}},[e._v("#")]),e._v(" JSON-RPC Interface Methods")]),e._v(" "),a("h3",{attrs:{id:"ibax-getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getuid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getUid")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Generate a temporary JWT token,\twhich needs to be passed to "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(" when calling "),a("strong",[a("a",{attrs:{href:"#ibax-login"}},[e._v("login")])])]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("uid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The signature number.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - temporary token passed during login (temporary token has a 5 second lifespan).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("cryptoer")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Elliptic curve algorithm.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hasher")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - hash algorithm.")])])]),e._v(" "),a("p",[e._v("In the case that no authorization is required(the request contains "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(", the following message will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Expiration time.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])])]),e._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response1\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "uid": "5823391950439015186",\n "token": "ey....",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response2\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "expire": "7h59m49.5361126s",\n "ecosystem_id": "1",\n "key_id": "6667782293976713160",\n "address": "0666-7782-2939-7671-3160",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-login"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.login")])]),e._v(" "),a("p",[e._v("User authentication. "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"#ibax-getuid"}},[a("strong",[e._v("ibax.getUid")])]),e._v(" command should be called first in order to receive the unique value and sign it.\nThe temporary JWT token for getuid needs to be passed in the request header.\nIf the request is successful, the token received in the response is contained in "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication call object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID. if not specified, defaults to the first ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The lifecycle of the JWT token in seconds, default is 28800,8 hours.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Hexadecimal account public key.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -")]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("signature")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nUse the private key to sign the uid received by getuid.")]),e._v(" "),a("p",[e._v("Signature data content:LOGIN+{$network_id}+uid")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID, default role 0")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-2"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - JWT token.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("notify_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The notification ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isnode")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isowner")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the creator of this ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("clb")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the logged-in ecosystem is a CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("timestamp")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - current timestamp")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" list of roles, if there are no roles, the field is nil")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID")]),e._v(" "),a("li",[a("strong",[e._v("role_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Role name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.login","params":[{"ecosystem_id":1,"public_key":"04....","signature","46...","role_id":0}],"id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "token": "ey...",\n "ecosystem_id": "1",\n "key_id": "6660819716178795186",\n "account": "0666-xxxx-xxxx-xxxx-5186",\n "notify_key": "ey....",\n "isnode": false,\n "isowner": false,\n "clb": false,\n "timestamp": "1678336163",\n "roles": nil //[{"role_id": 1, "role_name": "Developer"},{"role_id": 2, "role_name": "DevelopGovernancerer"}]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getauthstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getauthstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAuthStatus")])]),e._v(" "),a("p",[e._v("User authentication status\n"),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-3"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication status object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("active")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - The current user authentication status. Values: "),a("code",[e._v("true,false")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("exp")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Token validity cutoff timestamp")])])]),e._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getAuthStatus","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "active": true,\n "exp": 1678354136\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getversion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getversion"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getVersion")])]),e._v(" "),a("p",[e._v("Returns the current server version.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-4"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("vesion")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - version number ("),a("code",[e._v("big Version")]),e._v(" + "),a("code",[e._v("branch name")]),e._v(" + "),a("code",[e._v("git commit")]),e._v(" + "),a("code",[e._v("time")]),e._v(" + "),a("code",[e._v("node status")]),e._v(")")])]),e._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getVersion","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "1.3.0 branch.main commit.b57d4194 time.2023-03-08-09:30:29(UTC) node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"ibax-getbalance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getbalance"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBalance")])]),e._v(" "),a("p",[e._v("Get the account address balance.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("key_id or account")]),e._v(" - "),a("a",{attrs:{href:"#accountorkeyid"}},[a("em",[e._v("AccountOrKeyId")])]),e._v(" - account address "),a("code",[e._v("XXXX- XXXX-XXXX-XXXX-XXXX")]),e._v(" or account ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default 1")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-5"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the balance object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the minimum unit of the contract account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("total")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the total balance of the minimum unit account (amount + utxo).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("utxo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Minimum unit UTXO account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")])])]),e._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["648...8120"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["1196-...-...-...-3496",1]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":[{"key_id":{$key_id}},1]}\' http://127.0.0.1:7079 //keyId or account\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "amount": "9915319240441612",\n "digits": 12,\n "total": "9915319240441612",\n "utxo": "0",\n "token_symbol": "IBXC"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockstxinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockstxinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("p",[e._v("Returns a list containing additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the starting block height to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-6"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block information object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height")])]),e._v(" "),a("li",[a("p",[e._v("List of transactions in the block and additional information for each transaction:")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" -\nFor the first block, it is the account address of the first block that signed the transaction.")]),e._v(" "),a("p",[e._v("For all other blocks, it is the address of the account that signed the transaction.")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksTxInfo","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": [ //block_id\n {\n "hash": "uXSaSrMWlbHpNlu049J5BDypC6MzBQ0/5VEfGQf+5aQ=",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160\n }\n ],\n "2": [ //block_id\n {\n "hash": "r8U9IKjtZ5Be5D4ak3zxLlDwn36CTdfIAsVvQhx7P3w=",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblocks"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlocks")])]),e._v(" "),a("p",[e._v("Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the starting block to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-7"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height\n"),a("ul",[a("li",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")]),e._v(" "),a("li",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")]),e._v(" "),a("li",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")]),e._v(" "),a("li",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")]),e._v(" "),a("li",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlocks","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": { //block id\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f73497ede8f22d678bc4be6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "36373332663064383331353264316333653639346431656436383734373634363463616363616564636632353232646335633736643066623737343931366363",\n "bin_data": "Cp4BCAEQppm...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n },\n "2": { //block id\n "header": {\n "block_id": 2,\n "time": 1676536235,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "dd13a30661d35e01df82027a6e6607eb47ee00765d69767dbb99e151676c2c96",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676536235,\n "tx_count": 1,\n "size": "1.53KiB",\n "rollbacks_hash": "9041312d69e6bcd37c91a2bfa066abaeb53b8398708937a618a89960bfadab3d",\n "merkle_root": "65366537383931353662613230356565396466353061316538656538643636323332316636616265623764633539616166346635343030383135386538643130",\n "bin_data": "Cp4BCAIQq9O...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "afc53d20a8ed67905ee43e1a937cf12e50f09f7e824dd7c802c56f421c7b3f7c",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160,\n "time": 1676536233945,\n "type": 3,\n "size": "390.00B"\n }\n ]\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeyInfo")])]),e._v(" "),a("p",[e._v("Returns a list of ecosystems with roles that are registered to the specified address.")]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")])]),e._v(" "),a("h4",{attrs:{id:"return-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-8"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Specify the address eco-list object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystems")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Eco-List\n"),a("ul",[a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - list of roles.\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - role id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Character name")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeyInfo","id":1,"params":["0666-XXXX-XXXX-XXXX-5186"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "account": "0666-XXXX-XXXX-XXXX-5186",\n "ecosystems": [\n {\n "ecosystem": "1",\n "name": "platform ecosystem",\n "digits": 12,\n "roles": [\n {\n "id": "1",\n "name": "Developer"\n },\n {\n "id": "2",\n "name": "Governancer"\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblock"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlock")])]),e._v(" "),a("p",[e._v("Returns a detailed list of additional information about the transactions in the block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block or Hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - Block Height or Block Hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-9"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["1"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91"]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":[{"id":1}]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "3637333266306438333135...623737343931366363",\n "bin_data": "Cp4BCAEQppm2nwYgyI/8gLSVrsRcMkAFGTK6nxD86hfhgQX0dWzO8aYZExDN9UPm8sKkqeUbwrNliYuCJHvvdX+txINnM7+gDqtMF/1K43kc0gYC0u8uOiANfVG0wUusv0XYEvc0l+3o8i1ni8S+bmhIGT87cmKskUIgBEhSsqZwreVAfnj7KGPFHen8uWVCoHGG/jrtpruKEW1IA1ABYAESRDogQBBdW8EBBcF/1yuTqPczaeLubu5NRxS3v3vzwvFW5gFCIARIUrKmcK3lQH54+yhjxR3p/LllQqBxhv467aa7ihFtGkA2NzMyZjBkODMxNTJkMWMzZTY5NGQxZWQ2ODc0NzY0NjRjYWNjYWVkY2YyNTIyZGM1Yzc2ZDBmYjc3NDkxNmNjKugCeJxibFvmk5+enlp0YK1LUkhRYl5xYnJJZn7egSUuiSWJ7Uu9Uys9XS7HdOxY7SDPfmJJSGZu6mUGBgaG5Lc9y1YGlCblZCZ7p1YecejvOPzyp63tWeYpWS+nxBTv3biTOUTqg7vfgedPuXdbnjsmYX49a9mXA025NT4TbjQ65bQwbloQcjbQRG3ZudjjUxuL1/rlp6QimTfLcZNH0o/bie/SfiskTNm1tPrfmrrlbdfMklamXHR53XpxwSODSb1hX3Kvyb1fU+awbZVG8yaXmGqtO3wR8jPsP6y7vTW4JL/AL7WkPL8o2zm1qMSpNC8lJ/XAkpDU4hKwBxgYGBg3BhRlliWWpDrl5CdnJ2ckZuadh0oxrAT5tLgkMbfgMgMDY1v42yy2ZSEVHonFGUcUdpbM8tosNnXjS7PoLY8vVbLYrORebMzKa/80UF6S/d/TJcsDEitz8hNTjvwaueEHCAAA//+pZRGv",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-maxblockid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.maxBlockId")])]),e._v(" "),a("p",[e._v("Get the highest block ID on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-10"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block Id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The highest block on the current node")])]),e._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 774\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeysCount")])]),e._v(" "),a("p",[e._v("Get the total number of addresses on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-11"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of addresses")])]),e._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeysCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 11\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettxcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettxcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTxCount")])]),e._v(" "),a("p",[e._v("Get the total number of transactions in the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-12"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of transactions")])]),e._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149068\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettransactioncount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettransactioncount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTransactionCount")])]),e._v(" "),a("p",[e._v("Get the number of block transactions")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block or hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - block height or block hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-13"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("h4",{attrs:{id:"example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTransactionCount","id":1,"params":["efc386f7573269610a34af9cc722f775cca8183ccaa0ed7a96db61ef0bde6d1c"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 337\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockscountbynode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockscountbynode"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("p",[e._v("Get the number of node location packing blocks")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("nodePosition")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensusMode")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Consensus Mode, parameters (1: Creator Management Mode 2: DAO Governance Mode)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-14"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the node subscript packing number object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("total_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("partial_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of node subscript packing blocks")])])]),e._v(" "),a("h4",{attrs:{id:"example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksCountByNode","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "total_count": 774,\n "partial_count": 774\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-honornodescount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-honornodescount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.honorNodesCount")])]),e._v(" "),a("p",[e._v("Get number of honor nodes")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-15"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of nodes")])]),e._v(" "),a("h4",{attrs:{id:"example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.honorNodesCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 1\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemCount")])]),e._v(" "),a("p",[e._v("Number of ecosystem acquisitions")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-16"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecological number")])]),e._v(" "),a("h4",{attrs:{id:"example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 2\n }\n')])])]),a("h3",{attrs:{id:"ibax-ecosysteminfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ecosysteminfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("p",[e._v("Access to ecological information")]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ecosystem id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecological ID")])]),e._v(" "),a("h4",{attrs:{id:"return-value-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-17"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Eco-ID")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecological name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")]),e._v(" "),a("li",[a("strong",[e._v("token_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the token")]),e._v(" "),a("li",[a("strong",[e._v("total_amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the number of issues (first issue, or "),a("code",[e._v('"0"')]),e._v(" if not issued)")]),e._v(" "),a("li",[a("strong",[e._v("is_withdraw")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - destructible "),a("code",[e._v("true:destructible false:undestructible")])]),e._v(" "),a("li",[a("strong",[e._v("withdraw")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - amount of destruction ("),a("code",[e._v('"0"')]),e._v(" if not destructible, or not destroyed)")]),e._v(" "),a("li",[a("strong",[e._v("is_emission")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - may be incremented "),a("code",[e._v("true:may be incremented false:may not be incremented")])]),e._v(" "),a("li",[a("strong",[e._v("emission")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - increment ("),a("code",[e._v('"0"')]),e._v(" if no increment is available, or if no increment is available)")]),e._v(" "),a("li",[a("strong",[e._v("introduction")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco Introduction")]),e._v(" "),a("li",[a("strong",[e._v("logo")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoLogo Id (corresponds to Binary table id), available through the RESTFUL API")]),e._v(" "),a("li",[a("strong",[e._v("creator")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco-creator")])]),e._v(" "),a("h4",{attrs:{id:"example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.ecosystemInfo","id":1,"params":[1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "id": 5,\n "name": "test name",\n "digits": 6,\n "token_symbol": "test",\n "token_name": "test Coin",\n "total_amount": "10000",\n "is_withdraw": true,\n "withdraw": "100000000000900000",\n "is_emission": true,\n "emission": "100000000001000000",\n "introduction": "this is a test introduction",\n "logo": 6,\n "creator": "0666-0819-7161-7879-5186"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-appparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-appparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.appParams")])]),e._v(" "),a("p",[e._v("Returns a list of application parameters in the current or specified ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("appid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the application ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID;")]),e._v(" "),a("p",[e._v("If unspecified or 0, the parameters of the current ecosystem will be returned.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Filter the application parameter names.")]),e._v(" "),a("p",[e._v("A comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-18"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Array")]),e._v(" - List of application parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application ID")]),e._v(" "),a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Each element of the array contains the following parameters\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - parameter ID, unique;")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the parameter;")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the parameter value;")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.appParams","id":1,"params":[1,1,"role_developer,role_governancer"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "app_id": 1,\n "list": [\n {\n "id": "4",\n "name": "role_developer",\n "value": "1",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n },\n {\n "id": "5",\n "name": "role_governancer",\n "value": "2",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("p",[e._v("Get a list of ecosystem parameters")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID")]),e._v(" "),a("p",[e._v("If 0 or no such parameter, default: current ecid.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The name of the filter parameter.")]),e._v(" "),a("p",[e._v("Comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")])]),e._v(" "),a("p",[e._v("The "),a("em",[e._v("offset")]),e._v(" and "),a("em",[e._v("limit")]),e._v(" parameters are invalid when there is a filter parameter.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-19"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The id of the parameter, unique.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemParams","id":1,"params":[0,"changing_app_params,changing_language"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "9",\n "name": "changing_app_params",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n },\n {\n "id": "4",\n "name": "changing_language",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettablecount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettablecount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTableCount")])]),e._v(" "),a("p",[e._v("Returns a list of data tables for the current ecosystem.")]),e._v(" "),a("p",[e._v("Offset and number of entries can be set")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-20"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The total number of sheets of the current ecological data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table without prefix.")]),e._v(" "),a("li",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The number of entries in the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTableCount","id":1,"params":[0,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 32,\n "list": [\n {\n "name": "app_params",\n "count": "41"\n },\n {\n "name": "applications",\n "count": "7"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettable"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTable")])]),e._v(" "),a("p",[e._v("Returns information about the current ecosystem request data table.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Data table name")])]),e._v(" "),a("h4",{attrs:{id:"return-value-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-21"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("insert")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add permission to add an entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("new_column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add new field permission.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("update")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change entry permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The application id.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Conditions for changing permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of information related to data table fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the field.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The field data type.")]),e._v(" "),a("li",[a("strong",[e._v("perm")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Permission to change the value of this field.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTable","id":1,"params":["app_params"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "name": "app_params",\n "insert": "ContractConditions(\\"DeveloperCondition\\")",\n "new_column": "ContractConditions(\\"@1MainCondition\\")",\n "update": "ContractAccess(\\"@1EditAppParam\\")",\n "conditions": "ContractConditions(\\"@1MainCondition\\")",\n "app_id": "1",\n "columns": [\n {\n "name": "value",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "app_id",\n "type": "number",\n "perm": "ContractAccess(\\"@1ItemChangeAppId\\")"\n },\n {\n "name": "ecosystem",\n "type": "number",\n "perm": "false"\n },\n {\n "name": "conditions",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "permissions",\n "type": "json",\n "perm": "ContractConditions(\\"@1MainCondition\\")"\n },\n {\n "name": "name",\n "type": "varchar",\n "perm": "false"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getlist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getlist"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getList")])]),e._v(" "),a("p",[e._v("Returns the entry of the specified data table.")]),e._v(" "),a("p",[e._v("You can specify the columns to be returned.")]),e._v(" "),a("p",[e._v("You can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("You can set the query criteria.")]),e._v(" "),a("p",[e._v("Hex encoding of data tables of type "),a("em",[e._v("BYTEA")]),e._v(" (byte arrays, hashes, byte code arrays)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the data table object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("order")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Sort by, default id ASC.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("where")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Query criteria")]),e._v(" "),a("p",[e._v("Example:If you want to query id>2 and name = john")]),e._v(" "),a("p",[e._v("You can use "),a("code",[e._v('where:{"id":{"$gt":2}, "name":{"$eq": "john"}}')])]),e._v(" "),a("p",[e._v("For details, please refer to "),a("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" where syntax")],1)])]),e._v(" "),a("h4",{attrs:{id:"return-value-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-22"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - Other columns of the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getList","id":1,"params":[{"name":"@1history","where":{"$and": [{"id":{"$gt": 2}}, {"id":{"$lt": 5}}]}}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "amount": "1000000000000000000",\n "block_id": "4",\n "comment": "UTXO",\n "created_at": "1676538080433",\n "ecosystem": "1",\n "id": "3",\n "recipient_balance": "1000000000000000000",\n "recipient_id": "666...160",\n "sender_balance": "1000000000000000000",\n "sender_id": "666...3160",\n "status": "0",\n "txhash": "2ac156c0ce55c10fd485cb9d59f50e3f9b269fb9bb69571d3c2eeae033d6c6cc",\n "type": "24",\n "value_detail": "NULL"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsections"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsections"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSections")])]),e._v(" "),a("p",[e._v("Return to the tab of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Get the actions request object\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The number of entries, default 25 entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("lang")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" -")]),e._v(" "),a("p",[e._v("This field specifies the multilingual resource code or localization, e.g. "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g. "),a("em",[e._v("en-US")]),e._v(", then search in the Multilingual Resources group, "),a("strong",[e._v("default")]),e._v(": "),a("strong",[e._v("en")]),e._v(".")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-23"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of tab entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains information about all columns in the sections table.")])])]),e._v(" "),a("h4",{attrs:{id:"example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSections","id":1,"params":[{"offset":0,"limit":2}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "ecosystem": "1",\n "id": "1",\n "page": "default_page",\n "roles_access": "[]",\n "status": "2",\n "title": "Home",\n "urlname": "home"\n },\n {\n "ecosystem": "1",\n "id": "2",\n "page": "developer_index",\n "roles_access": "[]",\n "status": "1",\n "title": "Developer",\n "urlname": "developer"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getRow")])]),e._v(" "),a("p",[e._v("Returns the entries of the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v('If you do not filter, you can place a blank "".')]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("whereColumn")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Find column name (only Number type columns can be found)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-24"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("value")]),e._v("- "),a("em",[e._v("Object")]),e._v(" - object that receives column values\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - The sequence of requested columns.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getRow","id":1,"params":["@1history",4,"id,sender_id,recipient_id,amount,ecosystem,created_at","id"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "value": {\n "amount": "680388766240",\n "created_at": "1677222830899",\n "ecosystem": "1",\n "id": "296",\n "recipient_id": "6667782293976713160",\n "sender_id": "6660819716178795186"\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-systemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.systemParams")])]),e._v(" "),a("p",[e._v("Returns the list of platform parameters.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - A list of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example "),a("code",[e._v('names="name1,name2"')]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-25"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unique id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.systemParams","id":1,"params":["gap_between_blocks,honor_nodes"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "4",\n "name": "gap_between_blocks",\n "value": "2",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n },\n {\n "id": "6",\n "name": "honor_nodes",\n "value": "",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-history"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.history")])]),e._v(" "),a("p",[e._v("Returns the changed records of the entries of the specified data table in the current ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")]),e._v(" "),a("li",[a("strong",[e._v("tableId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-26"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains change records for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.history","id":1,"params":["contracts",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "conditions": "ContractConditions(\\"MainCondition\\")",\n "ecosystem": "1",\n "value": "// This contract is used to set \\"developer\\" rights....."\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagerow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagerow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystempages data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-27"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Directory.")]),e._v(" "),a("li",[a("strong",[e._v("nodesCount")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of nodes the page needs to validate")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application Id")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPageRow","id":1,"params":["default_page"]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5,\n "name": "default_page",\n "value": "If(#account_id# == #guest_account#){\\n Include(@1apps_description)\\n}.Else{\\n Include(@1profile)\\n}",\n "menu": "default_menu",\n "nodesCount": 1,\n "app_id": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenurow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenurow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenuRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem menu data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-28"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The title.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenuRow","id":1,"params":["default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 2,\n "name": "default_menu",\n "title": "default",\n "value": "\\nMenuItem.....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsnippetrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsnippetrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSnippetRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem snippet data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-29"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])]),e._v(" "),a("h4",{attrs:{id:"example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSnippetRow","id":1,"params":["welcome"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 12,\n "name": "welcome",\n "value": "Div(content-wrapper)....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getappcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getappcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAppContent")])]),e._v(" "),a("p",[e._v("Get application related information (including page, snippet, menu)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application id")])]),e._v(" "),a("h4",{attrs:{id:"return-value-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-30"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("snippets")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of code snippet information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Code snippet name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("pages")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of page information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contracts")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - an array of contract information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "snippets": [ //if not app snippets is null array,example:[]\n {\n "id": 2,\n "name": "developer_link"\n },\n {\n "id": 3,\n "name": "export_info"\n }\n ],\n "pages": [ //if not app pages is null array,example:[]\n {\n "id": 6,\n "name": "menus_list"\n },\n {\n "id": 7,\n "name": "params_edit"\n }\n ],\n "contracts": [ //if not app contracts is null array,example:[]\n {\n "id": 2,\n "name": "MainCondition"\n },\n {\n "id": 33,\n "name": "NodeOwnerCondition"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmember"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmember"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMember")])]),e._v(" "),a("p",[e._v("Get member information")]),e._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Member Information")]),e._v(" "),a("p",[a("strong",[e._v("ecosystemId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoid")]),e._v(" "),a("h4",{attrs:{id:"return-value-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-31"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - member id")]),e._v(" "),a("li",[a("strong",[e._v("member_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Name")]),e._v(" "),a("li",[a("strong",[e._v("image_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Avatar id")]),e._v(" "),a("li",[a("strong",[e._v("member_info")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Introduction")])]),e._v(" "),a("h4",{attrs:{id:"example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}}" -d \'{"jsonrpc":"2.0","method":"ibax.getMember","id":1,"params":["1497-2036-4953-3607-1121",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 14,\n "member_name": "som",\n "image_id": 5, \n "member_info": "{\\"information\\": \\"Everything will be okay in the end. If it\'s not okay, it\'s not the end.\\"}"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontracts"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContracts")])]),e._v(" "),a("p",[e._v("Get the list of contracts in the current ecosystem, you can set the offset and the number of entries.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")]),e._v(" "),a("li",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-32"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract ID.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("wallet_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The address of the account to which the contract is bound.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the application to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change the permissions of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("token_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the ecosystem where the pass is used as a payment for the contract.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContracts","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 293,\n "list": [\n {\n "address": "0000-0000-0000-0000-0000",\n "app_id": "1",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "ecosystem_id": "1",\n "id": "1",\n "name": "DeveloperCondition",\n "token_id": "1",\n "value": "// This contract is used to ...",\n "wallet_id": "0"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontractinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontractinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContractInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified contract.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("contractName")]),e._v("\t-\t"),a("em",[e._v("String")]),e._v("\t-\tThe\tname\tof\tthe\tcontract.\tThe\tformat\tis "),a("code",[e._v("@ecosystem_id%%contractName%")]),e._v(", e.g. @1contractName (the specified eco1contract name contractName) or contractName (the current eco-contract name contractName).")])]),e._v(" "),a("h4",{attrs:{id:"return-value-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-33"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the contract ID in the VM.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("state")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("walletid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the account to which the contract is bound")]),e._v(" "),a("li",[a("strong",[e._v("tokenid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the ecosystem ID of the pass that is used as the payment for the contract.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("tableid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - ID of the entry in the "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")]),e._v(" "),a("li",[a("strong",[e._v("fields")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - array containing structural information for each parameter of the contract "),a("strong",[e._v("data")]),e._v(" section:\n"),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The type of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("optional")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - parameter options, "),a("code",[e._v("true")]),e._v(" means optional parameters, "),a("code",[e._v("false")]),e._v(" means mandatory parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","id":1,"params":["@1TokensSend"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5098,\n "state": 1,\n "tableid": "98",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Amount",\n "type": "money",\n "optional": false\n },\n {\n "name": "Recipient",\n "type": "string",\n "optional": true\n },\n {\n "name": "iName",\n "type": "string",\n "optional": true\n },\n {\n "name": "Comment",\n "type": "string",\n "optional": true\n },\n {\n "name": "Ecosystem",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1TokensSend"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-sendtx"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.sendTx")])]),e._v(" "),a("p",[e._v("Receives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an error response.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Transaction data object\n"),a("ul",[a("li",[a("strong",[e._v("tx_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the content of the transaction, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-34"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - transaction hash arrays:\n"),a("ul",[a("li",[a("strong",[e._v("tx1")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction 1.")]),e._v(" "),a("li",[a("strong",[e._v("txN")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction N.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.sendTx","id":1,"params":[{"tx1":...,"txN":...}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hashes":[\n {"hash1":"hash1"},\n {"hashN":"hashN"}\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txStatus")])]),e._v(" "),a("p",[e._v("Gets the block ID and error message of the specified transaction hash. If the return value of the block ID and error text message is null, then the transaction is not yet contained in the block.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash, split using "),a("code",[e._v(",")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"return-value-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-35"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - returns the block ID if the transaction was executed successfully;")]),e._v(" "),a("p",[e._v("If the transaction execution fails, "),a("em",[e._v("blockid")]),e._v(" will be "),a("code",[e._v("0")]),e._v(", and the corresponding block ID will be returned if the transaction execution error is penalized.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("result")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("errmsg")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Returns an error text message if the execution of the transaction failed.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Error type")]),e._v(" "),a("li",[a("strong",[e._v("error")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - error message")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("penalty")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - if the transaction execution fails, (0: no penalty 1: penalty)")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.txStatus","id":1,"params":["cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9,4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": "793",\n "result": "",\n "penalty": 0\n },\n "cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9": {\n "blockid": "793",\n "errmsg": {\n "type": "warning",\n "error": "platform ecosystem can not be burning Tokens"\n },\n "result": "",\n "penalty": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfo")])]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. If optional parameters are specified, the contract name and its associated parameters can also be returned.")]),e._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-36"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction.\nIf the value is "),a("code",[e._v("0")]),e._v(", no transactions are found for this hash.\nIf the transaction occurred on the current node, it can be obtained via "),a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of node confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Returns contract details if "),a("code",[e._v("contentinfo=true")]),e._v(" is specified. null if not specified")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])]),e._v(" "),a("h4",{attrs:{id:"example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.txInfo","id":1,"params":["020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "blockid": "796",\n "confirm": 0,\n "data": {\n "block_id": 796,\n "block_hash": "bccbc3cf47b49bee5fb7321810884db49b73f5114b0a6fcd234dd3fdf9c22ef4",\n "address": "0666-7782-2939-7671-3160",\n "ecosystem": 2,\n "hash": "020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "1000000000000",\n "Recipient": "0666-7782-2939-7671-3160"\n },\n "created_at": 1678774455841,\n "size": "213.00B",\n "status": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfomultiple"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("p",[e._v("Returns transaction-related information for the specified hash list.")]),e._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - A list of transaction hashes.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-37"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("results")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Data dictionary with transaction hash as key and transaction details as value.\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction. if the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("li",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - If "),a("code",[e._v("contentinfo=true")]),e._v("is specified, the contract details are returned to this parameter. null when not specified\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v("- "),a("em",[e._v("Number")]),e._v(" - Block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":[["1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284","4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"],true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "results": {\n "1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284": {\n "blockid": 0,\n "confirm": 0,\n "data": null\n },\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": 793,\n "confirm": 0,\n "data": {\n "block_id": 793,\n "block_hash": "ef3b2f2e18662e0b8bba136a209e30c5aae76d9a82e0b21209786f62fe5676e4",\n "address": "0666-0819-7161-7879-5186",\n "ecosystem": 1,\n "hash": "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "200",\n "Comment": "Hello Dear",\n "Recipient": "1196-2490-5275-7101-3496"\n },\n "created_at": 1678765099072,\n "size": "297.00B",\n "status": 0\n }\n }\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagevalidatorscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. @1params_list (specifying ecology 1 page name params_list) or params_list (current ecology page name params_list)")])]),e._v(" "),a("h4",{attrs:{id:"return-value-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-38"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("validate_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Specifies the number of nodes to be validated by the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "validate_count": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpage"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPage")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified page name, which is the result of processing by the templating engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the page with the ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".")]),e._v(" "),a("p",[e._v("If you don't have an ecosystem ID, the default is to find the current ecological page, e.g. "),a("code",[e._v("main_page")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-39"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the menu to which the page belongs.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("menutree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree of the page's menus.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - page JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPage","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "menu": "developer_menu",\n "menutree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ],\n "tree": [\n {\n ....\n }\n ...\n ],\n "nodesCount": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenu"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenu")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified menu name, which is the result of processing by the template engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\n"),a("blockquote",[a("p",[e._v("Menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%menu_name%")]),e._v(", e.g.\n"),a("code",[e._v("@1main_menu")]),e._v(".\nIf you don't bring the ecosystem ID, the menu of the current ecology will be found by default, for example\n"),a("code",[e._v("main_menu")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-40"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the menu title.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Menu JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenu","id":1,"params":["@1default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "title": "default",\n "tree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsource"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSource")])]),e._v(" "),a("p",[e._v("Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nPage name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", for example "),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, the default is to find the current ecological page e.g. "),a("code",[e._v("main_page")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-41"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree for the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSource","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": [\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1applications"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"name\\": \\"System\\"}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "setvar",\n "attr": {\n "name": "role_developer_id",\n "value": "AppParam(Ecosystem: #ecosystem_id#, App: #application_id#, Name: role_developer)"\n }\n },\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1roles_participants"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"$and\\": [{\\"role->id\\": {\\"$in\\": [#role_developer_id#]}}, {\\"role->id\\": \\"#role_id#\\"}], \\"member->account\\": \\"#account_id#\\", \\"deleted\\": 0}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "if",\n "attr": {\n "condition": "#developer_access_id#>0"\n },\n "children": [\n {\n "tag": "setvar",\n "attr": {\n "name": "this_page",\n "value": "@1params_list"\n }\n }\n\t\t\t\t\t\t...\n ],\n "tail": [\n {\n "tag": "else",\n "children": [\n {\n "tag": "settitle",\n "attr": {\n "title": "$@1ecosystem_parameters$"\n }\n }\n\t\t\t\t\t\t\t\t...\n ]\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagehash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagehash"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageHash")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page is not found.")]),e._v(" "),a("p",[e._v("To receive the correct hash when making requests to other nodes, you must also pass the\n"),a("em",[e._v("ecosystem,key_id,role_id")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the page with the ecosystem ID. The format is "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. "),a("code",[e._v("@1main_page")]),e._v(", you can specify the eco ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Get the specified page object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")]),e._v(" "),a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The role ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-42"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" -\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageHash","id":1,"params":["@1params_list",0,{"role_id":"1","key_id":"-6484253546138538120"}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "fc5ed3b5e879dd5521dfb792e815019bd8411851e850e75a3590d71e950a0465"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContent")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" Specified as "),a("code",[e._v("true")]),e._v(", this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("template")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page code.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("source")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - If specified as "),a("code",[e._v("true")]),e._v(", the JSON object tree does not perform any functions and receives data.")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-43"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - JSON object tree.")])]),e._v(" "),a("h4",{attrs:{id:"example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-43"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getContent","id":1,"params":[{"template","..."source":true}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": {\n "type":"......", \n "children": [\n {...},\n {...}\n ]\n }\n }\n }\n \n')])])]),a("h3",{attrs:{id:"ibax-getblockinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlockInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified block ID.")]),e._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-44"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block hash value.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollbacks_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensus_mode")]),e._v(" "),a("em",[e._v("Number")]),e._v(" - Consensus mode, parameters (1: creator management mode 2: DAO governance mode)")])])]),e._v(" "),a("h4",{attrs:{id:"example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-44"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlockInfo","id":1,"params":[12]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "Hl+/VvYFFu4iq4zLrRDGHBhm7DM7llEAfEJyaX2Q3is=",\n "key_id": 6667782293976713160,\n "time": 1677134955,\n "tx_count": 1,\n "rollbacks_hash": "o37QAighKMb8WqbEHAqCQb5bOfMvOqV0WoTaN631q74=",\n "node_position": 0,\n "consensus_mode": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getconfig"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getConfig")])]),e._v(" "),a("p",[e._v("Get the host address and port of centrifugo")]),e._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("option")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Configuration item")]),e._v(" "),a("ol",[a("li",[e._v('"centrifugo" - messaging service')])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-45"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("centrifugo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" host address and port of centrifugo Result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-45"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getConfig","id":1,"params":["centrifugo"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "centrifugo":"http://127.0.0.1:8100"\n }\n }\n')])])]),a("h3",{attrs:{id:"net-getnetwork"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-getnetwork"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.getNetwork")])]),e._v(" "),a("p",[e._v("Get node information")]),e._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-46"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")]),e._v(" "),a("li",[a("strong",[e._v("centrifugo_url")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - centrifugo message service address")]),e._v(" "),a("li",[a("strong",[e._v("test")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether it is a test chain")]),e._v(" "),a("li",[a("strong",[e._v("private")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether the chain is private")]),e._v(" "),a("li",[a("strong",[e._v("honor_nodes")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - List of honor nodes\n"),a("ul",[a("li",[a("strong",[e._v("tcp_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - tcp address")]),e._v(" "),a("li",[a("strong",[e._v("api_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - api address")]),e._v(" "),a("li",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - node public key")]),e._v(" "),a("li",[a("strong",[e._v("unban_time")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unlock time")])])])]),e._v(" "),a("h4",{attrs:{id:"example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-46"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.getNetwork","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "network_id": "1",\n "centrifugo_url": "127.0.0.1",\n "test": false,\n "private": false,\n "honor_nodes": [\n {\n "tcp_address": "127.0.0.1:7078",\n "api_address": "http://127.0.0.1:7078",\n "public_key": "049a41b24862f8db61ee66fb206094baa57bfeac7ea786d63662a964d144eb85d1a0e230928d56f46dd61eefac7640b6aa2883b2445c7b2adc0e581f983ff0aedb",\n "unban_time": "-62135596800"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"net-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-status"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.status")])]),e._v(" "),a("p",[e._v("Get the current node status")]),e._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-47"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - Node Status\n"node server status is running" - the node is running\n"node server is updating" - node is being updated\n"node server is stopped" - node suspended')])]),e._v(" "),a("h4",{attrs:{id:"example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-47"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.status","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"rpc-modules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-modules"}},[e._v("#")]),e._v(" "),a("strong",[e._v("rpc.modules")])]),e._v(" "),a("p",[e._v("Get the currently registered JSON-RPC interface")]),e._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-48"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Array")]),e._v(" - JSON-RPC interface array")])]),e._v(" "),a("h4",{attrs:{id:"example-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-48"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"rpc.modules","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n "net.getNetwork",\n "ibax.getAppContent",\n "ibax.honorNodesCount",\n "ibax.maxBlockId",\n "ibax.detailedBlock",\n "ibax.getConfig",\n "ibax.getTableCount",\n "ibax.getMenu"\n ]\n }\n')])])]),a("h3",{attrs:{id:"admin-startjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-startjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.startJsonRpc")])]),e._v(" "),a("p",[e._v("Can be used to switch between JSON-RPC change namespace services")]),e._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("methods")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - JSON-RPC module, default: "ibax,net"')]),e._v(" "),a("h4",{attrs:{id:"return-value-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-49"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-49"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.startJsonRpc","id":1,"params":["ibax,net,admin"]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"admin-stopjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-stopjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.stopJsonRpc")])]),e._v(" "),a("p",[e._v("Close the JSON-RPC service")]),e._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-50"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-50"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.stopJsonRpc","id":1,"params":[]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"debug-getnodebanstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getnodebanstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getNodeBanStat")])]),e._v(" "),a("p",[e._v("Get node disable status")]),e._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-51"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript\n"),a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Disable status, "),a("code",[e._v("true")]),e._v(" ban status, "),a("code",[e._v("false")]),e._v(" not disabled")]),e._v(" "),a("h4",{attrs:{id:"example-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-51"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getNodeBanStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n {\n "node_position": 0,\n "status": true\n }\n ]\n }\n')])])]),a("h3",{attrs:{id:"debug-getmemstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getmemstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getMemStat")])]),e._v(" "),a("p",[e._v("Get the current node memory usage")]),e._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-52"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("alloc")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes requested and still in use")]),e._v(" "),a("li",[a("strong",[e._v("sys")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes fetched from the system")])]),e._v(" "),a("h4",{attrs:{id:"example-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-52"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getMemStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "alloc": 11537432,\n "sys": 35329248\n }\n }\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{503:function(e,t,a){"use strict";a.r(t);var n=a(51),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"json-rpc-application-programming-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-application-programming-interface"}},[e._v("#")]),e._v(" JSON-RPC Application Programming Interface")]),e._v(" "),a("p",[e._v("In order for a software application to interact with the IBAX blockchain (fetch block data or send transactions to the network), it must be connected to an IBAX network node.")]),e._v(" "),a("p",[e._v("Due to the generality and extensibility of the original REST API interface, it will become more and more complex with more and more interfaces and different clients. We realize the importance of interface unification to ensure that all clients can use the same set of specifications, regardless of the specific node and client implementation.")]),e._v(" "),a("p",[e._v("JSON-RPC is a stateless, lightweight remote procedure call (RPC) protocol. It defines a number of data structures and their processing rules. It is transport independent, as these concepts can be used in the same process, via an interface, hypertext transfer protocol, or in many different messaging environments. It uses JSON (RFC 4627) as the data format.")]),e._v(" "),a("p",[e._v("JSON-RPC is compatible with most of the REST API interfaces, retaining the original REST API interface, the client using the REST API interface can easily transfer to the JSON-RPC interface, part of the interface")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])],1)]),e._v(" "),a("p",[e._v("Available through the REST API interface.")]),e._v(" "),a("h2",{attrs:{id:"client-side-implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-side-implementation"}},[e._v("#")]),e._v(" Client-side implementation")]),e._v(" "),a("p",[e._v("Each client can use a different programming language when implementing the JSON-RPC specification, and you can use the\n"),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("GO-SDK"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"curl-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curl-example"}},[e._v("#")]),e._v(" Curl example")]),e._v(" "),a("p",[e._v("The following provides examples of using the JSON RPC API by making curl requests to IBAX nodes. Each example includes a description of the particular endpoint, its parameters, the return type, and a working example of how it should be used.")]),e._v(" "),a("p",[e._v('Curl requests may return an error message related to the content type. This is because the --data option sets the content type to application/x-www-form-urlencoded. If your request has this problem, set the header manually by placing -H "Content-Type: application/json" at the beginning of the call. These examples also do not include the URL/Internet Protocol and port combination that must be the last parameter of the curl (e.g. 127.0.0.1:7079 A full curl request with this additional data takes the form of')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","params":[],"id":1}\' http://127.0.0.1:7079\t\n')])])]),a("h2",{attrs:{id:"covenant"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#covenant"}},[e._v("#")]),e._v(" Covenant")]),e._v(" "),a("h3",{attrs:{id:"hex"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hex"}},[e._v("#")]),e._v(" Hex")]),e._v(" "),a("p",[a("strong",[e._v("Hexadecimal code")])]),e._v(" "),a("p",[e._v("When encoding byte arrays, hashes, and bytecode arrays: the encoding is hexadecimal, two hexadecimal digits per byte.")]),e._v(" "),a("h3",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("Content-Type: application/json")])]),e._v(" "),a("h3",{attrs:{id:"special-markers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-markers"}},[e._v("#")]),e._v(" Special markers")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("This field is an optional parameter.")]),e._v(" "),a("p",[e._v("If there are multiple "),a("code",[e._v("Omitempty")]),e._v(" fields in a row,\nBut only want to pass the value of a certain field, then you need to set the unwanted field to null (the field type null value), Example:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Name")]),e._v(" "),a("li",[a("strong",[e._v("column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Filter column names")])]),e._v(" "),a("p",[e._v("If only the name value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0, "testname"]')]),e._v(" - "),a("em",[e._v("Number")]),e._v(" null value is 0")]),e._v(" "),a("p",[e._v("If only the column value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0,"", "title,page"]')]),e._v(" - "),a("em",[e._v("String")]),e._v(' empty value for ""')]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("Authorization header, add Authorization to the request header, example:")]),e._v(" "),a("p",[a("strong",[e._v("name")]),e._v(" : Authorization "),a("strong",[e._v("value")]),e._v(" : Bearer +"),a("a",{attrs:{href:"#ibax-login"}},[e._v("login token")])]),e._v(" "),a("p",[e._v("Example:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","params":["@1TokensSend"],"id":1}\' http://127.0.0.1:7079\n\n')])])]),a("h4",{attrs:{id:"accountorkeyid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#accountorkeyid"}},[e._v("#")]),e._v(" AccountOrKeyId")]),e._v(" "),a("p",[e._v("For the account address parameter, you can use two formats of addresses, for example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v(" - Account Address "),a("code",[e._v('"XXXX-XXXX-XXXX-XXXX-XXXX"')]),e._v(" or Account Id "),a("code",[e._v('"64842...538120"')]),e._v(' .538120"`')])])]),e._v(" "),a("li",[a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Address object")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Account Id, Example: "),a("code",[e._v('{"key_id":-64842\t38120}')])]),e._v(" "),a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account address, Example: "),a("code",[e._v('{"account": "1196-... -\t-... -3496"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Account Id is preferred when both account address and account Id exist")]),e._v(".")])])]),e._v(" "),a("h4",{attrs:{id:"blockorhash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockorhash"}},[e._v("#")]),e._v(" BlockOrHash")]),e._v(" "),a("p",[e._v("Block height or block HASH, example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v("\t-\tBlock\tHeight\t"),a("code",[e._v('"100"')]),e._v("\tor\tBlock\tHASH"),a("code",[e._v('"4663aa47...a60753c18d9ba9cb4"')])])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - Block information object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height, example: "),a("code",[e._v('{"id":2}')])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v("\t-\t"),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v("\tString")]),e._v("\t-\tBlock\tHASH,\tExample:\t"),a("code",[e._v('{"hash": "d36b8996c\tc616d3043a0d02a0f59"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Block Height and Block HASH can only choose one")]),e._v(".")])])])])]),e._v(" "),a("h3",{attrs:{id:"batch-requests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#batch-requests"}},[e._v("#")]),e._v(" Batch requests")]),e._v(" "),a("p",[e._v("This feature can be used to reduce network latency, especially when acquiring a large number of largely independent data objects.")]),e._v(" "),a("p",[e._v("The following is an example of obtaining the highest block and total number of transactions:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'[{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]},{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":2,"params":[]}]\' http://127.0.0.1:7079\n\n //Response\n [\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149100\n },\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": 797\n }\n ]\n')])])]),a("h3",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Returns status "),a("code",[e._v("200")]),e._v(" in case the request is executed successfully.")]),e._v(" "),a("p",[e._v("If an error occurs, a JSON object with the following fields will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("jsonrpc")]),e._v(" "),a("p",[e._v("Error identifier.")])]),e._v(" "),a("li",[a("p",[e._v("id")]),e._v(" "),a("p",[e._v("Error text message.")])]),e._v(" "),a("li",[a("p",[e._v("error")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("code")]),e._v(" "),a("p",[e._v("Response Status Code")])]),e._v(" "),a("li",[a("p",[e._v("message")]),e._v(" "),a("p",[e._v("Response Status Description")])])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "jsonrpc": "2.0",\n "id": 1,\n "error": {\n "code": -32014,\n "message": "Unauthorized"\n }\n}\n')])])]),a("h2",{attrs:{id:"json-rpc-namespaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-namespaces"}},[e._v("#")]),e._v(" JSON-RPC Namespaces")]),e._v(" "),a("h3",{attrs:{id:"ibax-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-namespace"}},[e._v("#")]),e._v(" ibax Namespace")]),e._v(" "),a("h4",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getuid"}},[e._v("ibax.getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-login"}},[e._v("ibax.login")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getauthstatus"}},[e._v("ibax.getAuthStatus")])])]),e._v(" "),a("h4",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" server-side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getversion"}},[e._v("ibax.getVersion")])])]),e._v(" "),a("h4",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getbalance"}},[e._v("ibax.getBalance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockstxinfo"}},[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblocks"}},[e._v("ibax.detailedBlocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyinfo"}},[e._v("ibax.getKeyInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblock"}},[e._v("ibax.detailedBlock")])])]),e._v(" "),a("h4",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-maxblockid"}},[e._v("ibax.maxBlockId")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyscount"}},[e._v("ibax.getKeysCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettxcount"}},[e._v("ibax.getTxCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettransactioncount"}},[e._v("ibax.getTransactionCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockscountbynode"}},[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-honornodescount"}},[e._v("ibax.honorNodesCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemcount"}},[e._v("ibax.getEcosystemCount")])])]),e._v(" "),a("h4",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-ecosysteminfo"}},[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-appparams"}},[e._v("ibax.appParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemparams"}},[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettablecount"}},[e._v("ibax.getTableCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettable"}},[e._v("ibax.getTable")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getlist"}},[e._v("ibax.getList")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsections"}},[e._v("ibax.getSections")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getrow"}},[e._v("ibax.getRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-systemparams"}},[e._v("ibax.systemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-history"}},[e._v("ibax.history")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagerow"}},[e._v("ibax.getPageRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenurow"}},[e._v("ibax.getMenuRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsnippetrow"}},[e._v("ibax.getSnippetRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getappcontent"}},[e._v("ibax.getAppContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmember"}},[e._v("ibax.getMember")])])]),e._v(" "),a("h4",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getcontracts"}},[e._v("ibax.getContracts")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-sendtx"}},[e._v("ibax.sendTx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfo"}},[e._v("ibax.txInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfomultiple"}},[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpage"}},[e._v("ibax.getPage")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenu"}},[e._v("ibax.getMenu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsource"}},[e._v("ibax.getSource")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagehash"}},[e._v("ibax.getPageHash")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontent"}},[e._v("ibax.getContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockinfo"}},[e._v("ibax.getBlockInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getconfig"}},[e._v("ibax.getConfig")])])]),e._v(" "),a("h3",{attrs:{id:"net-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-namespace"}},[e._v("#")]),e._v(" net Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#net-getnetwork"}},[e._v("net.getNetwork")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#net-status"}},[e._v("net.status")])])]),e._v(" "),a("h3",{attrs:{id:"rpc-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-namespace"}},[e._v("#")]),e._v(" rpc Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rpc-modules"}},[e._v("rpc.modules")])])]),e._v(" "),a("h3",{attrs:{id:"admin-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-namespace"}},[e._v("#")]),e._v(" admin Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#admin-startjsonrpc"}},[e._v("admin.startJsonRpc")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#admin-stopjsonrpc"}},[e._v("admin.stopJsonRpc")])])]),e._v(" "),a("h3",{attrs:{id:"debug-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-namespace"}},[e._v("#")]),e._v(" debug Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#debug-getnodebanstat"}},[e._v("debug.getNodeBanStat")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#debug-getmemstat"}},[e._v("debug.getMemStat")])])]),e._v(" "),a("h2",{attrs:{id:"json-rpc-interface-methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-interface-methods"}},[e._v("#")]),e._v(" JSON-RPC Interface Methods")]),e._v(" "),a("h3",{attrs:{id:"ibax-getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getuid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getUid")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Generate a temporary JWT token,\twhich needs to be passed to "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(" when calling "),a("strong",[a("a",{attrs:{href:"#ibax-login"}},[e._v("login")])])]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("uid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The signature number.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - temporary token passed during login (temporary token has a 5 second lifespan).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("cryptoer")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Elliptic curve algorithm.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hasher")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - hash algorithm.")])])]),e._v(" "),a("p",[e._v("In the case that no authorization is required(the request contains "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(", the following message will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Expiration time.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])])]),e._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response1\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "uid": "5823391950439015186",\n "token": "ey....",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response2\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "expire": "7h59m49.5361126s",\n "ecosystem_id": "1",\n "key_id": "6667782293976713160",\n "address": "0666-7782-2939-7671-3160",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-login"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.login")])]),e._v(" "),a("p",[e._v("User authentication. "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"#ibax-getuid"}},[a("strong",[e._v("ibax.getUid")])]),e._v(" command should be called first in order to receive the unique value and sign it.\nThe temporary JWT token for getuid needs to be passed in the request header.\nIf the request is successful, the token received in the response is contained in "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication call object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID. if not specified, defaults to the first ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The lifecycle of the JWT token in seconds, default is 28800,8 hours.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Hexadecimal account public key.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -")]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("signature")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nUse the private key to sign the uid received by getuid.")]),e._v(" "),a("p",[e._v("Signature data content:LOGIN+{$network_id}+uid")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID, default role 0")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-2"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - JWT token.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("notify_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The notification ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isnode")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isowner")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the creator of this ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("clb")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the logged-in ecosystem is a CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("timestamp")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - current timestamp")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" list of roles, if there are no roles, the field is nil")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID")]),e._v(" "),a("li",[a("strong",[e._v("role_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Role name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.login","params":[{"ecosystem_id":1,"public_key":"04....","signature","46...","role_id":0}],"id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "token": "ey...",\n "ecosystem_id": "1",\n "key_id": "6660819716178795186",\n "account": "0666-xxxx-xxxx-xxxx-5186",\n "notify_key": "ey....",\n "isnode": false,\n "isowner": false,\n "clb": false,\n "timestamp": "1678336163",\n "roles": nil //[{"role_id": 1, "role_name": "Developer"},{"role_id": 2, "role_name": "DevelopGovernancerer"}]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getauthstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getauthstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAuthStatus")])]),e._v(" "),a("p",[e._v("User authentication status\n"),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-3"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication status object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("active")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - The current user authentication status. Values: "),a("code",[e._v("true,false")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("exp")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Token validity cutoff timestamp")])])]),e._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getAuthStatus","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "active": true,\n "exp": 1678354136\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getversion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getversion"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getVersion")])]),e._v(" "),a("p",[e._v("Returns the current server version.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-4"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("vesion")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - version number ("),a("code",[e._v("big Version")]),e._v(" + "),a("code",[e._v("branch name")]),e._v(" + "),a("code",[e._v("git commit")]),e._v(" + "),a("code",[e._v("time")]),e._v(" + "),a("code",[e._v("node status")]),e._v(")")])]),e._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getVersion","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "1.3.0 branch.main commit.b57d4194 time.2023-03-08-09:30:29(UTC) node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"ibax-getbalance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getbalance"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBalance")])]),e._v(" "),a("p",[e._v("Get the account address balance.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("key_id or account")]),e._v(" - "),a("a",{attrs:{href:"#accountorkeyid"}},[a("em",[e._v("AccountOrKeyId")])]),e._v(" - account address "),a("code",[e._v("XXXX- XXXX-XXXX-XXXX-XXXX")]),e._v(" or account ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default 1")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-5"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the balance object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the minimum unit of the contract account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("total")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the total balance of the minimum unit account (amount + utxo).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("utxo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Minimum unit UTXO account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")])])]),e._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["648...8120"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["1196-...-...-...-3496",1]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":[{"key_id":{$key_id}},1]}\' http://127.0.0.1:7079 //keyId or account\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "amount": "9915319240441612",\n "digits": 12,\n "total": "9915319240441612",\n "utxo": "0",\n "token_symbol": "IBXC"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockstxinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockstxinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("p",[e._v("Returns a list containing additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the starting block height to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-6"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block information object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height")])]),e._v(" "),a("li",[a("p",[e._v("List of transactions in the block and additional information for each transaction:")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" -\nFor the first block, it is the account address of the first block that signed the transaction.")]),e._v(" "),a("p",[e._v("For all other blocks, it is the address of the account that signed the transaction.")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksTxInfo","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": [ //block_id\n {\n "hash": "uXSaSrMWlbHpNlu049J5BDypC6MzBQ0/5VEfGQf+5aQ=",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160\n }\n ],\n "2": [ //block_id\n {\n "hash": "r8U9IKjtZ5Be5D4ak3zxLlDwn36CTdfIAsVvQhx7P3w=",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblocks"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlocks")])]),e._v(" "),a("p",[e._v("Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the starting block to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-7"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height\n"),a("ul",[a("li",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")]),e._v(" "),a("li",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")]),e._v(" "),a("li",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")]),e._v(" "),a("li",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")]),e._v(" "),a("li",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlocks","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": { //block id\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f73497ede8f22d678bc4be6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "36373332663064383331353264316333653639346431656436383734373634363463616363616564636632353232646335633736643066623737343931366363",\n "bin_data": "Cp4BCAEQppm...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n },\n "2": { //block id\n "header": {\n "block_id": 2,\n "time": 1676536235,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "dd13a30661d35e01df82027a6e6607eb47ee00765d69767dbb99e151676c2c96",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676536235,\n "tx_count": 1,\n "size": "1.53KiB",\n "rollbacks_hash": "9041312d69e6bcd37c91a2bfa066abaeb53b8398708937a618a89960bfadab3d",\n "merkle_root": "65366537383931353662613230356565396466353061316538656538643636323332316636616265623764633539616166346635343030383135386538643130",\n "bin_data": "Cp4BCAIQq9O...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "afc53d20a8ed67905ee43e1a937cf12e50f09f7e824dd7c802c56f421c7b3f7c",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160,\n "time": 1676536233945,\n "type": 3,\n "size": "390.00B"\n }\n ]\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeyInfo")])]),e._v(" "),a("p",[e._v("Returns a list of ecosystems with roles that are registered to the specified address.")]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")])]),e._v(" "),a("h4",{attrs:{id:"return-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-8"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Specify the address eco-list object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystems")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Eco-List\n"),a("ul",[a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - list of roles.\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - role id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Character name")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeyInfo","id":1,"params":["0666-XXXX-XXXX-XXXX-5186"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "account": "0666-XXXX-XXXX-XXXX-5186",\n "ecosystems": [\n {\n "ecosystem": "1",\n "name": "platform ecosystem",\n "digits": 12,\n "roles": [\n {\n "id": "1",\n "name": "Developer"\n },\n {\n "id": "2",\n "name": "Governancer"\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblock"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlock")])]),e._v(" "),a("p",[e._v("Returns a detailed list of additional information about the transactions in the block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block or Hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - Block Height or Block Hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-9"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["1"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91"]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":[{"id":1}]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "3637333266306438333135...623737343931366363",\n "bin_data": "Cp4BCAEQppm2nwYgyI/8gLSVrsRcMkAFGTK6nxD86hfhgQX0dWzO8aYZExDN9UPm8sKkqeUbwrNliYuCJHvvdX+txINnM7+gDqtMF/1K43kc0gYC0u8uOiANfVG0wUusv0XYEvc0l+3o8i1ni8S+bmhIGT87cmKskUIgBEhSsqZwreVAfnj7KGPFHen8uWVCoHGG/jrtpruKEW1IA1ABYAESRDogQBBdW8EBBcF/1yuTqPczaeLubu5NRxS3v3vzwvFW5gFCIARIUrKmcK3lQH54+yhjxR3p/LllQqBxhv467aa7ihFtGkA2NzMyZjBkODMxNTJkMWMzZTY5NGQxZWQ2ODc0NzY0NjRjYWNjYWVkY2YyNTIyZGM1Yzc2ZDBmYjc3NDkxNmNjKugCeJxibFvmk5+enlp0YK1LUkhRYl5xYnJJZn7egSUuiSWJ7Uu9Uys9XS7HdOxY7SDPfmJJSGZu6mUGBgaG5Lc9y1YGlCblZCZ7p1YecejvOPzyp63tWeYpWS+nxBTv3biTOUTqg7vfgedPuXdbnjsmYX49a9mXA025NT4TbjQ65bQwbloQcjbQRG3ZudjjUxuL1/rlp6QimTfLcZNH0o/bie/SfiskTNm1tPrfmrrlbdfMklamXHR53XpxwSODSb1hX3Kvyb1fU+awbZVG8yaXmGqtO3wR8jPsP6y7vTW4JL/AL7WkPL8o2zm1qMSpNC8lJ/XAkpDU4hKwBxgYGBg3BhRlliWWpDrl5CdnJ2ckZuadh0oxrAT5tLgkMbfgMgMDY1v42yy2ZSEVHonFGUcUdpbM8tosNnXjS7PoLY8vVbLYrORebMzKa/80UF6S/d/TJcsDEitz8hNTjvwaueEHCAAA//+pZRGv",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-maxblockid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.maxBlockId")])]),e._v(" "),a("p",[e._v("Get the highest block ID on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-10"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block Id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The highest block on the current node")])]),e._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 774\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeysCount")])]),e._v(" "),a("p",[e._v("Get the total number of addresses on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-11"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of addresses")])]),e._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeysCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 11\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettxcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettxcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTxCount")])]),e._v(" "),a("p",[e._v("Get the total number of transactions in the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-12"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of transactions")])]),e._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149068\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettransactioncount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettransactioncount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTransactionCount")])]),e._v(" "),a("p",[e._v("Get the number of block transactions")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block or hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - block height or block hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-13"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("h4",{attrs:{id:"example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTransactionCount","id":1,"params":["efc386f7573269610a34af9cc722f775cca8183ccaa0ed7a96db61ef0bde6d1c"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 337\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockscountbynode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockscountbynode"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("p",[e._v("Get the number of node location packing blocks")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("nodePosition")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensusMode")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Consensus Mode, parameters (1: Creator Management Mode 2: DAO Governance Mode)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-14"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the node subscript packing number object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("total_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("partial_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of node subscript packing blocks")])])]),e._v(" "),a("h4",{attrs:{id:"example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksCountByNode","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "total_count": 774,\n "partial_count": 774\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-honornodescount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-honornodescount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.honorNodesCount")])]),e._v(" "),a("p",[e._v("Get number of honor nodes")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-15"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of nodes")])]),e._v(" "),a("h4",{attrs:{id:"example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.honorNodesCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 1\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemCount")])]),e._v(" "),a("p",[e._v("Number of ecosystem acquisitions")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-16"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecological number")])]),e._v(" "),a("h4",{attrs:{id:"example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 2\n }\n')])])]),a("h3",{attrs:{id:"ibax-ecosysteminfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ecosysteminfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("p",[e._v("Access to ecological information")]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ecosystem id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecological ID")])]),e._v(" "),a("h4",{attrs:{id:"return-value-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-17"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Eco-ID")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecological name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")]),e._v(" "),a("li",[a("strong",[e._v("token_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the token")]),e._v(" "),a("li",[a("strong",[e._v("total_amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the number of issues (first issue, or "),a("code",[e._v('"0"')]),e._v(" if not issued)")]),e._v(" "),a("li",[a("strong",[e._v("is_withdraw")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - destructible "),a("code",[e._v("true:destructible false:undestructible")])]),e._v(" "),a("li",[a("strong",[e._v("withdraw")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - amount of destruction ("),a("code",[e._v('"0"')]),e._v(" if not destructible, or not destroyed)")]),e._v(" "),a("li",[a("strong",[e._v("is_emission")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - may be incremented "),a("code",[e._v("true:may be incremented false:may not be incremented")])]),e._v(" "),a("li",[a("strong",[e._v("emission")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - increment ("),a("code",[e._v('"0"')]),e._v(" if no increment is available, or if no increment is available)")]),e._v(" "),a("li",[a("strong",[e._v("introduction")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco Introduction")]),e._v(" "),a("li",[a("strong",[e._v("logo")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoLogo Id (corresponds to Binary table id), available through the RESTFUL API")]),e._v(" "),a("li",[a("strong",[e._v("creator")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco-creator")])]),e._v(" "),a("h4",{attrs:{id:"example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.ecosystemInfo","id":1,"params":[1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "id": 5,\n "name": "test name",\n "digits": 6,\n "token_symbol": "test",\n "token_name": "test Coin",\n "total_amount": "10000",\n "is_withdraw": true,\n "withdraw": "100000000000900000",\n "is_emission": true,\n "emission": "100000000001000000",\n "introduction": "this is a test introduction",\n "logo": 6,\n "creator": "0666-0819-7161-7879-5186"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-appparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-appparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.appParams")])]),e._v(" "),a("p",[e._v("Returns a list of application parameters in the current or specified ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("appid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the application ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID;")]),e._v(" "),a("p",[e._v("If unspecified or 0, the parameters of the current ecosystem will be returned.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Filter the application parameter names.")]),e._v(" "),a("p",[e._v("A comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-18"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Array")]),e._v(" - List of application parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application ID")]),e._v(" "),a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Each element of the array contains the following parameters\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - parameter ID, unique;")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the parameter;")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the parameter value;")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.appParams","id":1,"params":[1,1,"role_developer,role_governancer"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "app_id": 1,\n "list": [\n {\n "id": "4",\n "name": "role_developer",\n "value": "1",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n },\n {\n "id": "5",\n "name": "role_governancer",\n "value": "2",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("p",[e._v("Get a list of ecosystem parameters")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID")]),e._v(" "),a("p",[e._v("If 0 or no such parameter, default: current ecid.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The name of the filter parameter.")]),e._v(" "),a("p",[e._v("Comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")])]),e._v(" "),a("p",[e._v("The "),a("em",[e._v("offset")]),e._v(" and "),a("em",[e._v("limit")]),e._v(" parameters are invalid when there is a filter parameter.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-19"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The id of the parameter, unique.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemParams","id":1,"params":[0,"changing_app_params,changing_language"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "9",\n "name": "changing_app_params",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n },\n {\n "id": "4",\n "name": "changing_language",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettablecount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettablecount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTableCount")])]),e._v(" "),a("p",[e._v("Returns a list of data tables for the current ecosystem.")]),e._v(" "),a("p",[e._v("Offset and number of entries can be set")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-20"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The total number of sheets of the current ecological data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table without prefix.")]),e._v(" "),a("li",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The number of entries in the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTableCount","id":1,"params":[0,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 32,\n "list": [\n {\n "name": "app_params",\n "count": "41"\n },\n {\n "name": "applications",\n "count": "7"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettable"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTable")])]),e._v(" "),a("p",[e._v("Returns information about the current ecosystem request data table.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Data table name")])]),e._v(" "),a("h4",{attrs:{id:"return-value-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-21"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("insert")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add permission to add an entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("new_column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add new field permission.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("update")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change entry permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The application id.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Conditions for changing permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of information related to data table fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the field.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The field data type.")]),e._v(" "),a("li",[a("strong",[e._v("perm")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Permission to change the value of this field.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTable","id":1,"params":["app_params"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "name": "app_params",\n "insert": "ContractConditions(\\"DeveloperCondition\\")",\n "new_column": "ContractConditions(\\"@1MainCondition\\")",\n "update": "ContractAccess(\\"@1EditAppParam\\")",\n "conditions": "ContractConditions(\\"@1MainCondition\\")",\n "app_id": "1",\n "columns": [\n {\n "name": "value",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "app_id",\n "type": "number",\n "perm": "ContractAccess(\\"@1ItemChangeAppId\\")"\n },\n {\n "name": "ecosystem",\n "type": "number",\n "perm": "false"\n },\n {\n "name": "conditions",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "permissions",\n "type": "json",\n "perm": "ContractConditions(\\"@1MainCondition\\")"\n },\n {\n "name": "name",\n "type": "varchar",\n "perm": "false"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getlist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getlist"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getList")])]),e._v(" "),a("p",[e._v("Returns the entry of the specified data table.")]),e._v(" "),a("p",[e._v("You can specify the columns to be returned.")]),e._v(" "),a("p",[e._v("You can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("You can set the query criteria.")]),e._v(" "),a("p",[e._v("Hex encoding of data tables of type "),a("em",[e._v("BYTEA")]),e._v(" (byte arrays, hashes, byte code arrays)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the data table object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("order")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Sort by, default id ASC.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("where")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Query criteria")]),e._v(" "),a("p",[e._v("Example:If you want to query id>2 and name = john")]),e._v(" "),a("p",[e._v("You can use "),a("code",[e._v('where:{"id":{"$gt":2}, "name":{"$eq": "john"}}')])]),e._v(" "),a("p",[e._v("For details, please refer to "),a("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" where syntax")],1)])]),e._v(" "),a("h4",{attrs:{id:"return-value-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-22"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - Other columns of the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getList","id":1,"params":[{"name":"@1history","where":{"$and": [{"id":{"$gt": 2}}, {"id":{"$lt": 5}}]}}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "amount": "1000000000000000000",\n "block_id": "4",\n "comment": "UTXO",\n "created_at": "1676538080433",\n "ecosystem": "1",\n "id": "3",\n "recipient_balance": "1000000000000000000",\n "recipient_id": "666...160",\n "sender_balance": "1000000000000000000",\n "sender_id": "666...3160",\n "status": "0",\n "txhash": "2ac156c0ce55c10fd485cb9d59f50e3f9b269fb9bb69571d3c2eeae033d6c6cc",\n "type": "24",\n "value_detail": "NULL"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsections"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsections"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSections")])]),e._v(" "),a("p",[e._v("Return to the tab of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Get the actions request object\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The number of entries, default 25 entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("lang")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" -")]),e._v(" "),a("p",[e._v("This field specifies the multilingual resource code or localization, e.g. "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g. "),a("em",[e._v("en-US")]),e._v(", then search in the Multilingual Resources group, "),a("strong",[e._v("default")]),e._v(": "),a("strong",[e._v("en")]),e._v(".")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-23"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of tab entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains information about all columns in the sections table.")])])]),e._v(" "),a("h4",{attrs:{id:"example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSections","id":1,"params":[{"offset":0,"limit":2}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "ecosystem": "1",\n "id": "1",\n "page": "default_page",\n "roles_access": "[]",\n "status": "2",\n "title": "Home",\n "urlname": "home"\n },\n {\n "ecosystem": "1",\n "id": "2",\n "page": "developer_index",\n "roles_access": "[]",\n "status": "1",\n "title": "Developer",\n "urlname": "developer"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getRow")])]),e._v(" "),a("p",[e._v("Returns the entries of the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v('If you do not filter, you can place a blank "".')]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("whereColumn")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Find column name (only Number type columns can be found)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-24"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("value")]),e._v("- "),a("em",[e._v("Object")]),e._v(" - object that receives column values\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - The sequence of requested columns.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getRow","id":1,"params":["@1history",4,"id,sender_id,recipient_id,amount,ecosystem,created_at","id"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "value": {\n "amount": "680388766240",\n "created_at": "1677222830899",\n "ecosystem": "1",\n "id": "296",\n "recipient_id": "6667782293976713160",\n "sender_id": "6660819716178795186"\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-systemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.systemParams")])]),e._v(" "),a("p",[e._v("Returns the list of platform parameters.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - A list of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example "),a("code",[e._v('names="name1,name2"')]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-25"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unique id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.systemParams","id":1,"params":["gap_between_blocks,honor_nodes"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "4",\n "name": "gap_between_blocks",\n "value": "2",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n },\n {\n "id": "6",\n "name": "honor_nodes",\n "value": "",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-history"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.history")])]),e._v(" "),a("p",[e._v("Returns the changed records of the entries of the specified data table in the current ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")]),e._v(" "),a("li",[a("strong",[e._v("tableId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-26"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains change records for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.history","id":1,"params":["contracts",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "conditions": "ContractConditions(\\"MainCondition\\")",\n "ecosystem": "1",\n "value": "// This contract is used to set \\"developer\\" rights....."\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagerow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagerow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystempages data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-27"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Directory.")]),e._v(" "),a("li",[a("strong",[e._v("nodesCount")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of nodes the page needs to validate")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application Id")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPageRow","id":1,"params":["default_page"]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5,\n "name": "default_page",\n "value": "If(#account_id# == #guest_account#){\\n Include(@1apps_description)\\n}.Else{\\n Include(@1profile)\\n}",\n "menu": "default_menu",\n "nodesCount": 1,\n "app_id": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenurow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenurow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenuRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem menu data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-28"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The title.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenuRow","id":1,"params":["default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 2,\n "name": "default_menu",\n "title": "default",\n "value": "\\nMenuItem.....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsnippetrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsnippetrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSnippetRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem snippet data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-29"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])]),e._v(" "),a("h4",{attrs:{id:"example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSnippetRow","id":1,"params":["welcome"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 12,\n "name": "welcome",\n "value": "Div(content-wrapper)....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getappcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getappcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAppContent")])]),e._v(" "),a("p",[e._v("Get application related information (including page, snippet, menu)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application id")])]),e._v(" "),a("h4",{attrs:{id:"return-value-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-30"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("snippets")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of code snippet information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Code snippet name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("pages")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of page information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contracts")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - an array of contract information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "snippets": [ //if not app snippets is null array,example:[]\n {\n "id": 2,\n "name": "developer_link"\n },\n {\n "id": 3,\n "name": "export_info"\n }\n ],\n "pages": [ //if not app pages is null array,example:[]\n {\n "id": 6,\n "name": "menus_list"\n },\n {\n "id": 7,\n "name": "params_edit"\n }\n ],\n "contracts": [ //if not app contracts is null array,example:[]\n {\n "id": 2,\n "name": "MainCondition"\n },\n {\n "id": 33,\n "name": "NodeOwnerCondition"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmember"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmember"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMember")])]),e._v(" "),a("p",[e._v("Get member information")]),e._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Member Information")]),e._v(" "),a("p",[a("strong",[e._v("ecosystemId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoid")]),e._v(" "),a("h4",{attrs:{id:"return-value-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-31"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - member id")]),e._v(" "),a("li",[a("strong",[e._v("member_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Name")]),e._v(" "),a("li",[a("strong",[e._v("image_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Avatar id")]),e._v(" "),a("li",[a("strong",[e._v("member_info")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Introduction")])]),e._v(" "),a("h4",{attrs:{id:"example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}}" -d \'{"jsonrpc":"2.0","method":"ibax.getMember","id":1,"params":["1497-2036-4953-3607-1121",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 14,\n "member_name": "som",\n "image_id": 5, \n "member_info": "{\\"information\\": \\"Everything will be okay in the end. If it\'s not okay, it\'s not the end.\\"}"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontracts"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContracts")])]),e._v(" "),a("p",[e._v("Get the list of contracts in the current ecosystem, you can set the offset and the number of entries.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")]),e._v(" "),a("li",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-32"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract ID.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("wallet_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The address of the account to which the contract is bound.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the application to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change the permissions of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("token_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the ecosystem where the pass is used as a payment for the contract.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContracts","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 293,\n "list": [\n {\n "address": "0000-0000-0000-0000-0000",\n "app_id": "1",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "ecosystem_id": "1",\n "id": "1",\n "name": "DeveloperCondition",\n "token_id": "1",\n "value": "// This contract is used to ...",\n "wallet_id": "0"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontractinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontractinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContractInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified contract.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("contractName")]),e._v("\t-\t"),a("em",[e._v("String")]),e._v("\t-\tThe\tname\tof\tthe\tcontract.\tThe\tformat\tis "),a("code",[e._v("@ecosystem_id%%contractName%")]),e._v(", e.g. @1contractName (the specified eco1contract name contractName) or contractName (the current eco-contract name contractName).")])]),e._v(" "),a("h4",{attrs:{id:"return-value-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-33"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the contract ID in the VM.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("state")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("walletid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the account to which the contract is bound")]),e._v(" "),a("li",[a("strong",[e._v("tokenid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the ecosystem ID of the pass that is used as the payment for the contract.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("tableid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - ID of the entry in the "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")]),e._v(" "),a("li",[a("strong",[e._v("fields")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - array containing structural information for each parameter of the contract "),a("strong",[e._v("data")]),e._v(" section:\n"),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The type of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("optional")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - parameter options, "),a("code",[e._v("true")]),e._v(" means optional parameters, "),a("code",[e._v("false")]),e._v(" means mandatory parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","id":1,"params":["@1TokensSend"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5098,\n "state": 1,\n "tableid": "98",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Amount",\n "type": "money",\n "optional": false\n },\n {\n "name": "Recipient",\n "type": "string",\n "optional": true\n },\n {\n "name": "iName",\n "type": "string",\n "optional": true\n },\n {\n "name": "Comment",\n "type": "string",\n "optional": true\n },\n {\n "name": "Ecosystem",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1TokensSend"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-sendtx"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.sendTx")])]),e._v(" "),a("p",[e._v("Receives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an error response.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Transaction data object\n"),a("ul",[a("li",[a("strong",[e._v("tx_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the content of the transaction, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-34"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - transaction hash arrays:\n"),a("ul",[a("li",[a("strong",[e._v("tx1")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction 1.")]),e._v(" "),a("li",[a("strong",[e._v("txN")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction N.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.sendTx","id":1,"params":[{"tx1":...,"txN":...}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hashes":[\n {"hash1":"hash1"},\n {"hashN":"hashN"}\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txStatus")])]),e._v(" "),a("p",[e._v("Gets the block ID and error message of the specified transaction hash. If the return value of the block ID and error text message is null, then the transaction is not yet contained in the block.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash, split using "),a("code",[e._v(",")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"return-value-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-35"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - returns the block ID if the transaction was executed successfully;")]),e._v(" "),a("p",[e._v("If the transaction execution fails, "),a("em",[e._v("blockid")]),e._v(" will be "),a("code",[e._v("0")]),e._v(", and the corresponding block ID will be returned if the transaction execution error is penalized.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("result")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("errmsg")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Returns an error text message if the execution of the transaction failed.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Error type")]),e._v(" "),a("li",[a("strong",[e._v("error")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - error message")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("penalty")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - if the transaction execution fails, (0: no penalty 1: penalty)")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.txStatus","id":1,"params":["cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9,4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": "793",\n "result": "",\n "penalty": 0\n },\n "cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9": {\n "blockid": "793",\n "errmsg": {\n "type": "warning",\n "error": "platform ecosystem can not be burning Tokens"\n },\n "result": "",\n "penalty": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfo")])]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. If optional parameters are specified, the contract name and its associated parameters can also be returned.")]),e._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-36"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction.\nIf the value is "),a("code",[e._v("0")]),e._v(", no transactions are found for this hash.\nIf the transaction occurred on the current node, it can be obtained via "),a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of node confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Returns contract details if "),a("code",[e._v("contentinfo=true")]),e._v(" is specified. null if not specified")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])]),e._v(" "),a("h4",{attrs:{id:"example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.txInfo","id":1,"params":["020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "blockid": "796",\n "confirm": 0,\n "data": {\n "block_id": 796,\n "block_hash": "bccbc3cf47b49bee5fb7321810884db49b73f5114b0a6fcd234dd3fdf9c22ef4",\n "address": "0666-7782-2939-7671-3160",\n "ecosystem": 2,\n "hash": "020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "1000000000000",\n "Recipient": "0666-7782-2939-7671-3160"\n },\n "created_at": 1678774455841,\n "size": "213.00B",\n "status": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfomultiple"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("p",[e._v("Returns transaction-related information for the specified hash list.")]),e._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - A list of transaction hashes.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-37"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("results")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Data dictionary with transaction hash as key and transaction details as value.\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction. if the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("li",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - If "),a("code",[e._v("contentinfo=true")]),e._v("is specified, the contract details are returned to this parameter. null when not specified\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v("- "),a("em",[e._v("Number")]),e._v(" - Block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":[["1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284","4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"],true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "results": {\n "1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284": {\n "blockid": 0,\n "confirm": 0,\n "data": null\n },\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": 793,\n "confirm": 0,\n "data": {\n "block_id": 793,\n "block_hash": "ef3b2f2e18662e0b8bba136a209e30c5aae76d9a82e0b21209786f62fe5676e4",\n "address": "0666-0819-7161-7879-5186",\n "ecosystem": 1,\n "hash": "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "200",\n "Comment": "Hello Dear",\n "Recipient": "1196-2490-5275-7101-3496"\n },\n "created_at": 1678765099072,\n "size": "297.00B",\n "status": 0\n }\n }\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagevalidatorscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. @1params_list (specifying ecology 1 page name params_list) or params_list (current ecology page name params_list)")])]),e._v(" "),a("h4",{attrs:{id:"return-value-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-38"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("validate_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Specifies the number of nodes to be validated by the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "validate_count": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpage"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPage")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified page name, which is the result of processing by the templating engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the page with the ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".")]),e._v(" "),a("p",[e._v("If you don't have an ecosystem ID, the default is to find the current ecological page, e.g. "),a("code",[e._v("main_page")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-39"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the menu to which the page belongs.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("menutree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree of the page's menus.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - page JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPage","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "menu": "developer_menu",\n "menutree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ],\n "tree": [\n {\n ....\n }\n ...\n ],\n "nodesCount": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenu"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenu")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified menu name, which is the result of processing by the template engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\n"),a("blockquote",[a("p",[e._v("Menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%menu_name%")]),e._v(", e.g.\n"),a("code",[e._v("@1main_menu")]),e._v(".\nIf you don't bring the ecosystem ID, the menu of the current ecology will be found by default, for example\n"),a("code",[e._v("main_menu")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-40"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the menu title.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Menu JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenu","id":1,"params":["@1default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "title": "default",\n "tree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsource"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSource")])]),e._v(" "),a("p",[e._v("Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nPage name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", for example "),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, the default is to find the current ecological page e.g. "),a("code",[e._v("main_page")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-41"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree for the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSource","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": [\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1applications"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"name\\": \\"System\\"}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "setvar",\n "attr": {\n "name": "role_developer_id",\n "value": "AppParam(Ecosystem: #ecosystem_id#, App: #application_id#, Name: role_developer)"\n }\n },\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1roles_participants"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"$and\\": [{\\"role->id\\": {\\"$in\\": [#role_developer_id#]}}, {\\"role->id\\": \\"#role_id#\\"}], \\"member->account\\": \\"#account_id#\\", \\"deleted\\": 0}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "if",\n "attr": {\n "condition": "#developer_access_id#>0"\n },\n "children": [\n {\n "tag": "setvar",\n "attr": {\n "name": "this_page",\n "value": "@1params_list"\n }\n }\n\t\t\t\t\t\t...\n ],\n "tail": [\n {\n "tag": "else",\n "children": [\n {\n "tag": "settitle",\n "attr": {\n "title": "$@1ecosystem_parameters$"\n }\n }\n\t\t\t\t\t\t\t\t...\n ]\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagehash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagehash"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageHash")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page is not found.")]),e._v(" "),a("p",[e._v("To receive the correct hash when making requests to other nodes, you must also pass the\n"),a("em",[e._v("ecosystem,key_id,role_id")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the page with the ecosystem ID. The format is "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. "),a("code",[e._v("@1main_page")]),e._v(", you can specify the eco ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Get the specified page object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")]),e._v(" "),a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The role ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-42"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" -\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageHash","id":1,"params":["@1params_list",0,{"role_id":"1","key_id":"-6484253546138538120"}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "fc5ed3b5e879dd5521dfb792e815019bd8411851e850e75a3590d71e950a0465"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContent")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" Specified as "),a("code",[e._v("true")]),e._v(", this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("template")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page code.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("source")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - If specified as "),a("code",[e._v("true")]),e._v(", the JSON object tree does not perform any functions and receives data.")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-43"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - JSON object tree.")])]),e._v(" "),a("h4",{attrs:{id:"example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-43"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getContent","id":1,"params":[{"template","..."source":true}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": {\n "type":"......", \n "children": [\n {...},\n {...}\n ]\n }\n }\n }\n \n')])])]),a("h3",{attrs:{id:"ibax-getblockinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlockInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified block ID.")]),e._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-44"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block hash value.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollbacks_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensus_mode")]),e._v(" "),a("em",[e._v("Number")]),e._v(" - Consensus mode, parameters (1: creator management mode 2: DAO governance mode)")])])]),e._v(" "),a("h4",{attrs:{id:"example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-44"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlockInfo","id":1,"params":[12]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "Hl+/VvYFFu4iq4zLrRDGHBhm7DM7llEAfEJyaX2Q3is=",\n "key_id": 6667782293976713160,\n "time": 1677134955,\n "tx_count": 1,\n "rollbacks_hash": "o37QAighKMb8WqbEHAqCQb5bOfMvOqV0WoTaN631q74=",\n "node_position": 0,\n "consensus_mode": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getconfig"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getConfig")])]),e._v(" "),a("p",[e._v("Get the host address and port of centrifugo")]),e._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("option")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Configuration item")]),e._v(" "),a("ol",[a("li",[e._v('"centrifugo" - messaging service')])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-45"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("centrifugo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" host address and port of centrifugo Result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-45"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getConfig","id":1,"params":["centrifugo"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "centrifugo":"http://127.0.0.1:8100"\n }\n }\n')])])]),a("h3",{attrs:{id:"net-getnetwork"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-getnetwork"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.getNetwork")])]),e._v(" "),a("p",[e._v("Get node information")]),e._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-46"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")]),e._v(" "),a("li",[a("strong",[e._v("centrifugo_url")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - centrifugo message service address")]),e._v(" "),a("li",[a("strong",[e._v("test")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether it is a test chain")]),e._v(" "),a("li",[a("strong",[e._v("private")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether the chain is private")]),e._v(" "),a("li",[a("strong",[e._v("honor_nodes")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - List of honor nodes\n"),a("ul",[a("li",[a("strong",[e._v("tcp_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - tcp address")]),e._v(" "),a("li",[a("strong",[e._v("api_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - api address")]),e._v(" "),a("li",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - node public key")]),e._v(" "),a("li",[a("strong",[e._v("unban_time")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unlock time")])])])]),e._v(" "),a("h4",{attrs:{id:"example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-46"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.getNetwork","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "network_id": "1",\n "centrifugo_url": "127.0.0.1",\n "test": false,\n "private": false,\n "honor_nodes": [\n {\n "tcp_address": "127.0.0.1:7078",\n "api_address": "http://127.0.0.1:7078",\n "public_key": "049a41b24862f8db61ee66fb206094baa57bfeac7ea786d63662a964d144eb85d1a0e230928d56f46dd61eefac7640b6aa2883b2445c7b2adc0e581f983ff0aedb",\n "unban_time": "-62135596800"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"net-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-status"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.status")])]),e._v(" "),a("p",[e._v("Get the current node status")]),e._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-47"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - Node Status\n"node server status is running" - the node is running\n"node server is updating" - node is being updated\n"node server is stopped" - node suspended')])]),e._v(" "),a("h4",{attrs:{id:"example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-47"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.status","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"rpc-modules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-modules"}},[e._v("#")]),e._v(" "),a("strong",[e._v("rpc.modules")])]),e._v(" "),a("p",[e._v("Get the currently registered JSON-RPC interface")]),e._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-48"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Array")]),e._v(" - JSON-RPC interface array")])]),e._v(" "),a("h4",{attrs:{id:"example-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-48"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"rpc.modules","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n "net.getNetwork",\n "ibax.getAppContent",\n "ibax.honorNodesCount",\n "ibax.maxBlockId",\n "ibax.detailedBlock",\n "ibax.getConfig",\n "ibax.getTableCount",\n "ibax.getMenu"\n ]\n }\n')])])]),a("h3",{attrs:{id:"admin-startjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-startjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.startJsonRpc")])]),e._v(" "),a("p",[e._v("Can be used to switch between JSON-RPC change namespace services")]),e._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("methods")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - JSON-RPC module, default: "ibax,net"')]),e._v(" "),a("h4",{attrs:{id:"return-value-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-49"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-49"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.startJsonRpc","id":1,"params":["ibax,net,admin"]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"admin-stopjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-stopjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.stopJsonRpc")])]),e._v(" "),a("p",[e._v("Close the JSON-RPC service")]),e._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-50"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-50"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.stopJsonRpc","id":1,"params":[]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"debug-getnodebanstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getnodebanstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getNodeBanStat")])]),e._v(" "),a("p",[e._v("Get node disable status")]),e._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-51"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript\n"),a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Disable status, "),a("code",[e._v("true")]),e._v(" ban status, "),a("code",[e._v("false")]),e._v(" not disabled")]),e._v(" "),a("h4",{attrs:{id:"example-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-51"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getNodeBanStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n {\n "node_position": 0,\n "status": true\n }\n ]\n }\n')])])]),a("h3",{attrs:{id:"debug-getmemstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getmemstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getMemStat")])]),e._v(" "),a("p",[e._v("Get the current node memory usage")]),e._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-52"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("alloc")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes requested and still in use")]),e._v(" "),a("li",[a("strong",[e._v("sys")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes fetched from the system")])]),e._v(" "),a("h4",{attrs:{id:"example-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-52"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getMemStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "alloc": 11537432,\n "sys": 35329248\n }\n }\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/124.bb513256.js b/assets/js/124.e3732c93.js similarity index 99% rename from assets/js/124.bb513256.js rename to assets/js/124.e3732c93.js index 5709e8c..6af376b 100644 --- a/assets/js/124.bb513256.js +++ b/assets/js/124.e3732c93.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{503:function(e,a,r){"use strict";r.r(a);var i=r(51),t=Object(i.a)({},(function(){var e=this,a=e.$createElement,r=e._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"platform-parametreleri"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#platform-parametreleri"}},[e._v("#")]),e._v(" Platform Parametreleri")]),e._v(" "),r("p",[e._v("Bunlar, IBAX'i yapılandırmak için kullanılan parametrelerdir. Blok zinciri ağına ve içindeki tüm ekosistemlere uygulanabilirler.")]),e._v(" "),r("h2",{attrs:{id:"platform-parametrelerinin-depolanacagı-konum"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#platform-parametrelerinin-depolanacagı-konum"}},[e._v("#")]),e._v(" Platform parametrelerinin depolanacağı konum")]),e._v(" "),r("p",[e._v("Platform parametreleri "),r("code",[e._v("sistem parametreleri")]),e._v(" tablosunda saklanır.")]),e._v(" "),r("p",[e._v("Bu tablo, blok zinciri ağında oluşturulan ilk (varsayılan) ekosistemde bulunur.")]),e._v(" "),r("h2",{attrs:{id:"platform-parametrelerinin-degistirilmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#platform-parametrelerinin-degistirilmesi"}},[e._v("#")]),e._v(" Platform parametrelerinin değiştirilmesi")]),e._v(" "),r("p",[e._v("Platform parametrelerinin değiştirilmesi ancak oylama yoluyla yapılabilir. Platformun yasal sistemindeki tanımlarla yönetilen herhangi bir platform parametresini değiştirmek için yalnızca UpdateSysParam sözleşmesini kullanabilirsiniz.")]),e._v(" "),r("h2",{attrs:{id:"platform-parametrelerini-yapılandırın"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#platform-parametrelerini-yapılandırın"}},[e._v("#")]),e._v(" Platform parametrelerini yapılandırın")]),e._v(" "),r("h3",{attrs:{id:"blok-zinciri-agını-yapılandırın"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#blok-zinciri-agını-yapılandırın"}},[e._v("#")]),e._v(" Blok zinciri ağını yapılandırın")]),e._v(" "),r("p",[e._v("Nodes:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])])]),e._v(" "),r("p",[e._v("Node bans:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])])]),e._v(" "),r("h3",{attrs:{id:"yeni-bir-ekosistem-yapılandırın"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#yeni-bir-ekosistem-yapılandırın"}},[e._v("#")]),e._v(" Yeni bir ekosistem yapılandırın")]),e._v(" "),r("p",[e._v("Varsayılan sayfa ve menü:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])])]),e._v(" "),r("p",[e._v("Varsayılan kontrat:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])])]),e._v(" "),r("h3",{attrs:{id:"veritabanını-yapılandır"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#veritabanını-yapılandır"}},[e._v("#")]),e._v(" Veritabanını yapılandır")]),e._v(" "),r("p",[e._v("Tablo limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])])]),e._v(" "),r("h3",{attrs:{id:"blokların-olusturulmasını-yapılandırın"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#blokların-olusturulmasını-yapılandırın"}},[e._v("#")]),e._v(" Blokların oluşturulmasını yapılandırın")]),e._v(" "),r("p",[e._v("Zaman limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])])]),e._v(" "),r("p",[e._v("İşlem limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])])]),e._v(" "),r("p",[e._v("Boyut limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])])]),e._v(" "),r("p",[e._v("Fuel limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])])]),e._v(" "),r("p",[e._v("Blok rollback limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])]),e._v(" "),r("h3",{attrs:{id:"fuel-tokenlarını-yapılandırın"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fuel-tokenlarını-yapılandırın"}},[e._v("#")]),e._v(" Fuel tokenlarını yapılandırın")]),e._v(" "),r("p",[e._v("Ödüller ve komisyonlar:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])])]),e._v(" "),r("p",[e._v("Fuel oranı dönüşümü:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])])]),e._v(" "),r("p",[e._v("İşlem boyutu ve veri fiyatı:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])])]),e._v(" "),r("p",[e._v("Yeni elemanların fiyatı:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])])]),e._v(" "),r("p",[e._v("İşlemler için fiyat:\n")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#platform-parameters"}},[e._v("Platform Parameters")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#location-to-store-platform-parameters"}},[e._v("Location to store platform parameters")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#change-of-platform-parameters"}},[e._v("Change of platform parameters")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#configure-platform-parameters"}},[e._v("Configure platform parameters")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#configure-the-blockchain-network"}},[e._v("Configure the blockchain network")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#configure-a-new-ecosystem"}},[e._v("Configure a new ecosystem")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#configure-the-database"}},[e._v("Configure the database")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("Configure the generation of blocks")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#configure-the-fuel-tokens"}},[e._v("Configure the fuel tokens")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#depreciated"}},[e._v("Depreciated")])])])]),e._v(" "),r("li",[r("a",{attrs:{href:"#details-of-platform-parameters"}},[e._v("Details of platform parameters")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-address-to-id"}},[e._v("price exec address to id")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-bind-wallet"}},[e._v("price exec bind wallet")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-column-condition"}},[e._v("price exec column condition")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-compile-contract"}},[e._v("price exec compile contract")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-contains"}},[e._v("price exec contains")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-contract-by-id"}},[e._v("price exec contract by id")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-contract-by-name"}},[e._v("price exec contract by name")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-contracts-list"}},[e._v("price exec contracts list")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-create-column"}},[e._v("price exec create column")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-create-ecosystem"}},[e._v("price exec create ecosystem")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-create-table"}},[e._v("price exec create table")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-ecosys-param"}},[e._v("price exec ecosys param")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-eval"}},[e._v("price exec eval")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-eval-condition"}},[e._v("price exec eval condition")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-flush-contract"}},[e._v("price exec flush contract")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-has-prefix"}},[e._v("price exec has prefix")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-id-to-address"}},[e._v("price exec id to address")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-is-object"}},[e._v("price exec is object")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-join"}},[e._v("price exec join")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-json-to-map"}},[e._v("price exec json to map")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-len"}},[e._v("price exec len")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-perm-column"}},[e._v("price exec perm column")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-perm-table"}},[e._v("price exec perm table")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-pub-to-id"}},[e._v("price exec pub to id")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-replace"}},[e._v("price exec replace")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-sha256"}},[e._v("price exec sha256")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-size"}},[e._v("price exec size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-substr"}},[e._v("price exec substr")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-sys-fuel"}},[e._v("price exec sys fuel")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-sys-param-int"}},[e._v("price exec sys param int")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-sys-param-string"}},[e._v("price exec sys param string")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-table-conditions"}},[e._v("price exec table conditions")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-unbind-wallet"}},[e._v("price exec unbind wallet")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-update-lang"}},[e._v("price exec update lang")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-validate-condition"}},[e._v("price exec validate condition")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])])])])])]),e._v(" "),r("h3",{attrs:{id:"amortismana-tabi-tutuldu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#amortismana-tabi-tutuldu"}},[e._v("#")]),e._v(" Amortismana tabi tutuldu")]),e._v(" "),r("p",[e._v("Amortismana tabi tutulmuş parametreler:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])])]),e._v(" "),r("h2",{attrs:{id:"platform-parametrelerinin-ayrıntıları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#platform-parametrelerinin-ayrıntıları"}},[e._v("#")]),e._v(" Platform parametrelerinin ayrıntıları")]),e._v(" "),r("h3",{attrs:{id:"blok-odulu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#blok-odulu"}},[e._v("#")]),e._v(" blok ödülü")]),e._v(" "),r("p",[e._v("Bloğu oluşturan onur düğümüne verilen IBXC belirteçlerinin sayısı.")]),e._v(" "),r("p",[e._v("Ödülü alan hesap, "),r("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parametresinde belirtilir.")]),e._v(" "),r("h3",{attrs:{id:"blok-zinciri-url-i"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#blok-zinciri-url-i"}},[e._v("#")]),e._v(" blok zinciri url'i")]),e._v(" "),r("p",[e._v("amortismana tabi tutuldu.")]),e._v(" "),r("h3",{attrs:{id:"komisyon-boyutu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#komisyon-boyutu"}},[e._v("#")]),e._v(" komisyon boyutu")]),e._v(" "),r("p",[e._v("Komisyonun yüzdesi.")]),e._v(" "),r("p",[e._v("Komisyon tutarı, sözleşmenin uygulanmasının toplam maliyetinin bir yüzdesi olarak hesaplanır. Komisyon jetonunun birimi IBXC'dir.")]),e._v(" "),r("p",[e._v("Komisyon, komisyon_cüzdan parametresinde belirtilen hesap adresine aktarılacaktır.")]),e._v(" "),r("h3",{attrs:{id:"komisyon-cuzdanı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#komisyon-cuzdanı"}},[e._v("#")]),e._v(" komisyon cüzdanı")]),e._v(" "),r("p",[e._v("Komisyonun alınacağı hesap adresi.")]),e._v(" "),r("p",[e._v("Komisyon miktarı, komisyon_boyutu parametresi ile belirlenir.")]),e._v(" "),r("h3",{attrs:{id:"varsayılan-ekosistem-sozlesmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#varsayılan-ekosistem-sozlesmesi"}},[e._v("#")]),e._v(" varsayılan ekosistem sözleşmesi")]),e._v(" "),r("p",[e._v("Yeni ekosistemdeki varsayılan sözleşmenin kaynak kodu.")]),e._v(" "),r("p",[e._v("Bu sözleşme, ekosistem oluşturucuya erişim sağlar.")]),e._v(" "),r("h3",{attrs:{id:"varsayılan-ekosistem-menusu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#varsayılan-ekosistem-menusu"}},[e._v("#")]),e._v(" varsayılan ekosistem menüsü")]),e._v(" "),r("p",[e._v("Yeni ekosistemin varsayılan menüsünün kaynak kodu.")]),e._v(" "),r("h3",{attrs:{id:"varsayılan-ekosistem-sayfası"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#varsayılan-ekosistem-sayfası"}},[e._v("#")]),e._v(" varsayılan ekosistem sayfası")]),e._v(" "),r("p",[e._v("Yeni ekosistemin varsayılan sayfasının kaynak kodu.")]),e._v(" "),r("h3",{attrs:{id:"fuel-oranı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fuel-oranı"}},[e._v("#")]),e._v(" fuel oranı")]),e._v(" "),r("p",[e._v("Fuel birimine göre farklı ekosistem belirteçlerinin döviz kurları.")]),e._v(" "),r("p",[e._v("Bu parametrenin formatı:")]),e._v(" "),r("p",[r("code",[e._v('[["ecosystem_id", "token_to_fuel_rate"], ["ecosystem_id2", "token_to_fuel_rate2"], ...]')])]),e._v(" "),r("ul",[r("li",[r("p",[r("code",[e._v("ecosystem_id")])]),e._v(" "),r("p",[e._v("Ekosistem ID.")])]),e._v(" "),r("li",[r("p",[r("code",[e._v("token_to_fuel_rate")])]),e._v(" "),r("p",[e._v("Fuel birimine göre tokenın döviz kuru.")])])]),e._v(" "),r("p",[e._v("Örnek:")]),e._v(" "),r("p",[r("code",[e._v('[["1","1000000000000"], ["2", "1000"]]')])]),e._v(" "),r("p",[e._v("Ekosistem 1'in bir jetonu 1.000.000.000.000 Fuel birimiyle değiştirilir. Ekosistem 2'nin bir jetonu 1.000 Fuel birimiyle değiştirilir.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-oranı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-oranı"}},[e._v("#")]),e._v(" fiyat oluşturma oranı")]),e._v(" "),r("p",[e._v("Yeni bir elemanın Fuel oranı.")]),e._v(" "),r("h3",{attrs:{id:"tam-nodelar"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#tam-nodelar"}},[e._v("#")]),e._v(" tam nodelar")]),e._v(" "),r("p",[e._v("Blockchain ağının honor nodelarının listesi.")]),e._v(" "),r("p",[e._v("Bu parametrenin formatı:")]),e._v(" "),r("p",[r("code",[e._v('[{"api_address":"https://apihost1:port1","public_key":"nodepub1","tcp_address":"tcphost1:port2"},{"api_address":"https://apihost2:port1","public_key":"nodepub2","tcp_address":"tcphost2:port2"}]')])]),e._v(" "),r("ul",[r("li",[r("p",[r("code",[e._v("tcp_address")])]),e._v(" "),r("p",[e._v("Node ana bilgisayarının TCP adresi ve bağlantı noktası.\nİşlemler ve yeni bloklar, ilk bloktan tam blok zinciri elde etmek için de kullanılabilen bu ana bilgisayar adresine gönderilecektir.")])]),e._v(" "),r("li",[r("p",[r("code",[e._v("api_address")])]),e._v(" "),r("p",[e._v("API adresi ve düğüm ana bilgisayarının bağlantı noktası.\nAPI adresi aracılığıyla, Weaver kullanmadan platformun herhangi bir işlevine erişebilirsiniz. Ayrıntıları RESTful API'de görün.")])]),e._v(" "),r("li",[r("p",[r("code",[e._v("public_key")])]),e._v(" "),r("p",[e._v("Blok imzasını doğrulamak için kullanılan düğümün genel anahtarı.")])])]),e._v(" "),r("h3",{attrs:{id:"bloklar-arasındaki-bosluk"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#bloklar-arasındaki-bosluk"}},[e._v("#")]),e._v(" bloklar arasındaki boşluk")]),e._v(" "),r("p",[e._v("Bir düğümde iki blok oluşturmanın zaman aralığı (saniye cinsinden).")]),e._v(" "),r("p",[e._v("Ağdaki tüm düğümler, ne zaman yeni bir blok oluşturulacağını belirlemek için bunu kullanır. Mevcut düğüm bu süre içinde yeni bir blok oluşturmazsa, sıra, onur düğümleri listesindeki bir sonraki düğüme geçer.")]),e._v(" "),r("p",[e._v("The minimum value of this parameter is "),r("code",[e._v("1")]),e._v(" second.")]),e._v(" "),r("h3",{attrs:{id:"gunluk-yanlıs-bloklar"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#gunluk-yanlıs-bloklar"}},[e._v("#")]),e._v(" günlük yanlış bloklar")]),e._v(" "),r("p",[e._v("Bir düğümün yasaklanmadan önce bir günde oluşturmasına izin verilen hatalı blokların sayısı.")]),e._v(" "),r("p",[e._v("Ağdaki düğümlerin yarısından fazlası bir düğümden aynı sayıda hatalı blok aldığında, düğüm "),r("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")]),e._v(" içinde belirtilen bir süre içinde ağdan yasaklanır.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-blok-olusturma-suresi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-blok-olusturma-suresi"}},[e._v("#")]),e._v(" maksimum blok oluşturma süresi")]),e._v(" "),r("p",[e._v("Milisaniye cinsinden bir blok oluşturmak için maksimum süre. Bu süre içinde bir blok başarıyla oluşturulmazsa, bir zaman aşımı hatası rapor edilir.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-blok-boyutu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-blok-boyutu"}},[e._v("#")]),e._v(" maksimum blok boyutu")]),e._v(" "),r("p",[e._v("Bir bloğun bayt cinsinden maksimum boyutu.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-sutun"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-sutun"}},[e._v("#")]),e._v(" maksimum sütun")]),e._v(" "),r("p",[e._v("Tek bir tablodaki maksimum alan sayısı.")]),e._v(" "),r("p",[e._v('Ancak, önceden tanımlanmış "id" sütununu içermez.')]),e._v(" "),r("h3",{attrs:{id:"maksimum-forsign-boyutu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-forsign-boyutu"}},[e._v("#")]),e._v(" maksimum forsign boyutu")]),e._v(" "),r("p",[e._v("Bayt cinsinden bir işlem imzasının maksimum boyutu.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-fuel-blogu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-fuel-blogu"}},[e._v("#")]),e._v(" maksimum Fuel bloğu")]),e._v(" "),r("p",[e._v("Tek bir bloğun maksimum toplam Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-fuel-tx"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-fuel-tx"}},[e._v("#")]),e._v(" maksimum Fuel tx")]),e._v(" "),r("p",[e._v("Tek bir işlemin maksimum toplam Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-dizin"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-dizin"}},[e._v("#")]),e._v(" maksimum dizin")]),e._v(" "),r("p",[e._v("Tek bir tablodaki maksimum birincil anahtar alanı sayısı.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-tx-blogu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-tx-blogu"}},[e._v("#")]),e._v(" maksimum tx bloğu")]),e._v(" "),r("p",[e._v("Tek bir bloktaki maksimum işlem sayısı.")]),e._v(" "),r("h3",{attrs:{id:"kullanıcı-basına-maksimum-tx-blogu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#kullanıcı-basına-maksimum-tx-blogu"}},[e._v("#")]),e._v(" kullanıcı başına maksimum tx bloğu")]),e._v(" "),r("p",[e._v("Bir bloktaki bir hesabın maksimum işlem sayısı.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-tx-boyutu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-tx-boyutu"}},[e._v("#")]),e._v(" maksimum tx boyutu")]),e._v(" "),r("p",[e._v("Bayt cinsinden bir işlemin maksimum boyutu.")]),e._v(" "),r("h3",{attrs:{id:"dugum-yasagı-suresi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#dugum-yasagı-suresi"}},[e._v("#")]),e._v(" düğüm yasağı süresi")]),e._v(" "),r("p",[e._v("Milisaniye cinsinden düğümün genel yasaklama süresi.")]),e._v(" "),r("p",[e._v("Ağdaki düğümlerin yarısından fazlası bir düğümden [günlük yanlış blok](#günlük yanlış blok) sayısına kadar hatalı bloklar aldığında, düğüm bu süre boyunca ağda yasaklanır .")]),e._v(" "),r("h3",{attrs:{id:"yerel-dugum-yasagı-zamanı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#yerel-dugum-yasagı-zamanı"}},[e._v("#")]),e._v(" yerel düğüm yasağı zamanı")]),e._v(" "),r("p",[e._v("Düğümün milisaniye cinsinden yerel yasaklama süresi.")]),e._v(" "),r("p",[e._v("Bir düğüm başka bir düğümden yanlış bir blok aldığında, bu süre zarfında gönderenin düğümünü yerel olarak yasaklar.")]),e._v(" "),r("h3",{attrs:{id:"dugum-sayısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#dugum-sayısı"}},[e._v("#")]),e._v(" düğüm sayısı")]),e._v(" "),r("p",[r("a",{attrs:{href:"#full-nodes"}},[e._v("tam düğümler")]),e._v(" parametresindeki maksimum honor node sayısı.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-ekosistemi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-ekosistemi"}},[e._v("#")]),e._v(" fiyat oluşturma ekosistemi")]),e._v(" "),r("p",[e._v("Yeni bir tek ekosistem oluşturmak için fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewEcosystem")]),e._v(" sözleşmesinin ek fuel ücretini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için fuel ücreti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için "),r("a",{attrs:{href:"#fuel-oran%C4%B1"}},[e._v("fuel oranı")]),e._v(" ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-uygulaması"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-uygulaması"}},[e._v("#")]),e._v(" fiyat oluşturma uygulaması")]),e._v(" "),r("p",[e._v("Yeni bir tek uygulama oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewApplication")]),e._v(" sözleşmesinin ek Fuel ücretini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel ücreti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-tablosu-olustur"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-tablosu-olustur"}},[e._v("#")]),e._v(" fiyat tablosu oluştur")]),e._v(" "),r("p",[e._v("Yeni bir tek tablo oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewTable")]),e._v(" sözleşmesinin ek Fuel maliyetini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel maliyeti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-sutunu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-sutunu"}},[e._v("#")]),e._v(" fiyat oluşturma sütunu")]),e._v(" "),r("p",[e._v("Yeni bir tek tablo alanı oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewColumn")]),e._v(" sözleşmesinin ek Fuel maliyetini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel maliyeti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-sozlesme-olustur"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-sozlesme-olustur"}},[e._v("#")]),e._v(" fiyat sözleşme oluştur")]),e._v(" "),r("p",[e._v("Yeni bir tek sözleşme oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewContract")]),e._v(" sözleşmesinin ek Fuel maliyetini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel maliyeti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-menusu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-menusu"}},[e._v("#")]),e._v(" fiyat oluşturma menüsü")]),e._v(" "),r("p",[e._v("Yeni tek menü oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewMenu")]),e._v(" sözleşmesinin ek Fuel maliyetini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel maliyeti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-sayfası"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-sayfası"}},[e._v("#")]),e._v(" fiyat oluşturma sayfası")]),e._v(" "),r("p",[e._v("Yeni bir tek sayfa oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewPage")]),e._v(" sözleşmesinin ek Fuel maliyetini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel maliyeti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"kimlige-fiyat-yurutme-adresi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#kimlige-fiyat-yurutme-adresi"}},[e._v("#")]),e._v(" kimliğe fiyat yürütme adresi")]),e._v(" "),r("p",[r("code",[e._v("AddressToId()")]),e._v(" işlevini çağırmanın Fuel ücreti, Fuel birimi cinsinden hesaplanır.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-baglama-cuzdanı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-baglama-cuzdanı"}},[e._v("#")]),e._v(" fiyat yürütme bağlama cüzdanı")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Activate()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sutun-kosulu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sutun-kosulu"}},[e._v("#")]),e._v(" fiyat yürütme sütun koşulu")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("ColumnCondition()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sozlesmesi-derleme"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sozlesmesi-derleme"}},[e._v("#")]),e._v(" fiyat yürütme sözleşmesi derleme")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("CompileContract()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sunları-icerir"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sunları-icerir"}},[e._v("#")]),e._v(" fiyat yürütme şunları içerir")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("İçerir()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"kimlige-gore-fiyat-yurutme-sozlesmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#kimlige-gore-fiyat-yurutme-sozlesmesi"}},[e._v("#")]),e._v(" kimliğe göre fiyat yürütme sözleşmesi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("GetContractById()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"isme-gore-fiyat-yurutme-sozlesmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#isme-gore-fiyat-yurutme-sozlesmesi"}},[e._v("#")]),e._v(" isme göre fiyat yürütme sözleşmesi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan "),r("code",[e._v("GetContractByName()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sozlesmeleri-listesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sozlesmeleri-listesi"}},[e._v("#")]),e._v(" fiyat yürütme sözleşmeleri listesi")]),e._v(" "),r("p",[r("code",[e._v("ContractsList()")]),e._v(" işlevini çağırmanın Fuel birimi cinsinden hesaplanan Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sutunu-olustur"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sutunu-olustur"}},[e._v("#")]),e._v(" fiyat yürütme sütunu oluştur")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("CreateColumn()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yonetimi-ekosistem-olustur"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yonetimi-ekosistem-olustur"}},[e._v("#")]),e._v(" fiyat yönetimi ekosistem oluştur")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("CreateEcosystem()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-tablosu-olustur"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-tablosu-olustur"}},[e._v("#")]),e._v(" fiyat yürütme tablosu oluştur")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("CreateTable()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-ecosys-parametresi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-ecosys-parametresi"}},[e._v("#")]),e._v(" fiyat yürütme ecosys parametresi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("EcosysParam()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-degerlendirmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-degerlendirmesi"}},[e._v("#")]),e._v(" fiyat yürütme değerlendirmesi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Evaluation()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-degerlendirme-kosulu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-degerlendirme-kosulu"}},[e._v("#")]),e._v(" fiyat yürütme değerlendirme koşulu")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("EvalCondition()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-gomme-sozlesmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-gomme-sozlesmesi"}},[e._v("#")]),e._v(" fiyat yürütme gömme sözleşmesi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("FlushContract()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-on-ekine-sahip"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-on-ekine-sahip"}},[e._v("#")]),e._v(" fiyat yürütme ön ekine sahip")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("HasPrefix()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"adrese-fiyat-yurutme-kimligi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#adrese-fiyat-yurutme-kimligi"}},[e._v("#")]),e._v(" adrese fiyat yürütme kimliği")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("IdToAddress()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-nesnedir"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-nesnedir"}},[e._v("#")]),e._v(" fiyat yürütme nesnedir")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("IsObject()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-katılımı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-katılımı"}},[e._v("#")]),e._v(" fiyat yürütme katılımı")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Join()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"eslemek-icin-json-fiyat-yurutme"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#eslemek-icin-json-fiyat-yurutme"}},[e._v("#")]),e._v(" eşlemek için json fiyat yürütme")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("JSONToMap()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yonetimi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yonetimi"}},[e._v("#")]),e._v(" fiyat yönetimi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Len()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-izni-sutunu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-izni-sutunu"}},[e._v("#")]),e._v(" fiyat yürütme izni sütunu")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("PermColumn()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-izin-tablosu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-izin-tablosu"}},[e._v("#")]),e._v(" fiyat yürütme izin tablosu")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("PermTable()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-pub-ından-kimlige"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-pub-ından-kimlige"}},[e._v("#")]),e._v(" fiyat yürütme pub'ından kimliğe")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("PubToID()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-degistir"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-degistir"}},[e._v("#")]),e._v(" fiyat yürütme değiştir")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Değiştir()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yoneticisi-sha256"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yoneticisi-sha256"}},[e._v("#")]),e._v(" fiyat yöneticisi sha256")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Sha256()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-boyutu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-boyutu"}},[e._v("#")]),e._v(" fiyat yürütme boyutu")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Size()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-altdizini"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-altdizini"}},[e._v("#")]),e._v(" fiyat yürütme altdizini")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Substr()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sistemi-fuelı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sistemi-fuelı"}},[e._v("#")]),e._v(" fiyat yürütme sistemi Fuelı")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("SysFuel()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sistem-parametresi-int"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sistem-parametresi-int"}},[e._v("#")]),e._v(" fiyat yürütme sistem parametresi int")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("SysParamInt()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sys-param-dizesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sys-param-dizesi"}},[e._v("#")]),e._v(" fiyat yürütme sys param dizesi")]),e._v(" "),r("p",[r("code",[e._v("SysParamString()")]),e._v(" işlevini çağırmanın Fuel ücreti, Fuel birimlerinde hesaplanır.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-tablosu-kosulları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-tablosu-kosulları"}},[e._v("#")]),e._v(" fiyat yürütme tablosu koşulları")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("TableConditions()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-cuzdanını-coz"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-cuzdanını-coz"}},[e._v("#")]),e._v(" fiyat yürütme cüzdanını çöz")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, 'Deactivate()' işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-guncelleme-dili"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-guncelleme-dili"}},[e._v("#")]),e._v(" fiyat yürütme güncelleme dili")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("UpdateLang()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-dogrulama-kosulu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-dogrulama-kosulu"}},[e._v("#")]),e._v(" fiyat yürütme doğrulama koşulu")]),e._v(" "),r("p",[r("code",[e._v("ValidateCondition()")]),e._v(" işlevini çağırmanın Fuel ücreti, Fuel birimi cinsinden hesaplanır.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-tx-verileri"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-tx-verileri"}},[e._v("#")]),e._v(" fiyat tx verileri")]),e._v(" "),r("p",[e._v("Bir işlemin her 1024 baytı için Fuel birimi cinsinden hesaplanan Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-tx-boyutunda-cuzdan"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-tx-boyutunda-cuzdan"}},[e._v("#")]),e._v(" fiyat tx boyutunda cüzdan")]),e._v(" "),r("p",[e._v("İşlem boyutuna göre ücret, birimi IBXC tokenidir.")]),e._v(" "),r("p",[e._v("Ekosistem 1 dışında, diğer ekosistemlerde bir sözleşme uygulanırken orantılı olarak bir blok alanı kullanım ücreti alınacaktır ve oranı megabayt başına "),r("em",[e._v("fiyat tx boyutlu cüzdan")]),e._v(" IBXC belirteçleridir.")]),e._v(" "),r("h3",{attrs:{id:"geri-alma-blokları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#geri-alma-blokları"}},[e._v("#")]),e._v(" geri alma blokları")]),e._v(" "),r("p",[e._v("Blok zincirinde bir fork tespit edildiğinde geri alınabilecek maksimum blok sayısı.")])])}),[],!1,null,null,null);a.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{504:function(e,a,r){"use strict";r.r(a);var i=r(51),t=Object(i.a)({},(function(){var e=this,a=e.$createElement,r=e._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"platform-parametreleri"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#platform-parametreleri"}},[e._v("#")]),e._v(" Platform Parametreleri")]),e._v(" "),r("p",[e._v("Bunlar, IBAX'i yapılandırmak için kullanılan parametrelerdir. Blok zinciri ağına ve içindeki tüm ekosistemlere uygulanabilirler.")]),e._v(" "),r("h2",{attrs:{id:"platform-parametrelerinin-depolanacagı-konum"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#platform-parametrelerinin-depolanacagı-konum"}},[e._v("#")]),e._v(" Platform parametrelerinin depolanacağı konum")]),e._v(" "),r("p",[e._v("Platform parametreleri "),r("code",[e._v("sistem parametreleri")]),e._v(" tablosunda saklanır.")]),e._v(" "),r("p",[e._v("Bu tablo, blok zinciri ağında oluşturulan ilk (varsayılan) ekosistemde bulunur.")]),e._v(" "),r("h2",{attrs:{id:"platform-parametrelerinin-degistirilmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#platform-parametrelerinin-degistirilmesi"}},[e._v("#")]),e._v(" Platform parametrelerinin değiştirilmesi")]),e._v(" "),r("p",[e._v("Platform parametrelerinin değiştirilmesi ancak oylama yoluyla yapılabilir. Platformun yasal sistemindeki tanımlarla yönetilen herhangi bir platform parametresini değiştirmek için yalnızca UpdateSysParam sözleşmesini kullanabilirsiniz.")]),e._v(" "),r("h2",{attrs:{id:"platform-parametrelerini-yapılandırın"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#platform-parametrelerini-yapılandırın"}},[e._v("#")]),e._v(" Platform parametrelerini yapılandırın")]),e._v(" "),r("h3",{attrs:{id:"blok-zinciri-agını-yapılandırın"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#blok-zinciri-agını-yapılandırın"}},[e._v("#")]),e._v(" Blok zinciri ağını yapılandırın")]),e._v(" "),r("p",[e._v("Nodes:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])])]),e._v(" "),r("p",[e._v("Node bans:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])])]),e._v(" "),r("h3",{attrs:{id:"yeni-bir-ekosistem-yapılandırın"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#yeni-bir-ekosistem-yapılandırın"}},[e._v("#")]),e._v(" Yeni bir ekosistem yapılandırın")]),e._v(" "),r("p",[e._v("Varsayılan sayfa ve menü:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])])]),e._v(" "),r("p",[e._v("Varsayılan kontrat:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])])]),e._v(" "),r("h3",{attrs:{id:"veritabanını-yapılandır"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#veritabanını-yapılandır"}},[e._v("#")]),e._v(" Veritabanını yapılandır")]),e._v(" "),r("p",[e._v("Tablo limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])])]),e._v(" "),r("h3",{attrs:{id:"blokların-olusturulmasını-yapılandırın"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#blokların-olusturulmasını-yapılandırın"}},[e._v("#")]),e._v(" Blokların oluşturulmasını yapılandırın")]),e._v(" "),r("p",[e._v("Zaman limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])])]),e._v(" "),r("p",[e._v("İşlem limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])])]),e._v(" "),r("p",[e._v("Boyut limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])])]),e._v(" "),r("p",[e._v("Fuel limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])])]),e._v(" "),r("p",[e._v("Blok rollback limitleri:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])]),e._v(" "),r("h3",{attrs:{id:"fuel-tokenlarını-yapılandırın"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fuel-tokenlarını-yapılandırın"}},[e._v("#")]),e._v(" Fuel tokenlarını yapılandırın")]),e._v(" "),r("p",[e._v("Ödüller ve komisyonlar:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])])]),e._v(" "),r("p",[e._v("Fuel oranı dönüşümü:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])])]),e._v(" "),r("p",[e._v("İşlem boyutu ve veri fiyatı:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])])]),e._v(" "),r("p",[e._v("Yeni elemanların fiyatı:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])])]),e._v(" "),r("p",[e._v("İşlemler için fiyat:\n")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#platform-parameters"}},[e._v("Platform Parameters")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#location-to-store-platform-parameters"}},[e._v("Location to store platform parameters")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#change-of-platform-parameters"}},[e._v("Change of platform parameters")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#configure-platform-parameters"}},[e._v("Configure platform parameters")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#configure-the-blockchain-network"}},[e._v("Configure the blockchain network")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#configure-a-new-ecosystem"}},[e._v("Configure a new ecosystem")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#configure-the-database"}},[e._v("Configure the database")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("Configure the generation of blocks")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#configure-the-fuel-tokens"}},[e._v("Configure the fuel tokens")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#depreciated"}},[e._v("Depreciated")])])])]),e._v(" "),r("li",[r("a",{attrs:{href:"#details-of-platform-parameters"}},[e._v("Details of platform parameters")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-address-to-id"}},[e._v("price exec address to id")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-bind-wallet"}},[e._v("price exec bind wallet")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-column-condition"}},[e._v("price exec column condition")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-compile-contract"}},[e._v("price exec compile contract")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-contains"}},[e._v("price exec contains")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-contract-by-id"}},[e._v("price exec contract by id")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-contract-by-name"}},[e._v("price exec contract by name")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-contracts-list"}},[e._v("price exec contracts list")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-create-column"}},[e._v("price exec create column")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-create-ecosystem"}},[e._v("price exec create ecosystem")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-create-table"}},[e._v("price exec create table")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-ecosys-param"}},[e._v("price exec ecosys param")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-eval"}},[e._v("price exec eval")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-eval-condition"}},[e._v("price exec eval condition")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-flush-contract"}},[e._v("price exec flush contract")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-has-prefix"}},[e._v("price exec has prefix")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-id-to-address"}},[e._v("price exec id to address")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-is-object"}},[e._v("price exec is object")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-join"}},[e._v("price exec join")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-json-to-map"}},[e._v("price exec json to map")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-len"}},[e._v("price exec len")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-perm-column"}},[e._v("price exec perm column")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-perm-table"}},[e._v("price exec perm table")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-pub-to-id"}},[e._v("price exec pub to id")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-replace"}},[e._v("price exec replace")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-sha256"}},[e._v("price exec sha256")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-size"}},[e._v("price exec size")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-substr"}},[e._v("price exec substr")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-sys-fuel"}},[e._v("price exec sys fuel")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-sys-param-int"}},[e._v("price exec sys param int")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-sys-param-string"}},[e._v("price exec sys param string")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-table-conditions"}},[e._v("price exec table conditions")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-unbind-wallet"}},[e._v("price exec unbind wallet")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-update-lang"}},[e._v("price exec update lang")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-exec-validate-condition"}},[e._v("price exec validate condition")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])])])])])]),e._v(" "),r("h3",{attrs:{id:"amortismana-tabi-tutuldu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#amortismana-tabi-tutuldu"}},[e._v("#")]),e._v(" Amortismana tabi tutuldu")]),e._v(" "),r("p",[e._v("Amortismana tabi tutulmuş parametreler:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])])]),e._v(" "),r("h2",{attrs:{id:"platform-parametrelerinin-ayrıntıları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#platform-parametrelerinin-ayrıntıları"}},[e._v("#")]),e._v(" Platform parametrelerinin ayrıntıları")]),e._v(" "),r("h3",{attrs:{id:"blok-odulu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#blok-odulu"}},[e._v("#")]),e._v(" blok ödülü")]),e._v(" "),r("p",[e._v("Bloğu oluşturan onur düğümüne verilen IBXC belirteçlerinin sayısı.")]),e._v(" "),r("p",[e._v("Ödülü alan hesap, "),r("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parametresinde belirtilir.")]),e._v(" "),r("h3",{attrs:{id:"blok-zinciri-url-i"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#blok-zinciri-url-i"}},[e._v("#")]),e._v(" blok zinciri url'i")]),e._v(" "),r("p",[e._v("amortismana tabi tutuldu.")]),e._v(" "),r("h3",{attrs:{id:"komisyon-boyutu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#komisyon-boyutu"}},[e._v("#")]),e._v(" komisyon boyutu")]),e._v(" "),r("p",[e._v("Komisyonun yüzdesi.")]),e._v(" "),r("p",[e._v("Komisyon tutarı, sözleşmenin uygulanmasının toplam maliyetinin bir yüzdesi olarak hesaplanır. Komisyon jetonunun birimi IBXC'dir.")]),e._v(" "),r("p",[e._v("Komisyon, komisyon_cüzdan parametresinde belirtilen hesap adresine aktarılacaktır.")]),e._v(" "),r("h3",{attrs:{id:"komisyon-cuzdanı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#komisyon-cuzdanı"}},[e._v("#")]),e._v(" komisyon cüzdanı")]),e._v(" "),r("p",[e._v("Komisyonun alınacağı hesap adresi.")]),e._v(" "),r("p",[e._v("Komisyon miktarı, komisyon_boyutu parametresi ile belirlenir.")]),e._v(" "),r("h3",{attrs:{id:"varsayılan-ekosistem-sozlesmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#varsayılan-ekosistem-sozlesmesi"}},[e._v("#")]),e._v(" varsayılan ekosistem sözleşmesi")]),e._v(" "),r("p",[e._v("Yeni ekosistemdeki varsayılan sözleşmenin kaynak kodu.")]),e._v(" "),r("p",[e._v("Bu sözleşme, ekosistem oluşturucuya erişim sağlar.")]),e._v(" "),r("h3",{attrs:{id:"varsayılan-ekosistem-menusu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#varsayılan-ekosistem-menusu"}},[e._v("#")]),e._v(" varsayılan ekosistem menüsü")]),e._v(" "),r("p",[e._v("Yeni ekosistemin varsayılan menüsünün kaynak kodu.")]),e._v(" "),r("h3",{attrs:{id:"varsayılan-ekosistem-sayfası"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#varsayılan-ekosistem-sayfası"}},[e._v("#")]),e._v(" varsayılan ekosistem sayfası")]),e._v(" "),r("p",[e._v("Yeni ekosistemin varsayılan sayfasının kaynak kodu.")]),e._v(" "),r("h3",{attrs:{id:"fuel-oranı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fuel-oranı"}},[e._v("#")]),e._v(" fuel oranı")]),e._v(" "),r("p",[e._v("Fuel birimine göre farklı ekosistem belirteçlerinin döviz kurları.")]),e._v(" "),r("p",[e._v("Bu parametrenin formatı:")]),e._v(" "),r("p",[r("code",[e._v('[["ecosystem_id", "token_to_fuel_rate"], ["ecosystem_id2", "token_to_fuel_rate2"], ...]')])]),e._v(" "),r("ul",[r("li",[r("p",[r("code",[e._v("ecosystem_id")])]),e._v(" "),r("p",[e._v("Ekosistem ID.")])]),e._v(" "),r("li",[r("p",[r("code",[e._v("token_to_fuel_rate")])]),e._v(" "),r("p",[e._v("Fuel birimine göre tokenın döviz kuru.")])])]),e._v(" "),r("p",[e._v("Örnek:")]),e._v(" "),r("p",[r("code",[e._v('[["1","1000000000000"], ["2", "1000"]]')])]),e._v(" "),r("p",[e._v("Ekosistem 1'in bir jetonu 1.000.000.000.000 Fuel birimiyle değiştirilir. Ekosistem 2'nin bir jetonu 1.000 Fuel birimiyle değiştirilir.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-oranı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-oranı"}},[e._v("#")]),e._v(" fiyat oluşturma oranı")]),e._v(" "),r("p",[e._v("Yeni bir elemanın Fuel oranı.")]),e._v(" "),r("h3",{attrs:{id:"tam-nodelar"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#tam-nodelar"}},[e._v("#")]),e._v(" tam nodelar")]),e._v(" "),r("p",[e._v("Blockchain ağının honor nodelarının listesi.")]),e._v(" "),r("p",[e._v("Bu parametrenin formatı:")]),e._v(" "),r("p",[r("code",[e._v('[{"api_address":"https://apihost1:port1","public_key":"nodepub1","tcp_address":"tcphost1:port2"},{"api_address":"https://apihost2:port1","public_key":"nodepub2","tcp_address":"tcphost2:port2"}]')])]),e._v(" "),r("ul",[r("li",[r("p",[r("code",[e._v("tcp_address")])]),e._v(" "),r("p",[e._v("Node ana bilgisayarının TCP adresi ve bağlantı noktası.\nİşlemler ve yeni bloklar, ilk bloktan tam blok zinciri elde etmek için de kullanılabilen bu ana bilgisayar adresine gönderilecektir.")])]),e._v(" "),r("li",[r("p",[r("code",[e._v("api_address")])]),e._v(" "),r("p",[e._v("API adresi ve düğüm ana bilgisayarının bağlantı noktası.\nAPI adresi aracılığıyla, Weaver kullanmadan platformun herhangi bir işlevine erişebilirsiniz. Ayrıntıları RESTful API'de görün.")])]),e._v(" "),r("li",[r("p",[r("code",[e._v("public_key")])]),e._v(" "),r("p",[e._v("Blok imzasını doğrulamak için kullanılan düğümün genel anahtarı.")])])]),e._v(" "),r("h3",{attrs:{id:"bloklar-arasındaki-bosluk"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#bloklar-arasındaki-bosluk"}},[e._v("#")]),e._v(" bloklar arasındaki boşluk")]),e._v(" "),r("p",[e._v("Bir düğümde iki blok oluşturmanın zaman aralığı (saniye cinsinden).")]),e._v(" "),r("p",[e._v("Ağdaki tüm düğümler, ne zaman yeni bir blok oluşturulacağını belirlemek için bunu kullanır. Mevcut düğüm bu süre içinde yeni bir blok oluşturmazsa, sıra, onur düğümleri listesindeki bir sonraki düğüme geçer.")]),e._v(" "),r("p",[e._v("The minimum value of this parameter is "),r("code",[e._v("1")]),e._v(" second.")]),e._v(" "),r("h3",{attrs:{id:"gunluk-yanlıs-bloklar"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#gunluk-yanlıs-bloklar"}},[e._v("#")]),e._v(" günlük yanlış bloklar")]),e._v(" "),r("p",[e._v("Bir düğümün yasaklanmadan önce bir günde oluşturmasına izin verilen hatalı blokların sayısı.")]),e._v(" "),r("p",[e._v("Ağdaki düğümlerin yarısından fazlası bir düğümden aynı sayıda hatalı blok aldığında, düğüm "),r("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")]),e._v(" içinde belirtilen bir süre içinde ağdan yasaklanır.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-blok-olusturma-suresi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-blok-olusturma-suresi"}},[e._v("#")]),e._v(" maksimum blok oluşturma süresi")]),e._v(" "),r("p",[e._v("Milisaniye cinsinden bir blok oluşturmak için maksimum süre. Bu süre içinde bir blok başarıyla oluşturulmazsa, bir zaman aşımı hatası rapor edilir.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-blok-boyutu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-blok-boyutu"}},[e._v("#")]),e._v(" maksimum blok boyutu")]),e._v(" "),r("p",[e._v("Bir bloğun bayt cinsinden maksimum boyutu.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-sutun"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-sutun"}},[e._v("#")]),e._v(" maksimum sütun")]),e._v(" "),r("p",[e._v("Tek bir tablodaki maksimum alan sayısı.")]),e._v(" "),r("p",[e._v('Ancak, önceden tanımlanmış "id" sütununu içermez.')]),e._v(" "),r("h3",{attrs:{id:"maksimum-forsign-boyutu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-forsign-boyutu"}},[e._v("#")]),e._v(" maksimum forsign boyutu")]),e._v(" "),r("p",[e._v("Bayt cinsinden bir işlem imzasının maksimum boyutu.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-fuel-blogu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-fuel-blogu"}},[e._v("#")]),e._v(" maksimum Fuel bloğu")]),e._v(" "),r("p",[e._v("Tek bir bloğun maksimum toplam Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-fuel-tx"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-fuel-tx"}},[e._v("#")]),e._v(" maksimum Fuel tx")]),e._v(" "),r("p",[e._v("Tek bir işlemin maksimum toplam Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-dizin"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-dizin"}},[e._v("#")]),e._v(" maksimum dizin")]),e._v(" "),r("p",[e._v("Tek bir tablodaki maksimum birincil anahtar alanı sayısı.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-tx-blogu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-tx-blogu"}},[e._v("#")]),e._v(" maksimum tx bloğu")]),e._v(" "),r("p",[e._v("Tek bir bloktaki maksimum işlem sayısı.")]),e._v(" "),r("h3",{attrs:{id:"kullanıcı-basına-maksimum-tx-blogu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#kullanıcı-basına-maksimum-tx-blogu"}},[e._v("#")]),e._v(" kullanıcı başına maksimum tx bloğu")]),e._v(" "),r("p",[e._v("Bir bloktaki bir hesabın maksimum işlem sayısı.")]),e._v(" "),r("h3",{attrs:{id:"maksimum-tx-boyutu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#maksimum-tx-boyutu"}},[e._v("#")]),e._v(" maksimum tx boyutu")]),e._v(" "),r("p",[e._v("Bayt cinsinden bir işlemin maksimum boyutu.")]),e._v(" "),r("h3",{attrs:{id:"dugum-yasagı-suresi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#dugum-yasagı-suresi"}},[e._v("#")]),e._v(" düğüm yasağı süresi")]),e._v(" "),r("p",[e._v("Milisaniye cinsinden düğümün genel yasaklama süresi.")]),e._v(" "),r("p",[e._v("Ağdaki düğümlerin yarısından fazlası bir düğümden [günlük yanlış blok](#günlük yanlış blok) sayısına kadar hatalı bloklar aldığında, düğüm bu süre boyunca ağda yasaklanır .")]),e._v(" "),r("h3",{attrs:{id:"yerel-dugum-yasagı-zamanı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#yerel-dugum-yasagı-zamanı"}},[e._v("#")]),e._v(" yerel düğüm yasağı zamanı")]),e._v(" "),r("p",[e._v("Düğümün milisaniye cinsinden yerel yasaklama süresi.")]),e._v(" "),r("p",[e._v("Bir düğüm başka bir düğümden yanlış bir blok aldığında, bu süre zarfında gönderenin düğümünü yerel olarak yasaklar.")]),e._v(" "),r("h3",{attrs:{id:"dugum-sayısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#dugum-sayısı"}},[e._v("#")]),e._v(" düğüm sayısı")]),e._v(" "),r("p",[r("a",{attrs:{href:"#full-nodes"}},[e._v("tam düğümler")]),e._v(" parametresindeki maksimum honor node sayısı.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-ekosistemi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-ekosistemi"}},[e._v("#")]),e._v(" fiyat oluşturma ekosistemi")]),e._v(" "),r("p",[e._v("Yeni bir tek ekosistem oluşturmak için fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewEcosystem")]),e._v(" sözleşmesinin ek fuel ücretini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için fuel ücreti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için "),r("a",{attrs:{href:"#fuel-oran%C4%B1"}},[e._v("fuel oranı")]),e._v(" ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-uygulaması"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-uygulaması"}},[e._v("#")]),e._v(" fiyat oluşturma uygulaması")]),e._v(" "),r("p",[e._v("Yeni bir tek uygulama oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewApplication")]),e._v(" sözleşmesinin ek Fuel ücretini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel ücreti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-tablosu-olustur"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-tablosu-olustur"}},[e._v("#")]),e._v(" fiyat tablosu oluştur")]),e._v(" "),r("p",[e._v("Yeni bir tek tablo oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewTable")]),e._v(" sözleşmesinin ek Fuel maliyetini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel maliyeti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-sutunu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-sutunu"}},[e._v("#")]),e._v(" fiyat oluşturma sütunu")]),e._v(" "),r("p",[e._v("Yeni bir tek tablo alanı oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewColumn")]),e._v(" sözleşmesinin ek Fuel maliyetini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel maliyeti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-sozlesme-olustur"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-sozlesme-olustur"}},[e._v("#")]),e._v(" fiyat sözleşme oluştur")]),e._v(" "),r("p",[e._v("Yeni bir tek sözleşme oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewContract")]),e._v(" sözleşmesinin ek Fuel maliyetini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel maliyeti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-menusu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-menusu"}},[e._v("#")]),e._v(" fiyat oluşturma menüsü")]),e._v(" "),r("p",[e._v("Yeni tek menü oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewMenu")]),e._v(" sözleşmesinin ek Fuel maliyetini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel maliyeti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-olusturma-sayfası"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-olusturma-sayfası"}},[e._v("#")]),e._v(" fiyat oluşturma sayfası")]),e._v(" "),r("p",[e._v("Yeni bir tek sayfa oluşturmak için Fuel ücreti.")]),e._v(" "),r("p",[e._v("Bu parametre, "),r("code",[e._v("@1NewPage")]),e._v(" sözleşmesinin ek Fuel maliyetini tanımlar. Sözleşme uygulandığında, bu sözleşmenin çeşitli işlevlerinin yerine getirilmesi için Fuel maliyeti de hesaplanacak ve toplam maliyete dahil edilecektir.")]),e._v(" "),r("p",[e._v("Bu parametre Fuel birimlerinde hesaplanır. Fuel birimlerini IBXC jetonlarına dönüştürmek için [Fuel oranı](#Fuel oranı) ve "),r("a",{attrs:{href:"#price-create-rate"}},[e._v("fiyat oluşturma oranı")]),e._v(" kullanın.")]),e._v(" "),r("h3",{attrs:{id:"kimlige-fiyat-yurutme-adresi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#kimlige-fiyat-yurutme-adresi"}},[e._v("#")]),e._v(" kimliğe fiyat yürütme adresi")]),e._v(" "),r("p",[r("code",[e._v("AddressToId()")]),e._v(" işlevini çağırmanın Fuel ücreti, Fuel birimi cinsinden hesaplanır.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-baglama-cuzdanı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-baglama-cuzdanı"}},[e._v("#")]),e._v(" fiyat yürütme bağlama cüzdanı")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Activate()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sutun-kosulu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sutun-kosulu"}},[e._v("#")]),e._v(" fiyat yürütme sütun koşulu")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("ColumnCondition()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sozlesmesi-derleme"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sozlesmesi-derleme"}},[e._v("#")]),e._v(" fiyat yürütme sözleşmesi derleme")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("CompileContract()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sunları-icerir"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sunları-icerir"}},[e._v("#")]),e._v(" fiyat yürütme şunları içerir")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("İçerir()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"kimlige-gore-fiyat-yurutme-sozlesmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#kimlige-gore-fiyat-yurutme-sozlesmesi"}},[e._v("#")]),e._v(" kimliğe göre fiyat yürütme sözleşmesi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("GetContractById()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"isme-gore-fiyat-yurutme-sozlesmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#isme-gore-fiyat-yurutme-sozlesmesi"}},[e._v("#")]),e._v(" isme göre fiyat yürütme sözleşmesi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan "),r("code",[e._v("GetContractByName()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sozlesmeleri-listesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sozlesmeleri-listesi"}},[e._v("#")]),e._v(" fiyat yürütme sözleşmeleri listesi")]),e._v(" "),r("p",[r("code",[e._v("ContractsList()")]),e._v(" işlevini çağırmanın Fuel birimi cinsinden hesaplanan Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sutunu-olustur"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sutunu-olustur"}},[e._v("#")]),e._v(" fiyat yürütme sütunu oluştur")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("CreateColumn()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yonetimi-ekosistem-olustur"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yonetimi-ekosistem-olustur"}},[e._v("#")]),e._v(" fiyat yönetimi ekosistem oluştur")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("CreateEcosystem()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-tablosu-olustur"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-tablosu-olustur"}},[e._v("#")]),e._v(" fiyat yürütme tablosu oluştur")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("CreateTable()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-ecosys-parametresi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-ecosys-parametresi"}},[e._v("#")]),e._v(" fiyat yürütme ecosys parametresi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("EcosysParam()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-degerlendirmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-degerlendirmesi"}},[e._v("#")]),e._v(" fiyat yürütme değerlendirmesi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Evaluation()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-degerlendirme-kosulu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-degerlendirme-kosulu"}},[e._v("#")]),e._v(" fiyat yürütme değerlendirme koşulu")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("EvalCondition()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-gomme-sozlesmesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-gomme-sozlesmesi"}},[e._v("#")]),e._v(" fiyat yürütme gömme sözleşmesi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("FlushContract()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-on-ekine-sahip"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-on-ekine-sahip"}},[e._v("#")]),e._v(" fiyat yürütme ön ekine sahip")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("HasPrefix()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"adrese-fiyat-yurutme-kimligi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#adrese-fiyat-yurutme-kimligi"}},[e._v("#")]),e._v(" adrese fiyat yürütme kimliği")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("IdToAddress()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-nesnedir"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-nesnedir"}},[e._v("#")]),e._v(" fiyat yürütme nesnedir")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("IsObject()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-katılımı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-katılımı"}},[e._v("#")]),e._v(" fiyat yürütme katılımı")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Join()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"eslemek-icin-json-fiyat-yurutme"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#eslemek-icin-json-fiyat-yurutme"}},[e._v("#")]),e._v(" eşlemek için json fiyat yürütme")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("JSONToMap()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yonetimi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yonetimi"}},[e._v("#")]),e._v(" fiyat yönetimi")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Len()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-izni-sutunu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-izni-sutunu"}},[e._v("#")]),e._v(" fiyat yürütme izni sütunu")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("PermColumn()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-izin-tablosu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-izin-tablosu"}},[e._v("#")]),e._v(" fiyat yürütme izin tablosu")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("PermTable()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-pub-ından-kimlige"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-pub-ından-kimlige"}},[e._v("#")]),e._v(" fiyat yürütme pub'ından kimliğe")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("PubToID()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-degistir"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-degistir"}},[e._v("#")]),e._v(" fiyat yürütme değiştir")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Değiştir()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yoneticisi-sha256"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yoneticisi-sha256"}},[e._v("#")]),e._v(" fiyat yöneticisi sha256")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Sha256()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-boyutu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-boyutu"}},[e._v("#")]),e._v(" fiyat yürütme boyutu")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Size()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-altdizini"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-altdizini"}},[e._v("#")]),e._v(" fiyat yürütme altdizini")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("Substr()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sistemi-fuelı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sistemi-fuelı"}},[e._v("#")]),e._v(" fiyat yürütme sistemi Fuelı")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("SysFuel()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sistem-parametresi-int"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sistem-parametresi-int"}},[e._v("#")]),e._v(" fiyat yürütme sistem parametresi int")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("SysParamInt()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-sys-param-dizesi"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-sys-param-dizesi"}},[e._v("#")]),e._v(" fiyat yürütme sys param dizesi")]),e._v(" "),r("p",[r("code",[e._v("SysParamString()")]),e._v(" işlevini çağırmanın Fuel ücreti, Fuel birimlerinde hesaplanır.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-tablosu-kosulları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-tablosu-kosulları"}},[e._v("#")]),e._v(" fiyat yürütme tablosu koşulları")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("TableConditions()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-cuzdanını-coz"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-cuzdanını-coz"}},[e._v("#")]),e._v(" fiyat yürütme cüzdanını çöz")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, 'Deactivate()' işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-guncelleme-dili"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-guncelleme-dili"}},[e._v("#")]),e._v(" fiyat yürütme güncelleme dili")]),e._v(" "),r("p",[e._v("Fuel birimlerinde hesaplanan, "),r("code",[e._v("UpdateLang()")]),e._v(" işlevini çağırmanın Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-yurutme-dogrulama-kosulu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-yurutme-dogrulama-kosulu"}},[e._v("#")]),e._v(" fiyat yürütme doğrulama koşulu")]),e._v(" "),r("p",[r("code",[e._v("ValidateCondition()")]),e._v(" işlevini çağırmanın Fuel ücreti, Fuel birimi cinsinden hesaplanır.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-tx-verileri"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-tx-verileri"}},[e._v("#")]),e._v(" fiyat tx verileri")]),e._v(" "),r("p",[e._v("Bir işlemin her 1024 baytı için Fuel birimi cinsinden hesaplanan Fuel ücreti.")]),e._v(" "),r("h3",{attrs:{id:"fiyat-tx-boyutunda-cuzdan"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fiyat-tx-boyutunda-cuzdan"}},[e._v("#")]),e._v(" fiyat tx boyutunda cüzdan")]),e._v(" "),r("p",[e._v("İşlem boyutuna göre ücret, birimi IBXC tokenidir.")]),e._v(" "),r("p",[e._v("Ekosistem 1 dışında, diğer ekosistemlerde bir sözleşme uygulanırken orantılı olarak bir blok alanı kullanım ücreti alınacaktır ve oranı megabayt başına "),r("em",[e._v("fiyat tx boyutlu cüzdan")]),e._v(" IBXC belirteçleridir.")]),e._v(" "),r("h3",{attrs:{id:"geri-alma-blokları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#geri-alma-blokları"}},[e._v("#")]),e._v(" geri alma blokları")]),e._v(" "),r("p",[e._v("Blok zincirinde bir fork tespit edildiğinde geri alınabilecek maksimum blok sayısı.")])])}),[],!1,null,null,null);a.default=t.exports}}]); \ No newline at end of file diff --git a/assets/js/125.de1e04a4.js b/assets/js/125.e0b91456.js similarity index 99% rename from assets/js/125.de1e04a4.js rename to assets/js/125.e0b91456.js index 3f2cec9..976ab9d 100644 --- a/assets/js/125.de1e04a4.js +++ b/assets/js/125.e0b91456.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{506:function(a,r,e){"use strict";e.r(r);var i=e(51),l=Object(i.a)({},(function(){var a=this,r=a.$createElement,e=a._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#arka-plan-programı"}},[a._v("#")]),a._v(" Arka plan programı")]),a._v(" "),e("p",[a._v("Bu bölümde, IBax düğümlerinin teknik açıdan birbirleriyle nasıl etkileşime girdiğini anlatacağız.")]),a._v(" "),e("h2",{attrs:{id:"sunucu-arka-plan-programı-hakkında"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sunucu-arka-plan-programı-hakkında"}},[a._v("#")]),a._v(" Sunucu arka plan programı hakkında")]),a._v(" "),e("p",[a._v("Sunucu arka plan programının, çeşitli sunucu işlevlerini yürüten ve IBax'ın blok zinciri protokolünü destekleyen her ağ düğümünde çalışması gerekir. Blok zinciri ağında, arka plan programı blokları ve işlemleri dağıtır, yeni bloklar oluşturur ve alınan blokları ve işlemleri doğrular ve fork sorununu önleyebilir.")]),a._v(" "),e("h3",{attrs:{id:"honor-dugumu-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#honor-dugumu-arka-plan-programı"}},[a._v("#")]),a._v(" Honor düğümü arka plan programı")]),a._v(" "),e("p",[a._v("Bir honor düğümü aşağıdaki sunucu arka plan programlarını çalıştırır:")]),a._v(" "),e("ul",[e("li",[e("p",[e("a",{attrs:{href:"#blockgenerator-daemon"}},[a._v("BlockGenerator arka plan programı")])]),a._v(" "),e("p",[a._v("Yeni bloklar oluşturma.")])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#blockcollection-daemon"}},[a._v("BlockCollection arka plan programı")])]),a._v(" "),e("p",[a._v("Diğer düğümlerden yeni bloklar indiriliyor.")])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#confirmations-daemon"}},[a._v("Onaylar arka plan programı")])]),a._v(" "),e("p",[a._v("Düğümdeki blokların diğer düğümlerin çoğunda da bulunduğunun doğrulanması.")])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#disseminator-daemon"}},[a._v("Disseminator arka plan programı")])]),a._v(" "),e("p",[a._v("İşlemleri ve blokları diğer onur düğümlerine dağıtma.")])]),a._v(" "),e("li",[e("p",[a._v("QueueParserBlocks arka plan programı")]),a._v(" "),e("p",[a._v("Diğer düğümlerden gelen blokları içeren kuyruktaki bloklar.")]),a._v(" "),e("p",[a._v("Blok işleme mantığı, "),e("a",{attrs:{href:"#blockcollection-daemon"}},[a._v("BlockCollection arka plan programı")]),a._v(" ile aynıdır.")])]),a._v(" "),e("li",[e("p",[a._v("QueueParserTx arka plan programı")]),a._v(" "),e("p",[a._v("Kuyruktaki işlemlerin doğrulanması.")])]),a._v(" "),e("li",[e("p",[a._v("Zamanlayıcı arka plan programı")]),a._v(" "),e("p",[a._v("Sözleşmeleri planlandığı gibi yürütmek.")])])]),a._v(" "),e("h3",{attrs:{id:"koruyucu-dugum-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#koruyucu-dugum-arka-plan-programı"}},[a._v("#")]),a._v(" Koruyucu düğüm arka plan programı")]),a._v(" "),e("p",[a._v("Bir koruyucu düğüm aşağıdaki sunucu arka plan programlarını çalıştırır:")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#blockcollection-daemon"}},[a._v("BlockCollection daemon")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#confirmations-daemon"}},[a._v("Confirmations daemon")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#disseminator-daemon"}},[a._v("Disseminator daemon")])]),a._v(" "),e("li",[a._v("QueueParserTx")]),a._v(" "),e("li",[a._v("Scheduler")])]),a._v(" "),e("h2",{attrs:{id:"blockcollection-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-arka-plan-programı"}},[a._v("#")]),a._v(" BlockCollection arka plan programı")]),a._v(" "),e("p",[a._v("Bu arka plan programı blokları indirir ve blok zincirini diğer ağ düğümleriyle senkronize eder.")]),a._v(" "),e("h3",{attrs:{id:"blok-zinciri-senkronizasyonu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blok-zinciri-senkronizasyonu"}},[a._v("#")]),a._v(" Blok zinciri senkronizasyonu")]),a._v(" "),e("p",[a._v("Bu arka plan programı, blok zinciri ağındaki maksimum blok yüksekliğini belirleyerek, yeni bloklar talep ederek ve blok zincirindeki fork sorununu çözerek blok zincirini senkronize eder.")]),a._v(" "),e("h4",{attrs:{id:"blockchain-guncellemelerini-kontrol-edin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-guncellemelerini-kontrol-edin"}},[a._v("#")]),a._v(" Blockchain güncellemelerini kontrol edin")]),a._v(" "),e("p",[a._v("Bu arka plan programı, geçerli blok id'ye tüm honor düğümlerine istek gönderir.")]),a._v(" "),e("p",[a._v("Daemon'u çalıştıran düğümün mevcut blok id, herhangi bir honor düğümünün mevcut blok id'sinden küçükse, blok zinciri ağ düğümü güncel değil olarak kabul edilir.")]),a._v(" "),e("h4",{attrs:{id:"yeni-blokları-indirin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#yeni-blokları-indirin"}},[a._v("#")]),a._v(" Yeni blokları indirin")]),a._v(" "),e("p",[a._v("Mevcut en büyük blok yüksekliğini döndüren düğüm, en son düğüm olarak kabul edilir.\nDaemon tüm bilinmeyen blokları indirir.")]),a._v(" "),e("h4",{attrs:{id:"solving-the-fork-issue"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[a._v("#")]),a._v(" Solving the fork issue")]),a._v(" "),e("p",[a._v("Blok zincirinde bir fork algılanırsa, arka plan programı tüm blokları ortak bir ana bloğa indirerek forku geriye doğru hareket ettirir.\nOrtak ana blok bulunduğunda, arka plan programını çalıştıran düğümde bir blok zinciri geri dönüşü gerçekleştirilir ve en sonuncusu dahil edilene kadar blok zincirine doğru blok eklenir..")]),a._v(" "),e("h3",{attrs:{id:"tablolar"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tablolar"}},[a._v("#")]),a._v(" Tablolar")]),a._v(" "),e("p",[a._v("BlocksCollection arka plan programı aşağıdaki tabloları kullanır:")]),a._v(" "),e("ul",[e("li",[a._v("block_chain")]),a._v(" "),e("li",[a._v("transactions")]),a._v(" "),e("li",[a._v("transactions_status")]),a._v(" "),e("li",[a._v("info_block")])]),a._v(" "),e("h3",{attrs:{id:"istek"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),e("p",[a._v("BlockCollection arka plan programı, diğer arka plan programlarına aşağıdaki istekleri gönderir:")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#type-10"}},[a._v("Type 10")]),a._v(", tüm honor düğümleri arasında en büyük blok ID'ye işaret eder.")]),a._v(" "),e("li",[e("a",{attrs:{href:"#type-7"}},[a._v("Tür 7")]),a._v(" en büyük blok ID'nin sahip verilere işaret eder.")])]),a._v(" "),e("h2",{attrs:{id:"blockgenerator-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-arka-plan-programı"}},[a._v("#")]),a._v(" BlockGenerator arka plan programı")]),a._v(" "),e("p",[a._v("BlockGenerator arka plan programı yeni bloklar oluşturur.")]),a._v(" "),e("h3",{attrs:{id:"on-dogrulama"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#on-dogrulama"}},[a._v("#")]),a._v(" Ön doğrulama")]),a._v(" "),e("p",[a._v("BlockGenerator arka plan programı, yeni blok oluşturma planları yapmak için blok zincirindeki en son blokları analiz eder.")]),a._v(" "),e("p",[a._v("Aşağıdaki koşullar karşılanırsa, yeni bir blok oluşturulabilir:")]),a._v(" "),e("ul",[e("li",[a._v("En son bloğu oluşturan düğüm, honor düğümü listesindeki bir düğümdedir ve arka plan programını çalıştırır.")]),a._v(" "),e("li",[a._v("En son doğrulanmamış bloğun oluşturulmasından bu yana geçen en kısa süre.")])]),a._v(" "),e("h3",{attrs:{id:"blok-olusturma"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blok-olusturma"}},[a._v("#")]),a._v(" Blok oluşturma")]),a._v(" "),e("p",[a._v("Daemon tarafından oluşturulan yeni bir blok, diğer düğümlerin "),e("a",{attrs:{href:"#disseminator-daemon"}},[a._v("Disseminator arka plan programından")]),a._v(" alınabilen veya arka plan programını çalıştıran düğüm tarafından oluşturulabilen tüm yeni işlemleri içerir. Oluşturulan blok, düğüm veritabanında saklanır.")]),a._v(" "),e("h3",{attrs:{id:"tablolar-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tablolar-2"}},[a._v("#")]),a._v(" Tablolar")]),a._v(" "),e("p",[a._v("BlockGenerator arka plan programı aşağıdaki tabloları kullanır:")]),a._v(" "),e("ul",[e("li",[a._v("block_chain (saves new blocks)")]),a._v(" "),e("li",[a._v("transactions")]),a._v(" "),e("li",[a._v("transactions_status")]),a._v(" "),e("li",[a._v("info_block")])]),a._v(" "),e("h3",{attrs:{id:"istek-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-2"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),e("p",[a._v("BlockGenerator arka plan programı, diğer arka plan programlarına herhangi bir istekte bulunmaz.")]),a._v(" "),e("h2",{attrs:{id:"disseminator-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-arka-plan-programı"}},[a._v("#")]),a._v(" Disseminator arka plan programı")]),a._v(" "),e("p",[a._v("Disseminator arka plan programı, tüm onur düğümlerine işlemler ve bloklar gönderir.")]),a._v(" "),e("h3",{attrs:{id:"koruyucu-dugum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#koruyucu-dugum"}},[a._v("#")]),a._v(" Koruyucu düğüm")]),a._v(" "),e("p",[a._v("Bir koruyucu düğüm üzerinde çalışırken arka plan programı, düğümü tarafından oluşturulan işlemleri tüm honor düğümlerine gönderir.")]),a._v(" "),e("h3",{attrs:{id:"honor-dugum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#honor-dugum"}},[a._v("#")]),a._v(" Honor düğüm")]),a._v(" "),e("p",[a._v("Bir honor düğümü üzerinde çalışırken, arka plan programı oluşturulan blokları ve işlem hashlerini tüm honor düğümlerine gönderir.")]),a._v(" "),e("p",[a._v("Ardından, honor düğümü, bilmediği işlem isteklerine yanıt verir. Daemon, tam işlem verilerini yanıt olarak gönderir.")]),a._v(" "),e("h3",{attrs:{id:"tablolar-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tablolar-3"}},[a._v("#")]),a._v(" Tablolar")]),a._v(" "),e("p",[a._v("Disseminator arka plan programı aşağıdaki tabloları kullanır:")]),a._v(" "),e("ul",[e("li",[a._v("transactions")])]),a._v(" "),e("h3",{attrs:{id:"istek-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-3"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),e("p",[a._v("Disseminator arka plan programı, diğer arka plan programlarına aşağıdaki istekleri gönderir:")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#type-1"}},[a._v("Tür 1")]),a._v(" Honor düğümüne işlemleri gönderin ve hashleri bloklayın.")]),a._v(" "),e("li",[e("a",{attrs:{href:"#type-2"}},[a._v("Type 2")]),a._v(" Honor düğümünden işlem verilerini alın.")])]),a._v(" "),e("h2",{attrs:{id:"onaylar-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#onaylar-arka-plan-programı"}},[a._v("#")]),a._v(" Onaylar arka plan programı")]),a._v(" "),e("p",[a._v("Onaylar arka plan programı, düğümündeki tüm blokların diğer düğümlerin çoğunda bulunup bulunmadığını kontrol eder.")]),a._v(" "),e("h3",{attrs:{id:"blok-onayı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blok-onayı"}},[a._v("#")]),a._v(" Blok onayı")]),a._v(" "),e("p",[a._v("Ağdaki birden fazla düğüm tarafından onaylanan bir blok, onaylanmış bir blok olarak kabul edilir.")]),a._v(" "),e("p",[a._v("Daemon, veri tabanında henüz onaylanmayan ilk bloktan başlayarak tüm blokları tek tek onaylar.")]),a._v(" "),e("p",[a._v("Her blok aşağıdaki şekilde onaylanır:")]),a._v(" "),e("ul",[e("li",[a._v("Tüm honor düğümlerine onaylanan bloğun kimliğini içeren bir istek göndermek.")]),a._v(" "),e("li",[a._v("Tüm honor düğümleri blok karmasına yanıt verir.")]),a._v(" "),e("li",[a._v("Yanıtlanan hash, arka plan programı düğümündeki bloğun hash değeriyle eşleşirse, onay sayacı değeri artar. Değilse, iptal sayaç değeri artırılır.")])]),a._v(" "),e("h3",{attrs:{id:"tablolar-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tablolar-4"}},[a._v("#")]),a._v(" Tablolar")]),a._v(" "),e("p",[a._v("Onaylar arka plan programı aşağıdaki tabloları kullanır:")]),a._v(" "),e("ul",[e("li",[a._v("confirmation")]),a._v(" "),e("li",[a._v("info_block")])]),a._v(" "),e("h3",{attrs:{id:"istek-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-4"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),e("p",[a._v("Onaylar arka plan programı, diğer arka plan programlarına aşağıdaki istekleri gönderir:")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#type-4"}},[a._v("Type 4")]),a._v(" Onur düğümünden blok hashlerini isteyin.")])]),a._v(" "),e("h2",{attrs:{id:"tcp-hizmet-protokolu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tcp-hizmet-protokolu"}},[a._v("#")]),a._v(" TCP hizmet protokolü")]),a._v(" "),e("p",[a._v("TCP hizmet protokolü, BlocksCollection, Dağıtıcı ve Onay arka plan programlarından gelen istekler için TCP'deki ikili protokolü kullanan onur düğümleri ve koruyucu düğümler üzerinde çalışır.")]),a._v(" "),e("h2",{attrs:{id:"istek-turu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-turu"}},[a._v("#")]),a._v(" İstek Türü")]),a._v(" "),e("p",[a._v("Her isteğin, isteğin ilk iki baytı tarafından tanımlanan bir türü vardır.")]),a._v(" "),e("h2",{attrs:{id:"tip-1"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tip-1"}},[a._v("#")]),a._v(" Tip 1")]),a._v(" "),e("h4",{attrs:{id:"istek-gonderen"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-gonderen"}},[a._v("#")]),a._v(" İstek gönderen")]),a._v(" "),e("p",[a._v("Bu istek "),e("a",{attrs:{href:"#disseminator-daemon"}},[a._v("Disseminator arka plan programı")]),a._v(" tarafından gönderilir.")]),a._v(" "),e("h4",{attrs:{id:"veri-iste"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veri-iste"}},[a._v("#")]),a._v(" Veri iste")]),a._v(" "),e("p",[a._v("İşlemin ve bloğun hashi.")]),a._v(" "),e("h4",{attrs:{id:"talep-isleme"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#talep-isleme"}},[a._v("#")]),a._v(" Talep işleme")]),a._v(" "),e("p",[a._v("Blok hash, blok kuyruğuna eklenir.")]),a._v(" "),e("p",[a._v("İşlem hash analiz eder ve doğrular ve henüz düğümde görünmeyen işlemleri seçer.")]),a._v(" "),e("h4",{attrs:{id:"cevap"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cevap"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),e("p",[a._v("Hayır. İsteği işledikten sonra bir "),e("a",{attrs:{href:"#type-2"}},[a._v("Type 2")]),a._v(" isteği verilir.")]),a._v(" "),e("h2",{attrs:{id:"tip-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tip-2"}},[a._v("#")]),a._v(" Tip 2")]),a._v(" "),e("h4",{attrs:{id:"istek-gonderen-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-gonderen-2"}},[a._v("#")]),a._v(" İstek gönderen")]),a._v(" "),e("p",[a._v("Bu istek "),e("a",{attrs:{href:"#disseminator-daemon"}},[a._v("Disseminator arka plan programı")]),a._v(" tarafından gönderilir.")]),a._v(" "),e("h4",{attrs:{id:"veri-iste-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veri-iste-2"}},[a._v("#")]),a._v(" Veri iste")]),a._v(" "),e("p",[a._v("Veri boyutu da dahil olmak üzere işlem verileri:")]),a._v(" "),e("ul",[e("li",[e("p",[a._v("data_size (4 bytes)")])]),a._v(" "),e("li",[e("p",[a._v("Size of the transaction data, in bytes.")])]),a._v(" "),e("li",[e("p",[a._v("data (data_size bytes)")])])]),a._v(" "),e("p",[a._v("İşlem verileri.")]),a._v(" "),e("h4",{attrs:{id:"talep-isleme-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#talep-isleme-2"}},[a._v("#")]),a._v(" Talep işleme")]),a._v(" "),e("p",[a._v("İşlemi doğrular ve işlem kuyruğuna ekler.")]),a._v(" "),e("h4",{attrs:{id:"cevap-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cevap-2"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),e("p",[a._v("Hayır.")]),a._v(" "),e("h2",{attrs:{id:"tip-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tip-4"}},[a._v("#")]),a._v(" Tip 4")]),a._v(" "),e("h4",{attrs:{id:"istek-gonderen-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-gonderen-3"}},[a._v("#")]),a._v(" İstek gönderen")]),a._v(" "),e("p",[a._v("Bu istek "),e("a",{attrs:{href:"#confirmations-daemon"}},[a._v("Onaylar arka plan programı")]),a._v(" tarafından gönderilir.")]),a._v(" "),e("h4",{attrs:{id:"veri-iste-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veri-iste-3"}},[a._v("#")]),a._v(" Veri iste")]),a._v(" "),e("p",[a._v("Block ID.")]),a._v(" "),e("h4",{attrs:{id:"cevap-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cevap-3"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),e("p",[a._v("Block hash.")]),a._v(" "),e("p",[a._v('Bu ID\'ye sahip bir blok yoksa "0" döndürür.')]),a._v(" "),e("h2",{attrs:{id:"tip-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tip-7"}},[a._v("#")]),a._v(" Tip 7")]),a._v(" "),e("h4",{attrs:{id:"istek-gonderen-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-gonderen-4"}},[a._v("#")]),a._v(" İstek gönderen")]),a._v(" "),e("p",[a._v("Bu istek "),e("a",{attrs:{href:"#blockcollection-daemon"}},[a._v("BlockCollection arka plan programı")]),a._v(" tarafından gönderilir.")]),a._v(" "),e("h4",{attrs:{id:"veri-iste-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veri-iste-4"}},[a._v("#")]),a._v(" Veri iste")]),a._v(" "),e("p",[a._v("Block ID.")]),a._v(" "),e("ul",[e("li",[a._v("block_id (4 bytes)")])]),a._v(" "),e("h4",{attrs:{id:"cevap-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cevap-4"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),e("p",[a._v("Veri boyutu dahil blok verileri.")]),a._v(" "),e("ul",[e("li",[e("p",[a._v("data_size (4 bytes)")])]),a._v(" "),e("li",[e("p",[a._v("Size of the block data, in bytes.")])]),a._v(" "),e("li",[e("p",[a._v("data (data_size bytes)")])])]),a._v(" "),e("p",[a._v("Blok verileri.")]),a._v(" "),e("p",[a._v("Bu kimliğe sahip bir blok yoksa bağlantı kapatılır.")]),a._v(" "),e("h2",{attrs:{id:"tip-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tip-10"}},[a._v("#")]),a._v(" Tip 10")]),a._v(" "),e("h4",{attrs:{id:"istek-gonderen-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-gonderen-5"}},[a._v("#")]),a._v(" İstek gönderen")]),a._v(" "),e("p",[a._v("Bu istek "),e("a",{attrs:{href:"#blockcollection-daemon"}},[a._v("BlockCollection arka plan programı")]),a._v(" tarafından gönderilir.")]),a._v(" "),e("h4",{attrs:{id:"veri-iste-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veri-iste-5"}},[a._v("#")]),a._v(" Veri iste")]),a._v(" "),e("p",[a._v("Hayır.")]),a._v(" "),e("h4",{attrs:{id:"cevap-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cevap-5"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),e("p",[a._v("Block ID.")]),a._v(" "),e("ul",[e("li",[a._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);r.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{505:function(a,r,e){"use strict";e.r(r);var i=e(51),l=Object(i.a)({},(function(){var a=this,r=a.$createElement,e=a._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#arka-plan-programı"}},[a._v("#")]),a._v(" Arka plan programı")]),a._v(" "),e("p",[a._v("Bu bölümde, IBax düğümlerinin teknik açıdan birbirleriyle nasıl etkileşime girdiğini anlatacağız.")]),a._v(" "),e("h2",{attrs:{id:"sunucu-arka-plan-programı-hakkında"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sunucu-arka-plan-programı-hakkında"}},[a._v("#")]),a._v(" Sunucu arka plan programı hakkında")]),a._v(" "),e("p",[a._v("Sunucu arka plan programının, çeşitli sunucu işlevlerini yürüten ve IBax'ın blok zinciri protokolünü destekleyen her ağ düğümünde çalışması gerekir. Blok zinciri ağında, arka plan programı blokları ve işlemleri dağıtır, yeni bloklar oluşturur ve alınan blokları ve işlemleri doğrular ve fork sorununu önleyebilir.")]),a._v(" "),e("h3",{attrs:{id:"honor-dugumu-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#honor-dugumu-arka-plan-programı"}},[a._v("#")]),a._v(" Honor düğümü arka plan programı")]),a._v(" "),e("p",[a._v("Bir honor düğümü aşağıdaki sunucu arka plan programlarını çalıştırır:")]),a._v(" "),e("ul",[e("li",[e("p",[e("a",{attrs:{href:"#blockgenerator-daemon"}},[a._v("BlockGenerator arka plan programı")])]),a._v(" "),e("p",[a._v("Yeni bloklar oluşturma.")])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#blockcollection-daemon"}},[a._v("BlockCollection arka plan programı")])]),a._v(" "),e("p",[a._v("Diğer düğümlerden yeni bloklar indiriliyor.")])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#confirmations-daemon"}},[a._v("Onaylar arka plan programı")])]),a._v(" "),e("p",[a._v("Düğümdeki blokların diğer düğümlerin çoğunda da bulunduğunun doğrulanması.")])]),a._v(" "),e("li",[e("p",[e("a",{attrs:{href:"#disseminator-daemon"}},[a._v("Disseminator arka plan programı")])]),a._v(" "),e("p",[a._v("İşlemleri ve blokları diğer onur düğümlerine dağıtma.")])]),a._v(" "),e("li",[e("p",[a._v("QueueParserBlocks arka plan programı")]),a._v(" "),e("p",[a._v("Diğer düğümlerden gelen blokları içeren kuyruktaki bloklar.")]),a._v(" "),e("p",[a._v("Blok işleme mantığı, "),e("a",{attrs:{href:"#blockcollection-daemon"}},[a._v("BlockCollection arka plan programı")]),a._v(" ile aynıdır.")])]),a._v(" "),e("li",[e("p",[a._v("QueueParserTx arka plan programı")]),a._v(" "),e("p",[a._v("Kuyruktaki işlemlerin doğrulanması.")])]),a._v(" "),e("li",[e("p",[a._v("Zamanlayıcı arka plan programı")]),a._v(" "),e("p",[a._v("Sözleşmeleri planlandığı gibi yürütmek.")])])]),a._v(" "),e("h3",{attrs:{id:"koruyucu-dugum-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#koruyucu-dugum-arka-plan-programı"}},[a._v("#")]),a._v(" Koruyucu düğüm arka plan programı")]),a._v(" "),e("p",[a._v("Bir koruyucu düğüm aşağıdaki sunucu arka plan programlarını çalıştırır:")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#blockcollection-daemon"}},[a._v("BlockCollection daemon")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#confirmations-daemon"}},[a._v("Confirmations daemon")])]),a._v(" "),e("li",[e("a",{attrs:{href:"#disseminator-daemon"}},[a._v("Disseminator daemon")])]),a._v(" "),e("li",[a._v("QueueParserTx")]),a._v(" "),e("li",[a._v("Scheduler")])]),a._v(" "),e("h2",{attrs:{id:"blockcollection-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-arka-plan-programı"}},[a._v("#")]),a._v(" BlockCollection arka plan programı")]),a._v(" "),e("p",[a._v("Bu arka plan programı blokları indirir ve blok zincirini diğer ağ düğümleriyle senkronize eder.")]),a._v(" "),e("h3",{attrs:{id:"blok-zinciri-senkronizasyonu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blok-zinciri-senkronizasyonu"}},[a._v("#")]),a._v(" Blok zinciri senkronizasyonu")]),a._v(" "),e("p",[a._v("Bu arka plan programı, blok zinciri ağındaki maksimum blok yüksekliğini belirleyerek, yeni bloklar talep ederek ve blok zincirindeki fork sorununu çözerek blok zincirini senkronize eder.")]),a._v(" "),e("h4",{attrs:{id:"blockchain-guncellemelerini-kontrol-edin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-guncellemelerini-kontrol-edin"}},[a._v("#")]),a._v(" Blockchain güncellemelerini kontrol edin")]),a._v(" "),e("p",[a._v("Bu arka plan programı, geçerli blok id'ye tüm honor düğümlerine istek gönderir.")]),a._v(" "),e("p",[a._v("Daemon'u çalıştıran düğümün mevcut blok id, herhangi bir honor düğümünün mevcut blok id'sinden küçükse, blok zinciri ağ düğümü güncel değil olarak kabul edilir.")]),a._v(" "),e("h4",{attrs:{id:"yeni-blokları-indirin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#yeni-blokları-indirin"}},[a._v("#")]),a._v(" Yeni blokları indirin")]),a._v(" "),e("p",[a._v("Mevcut en büyük blok yüksekliğini döndüren düğüm, en son düğüm olarak kabul edilir.\nDaemon tüm bilinmeyen blokları indirir.")]),a._v(" "),e("h4",{attrs:{id:"solving-the-fork-issue"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[a._v("#")]),a._v(" Solving the fork issue")]),a._v(" "),e("p",[a._v("Blok zincirinde bir fork algılanırsa, arka plan programı tüm blokları ortak bir ana bloğa indirerek forku geriye doğru hareket ettirir.\nOrtak ana blok bulunduğunda, arka plan programını çalıştıran düğümde bir blok zinciri geri dönüşü gerçekleştirilir ve en sonuncusu dahil edilene kadar blok zincirine doğru blok eklenir..")]),a._v(" "),e("h3",{attrs:{id:"tablolar"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tablolar"}},[a._v("#")]),a._v(" Tablolar")]),a._v(" "),e("p",[a._v("BlocksCollection arka plan programı aşağıdaki tabloları kullanır:")]),a._v(" "),e("ul",[e("li",[a._v("block_chain")]),a._v(" "),e("li",[a._v("transactions")]),a._v(" "),e("li",[a._v("transactions_status")]),a._v(" "),e("li",[a._v("info_block")])]),a._v(" "),e("h3",{attrs:{id:"istek"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),e("p",[a._v("BlockCollection arka plan programı, diğer arka plan programlarına aşağıdaki istekleri gönderir:")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#type-10"}},[a._v("Type 10")]),a._v(", tüm honor düğümleri arasında en büyük blok ID'ye işaret eder.")]),a._v(" "),e("li",[e("a",{attrs:{href:"#type-7"}},[a._v("Tür 7")]),a._v(" en büyük blok ID'nin sahip verilere işaret eder.")])]),a._v(" "),e("h2",{attrs:{id:"blockgenerator-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-arka-plan-programı"}},[a._v("#")]),a._v(" BlockGenerator arka plan programı")]),a._v(" "),e("p",[a._v("BlockGenerator arka plan programı yeni bloklar oluşturur.")]),a._v(" "),e("h3",{attrs:{id:"on-dogrulama"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#on-dogrulama"}},[a._v("#")]),a._v(" Ön doğrulama")]),a._v(" "),e("p",[a._v("BlockGenerator arka plan programı, yeni blok oluşturma planları yapmak için blok zincirindeki en son blokları analiz eder.")]),a._v(" "),e("p",[a._v("Aşağıdaki koşullar karşılanırsa, yeni bir blok oluşturulabilir:")]),a._v(" "),e("ul",[e("li",[a._v("En son bloğu oluşturan düğüm, honor düğümü listesindeki bir düğümdedir ve arka plan programını çalıştırır.")]),a._v(" "),e("li",[a._v("En son doğrulanmamış bloğun oluşturulmasından bu yana geçen en kısa süre.")])]),a._v(" "),e("h3",{attrs:{id:"blok-olusturma"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blok-olusturma"}},[a._v("#")]),a._v(" Blok oluşturma")]),a._v(" "),e("p",[a._v("Daemon tarafından oluşturulan yeni bir blok, diğer düğümlerin "),e("a",{attrs:{href:"#disseminator-daemon"}},[a._v("Disseminator arka plan programından")]),a._v(" alınabilen veya arka plan programını çalıştıran düğüm tarafından oluşturulabilen tüm yeni işlemleri içerir. Oluşturulan blok, düğüm veritabanında saklanır.")]),a._v(" "),e("h3",{attrs:{id:"tablolar-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tablolar-2"}},[a._v("#")]),a._v(" Tablolar")]),a._v(" "),e("p",[a._v("BlockGenerator arka plan programı aşağıdaki tabloları kullanır:")]),a._v(" "),e("ul",[e("li",[a._v("block_chain (saves new blocks)")]),a._v(" "),e("li",[a._v("transactions")]),a._v(" "),e("li",[a._v("transactions_status")]),a._v(" "),e("li",[a._v("info_block")])]),a._v(" "),e("h3",{attrs:{id:"istek-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-2"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),e("p",[a._v("BlockGenerator arka plan programı, diğer arka plan programlarına herhangi bir istekte bulunmaz.")]),a._v(" "),e("h2",{attrs:{id:"disseminator-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-arka-plan-programı"}},[a._v("#")]),a._v(" Disseminator arka plan programı")]),a._v(" "),e("p",[a._v("Disseminator arka plan programı, tüm onur düğümlerine işlemler ve bloklar gönderir.")]),a._v(" "),e("h3",{attrs:{id:"koruyucu-dugum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#koruyucu-dugum"}},[a._v("#")]),a._v(" Koruyucu düğüm")]),a._v(" "),e("p",[a._v("Bir koruyucu düğüm üzerinde çalışırken arka plan programı, düğümü tarafından oluşturulan işlemleri tüm honor düğümlerine gönderir.")]),a._v(" "),e("h3",{attrs:{id:"honor-dugum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#honor-dugum"}},[a._v("#")]),a._v(" Honor düğüm")]),a._v(" "),e("p",[a._v("Bir honor düğümü üzerinde çalışırken, arka plan programı oluşturulan blokları ve işlem hashlerini tüm honor düğümlerine gönderir.")]),a._v(" "),e("p",[a._v("Ardından, honor düğümü, bilmediği işlem isteklerine yanıt verir. Daemon, tam işlem verilerini yanıt olarak gönderir.")]),a._v(" "),e("h3",{attrs:{id:"tablolar-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tablolar-3"}},[a._v("#")]),a._v(" Tablolar")]),a._v(" "),e("p",[a._v("Disseminator arka plan programı aşağıdaki tabloları kullanır:")]),a._v(" "),e("ul",[e("li",[a._v("transactions")])]),a._v(" "),e("h3",{attrs:{id:"istek-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-3"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),e("p",[a._v("Disseminator arka plan programı, diğer arka plan programlarına aşağıdaki istekleri gönderir:")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#type-1"}},[a._v("Tür 1")]),a._v(" Honor düğümüne işlemleri gönderin ve hashleri bloklayın.")]),a._v(" "),e("li",[e("a",{attrs:{href:"#type-2"}},[a._v("Type 2")]),a._v(" Honor düğümünden işlem verilerini alın.")])]),a._v(" "),e("h2",{attrs:{id:"onaylar-arka-plan-programı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#onaylar-arka-plan-programı"}},[a._v("#")]),a._v(" Onaylar arka plan programı")]),a._v(" "),e("p",[a._v("Onaylar arka plan programı, düğümündeki tüm blokların diğer düğümlerin çoğunda bulunup bulunmadığını kontrol eder.")]),a._v(" "),e("h3",{attrs:{id:"blok-onayı"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blok-onayı"}},[a._v("#")]),a._v(" Blok onayı")]),a._v(" "),e("p",[a._v("Ağdaki birden fazla düğüm tarafından onaylanan bir blok, onaylanmış bir blok olarak kabul edilir.")]),a._v(" "),e("p",[a._v("Daemon, veri tabanında henüz onaylanmayan ilk bloktan başlayarak tüm blokları tek tek onaylar.")]),a._v(" "),e("p",[a._v("Her blok aşağıdaki şekilde onaylanır:")]),a._v(" "),e("ul",[e("li",[a._v("Tüm honor düğümlerine onaylanan bloğun kimliğini içeren bir istek göndermek.")]),a._v(" "),e("li",[a._v("Tüm honor düğümleri blok karmasına yanıt verir.")]),a._v(" "),e("li",[a._v("Yanıtlanan hash, arka plan programı düğümündeki bloğun hash değeriyle eşleşirse, onay sayacı değeri artar. Değilse, iptal sayaç değeri artırılır.")])]),a._v(" "),e("h3",{attrs:{id:"tablolar-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tablolar-4"}},[a._v("#")]),a._v(" Tablolar")]),a._v(" "),e("p",[a._v("Onaylar arka plan programı aşağıdaki tabloları kullanır:")]),a._v(" "),e("ul",[e("li",[a._v("confirmation")]),a._v(" "),e("li",[a._v("info_block")])]),a._v(" "),e("h3",{attrs:{id:"istek-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-4"}},[a._v("#")]),a._v(" İstek")]),a._v(" "),e("p",[a._v("Onaylar arka plan programı, diğer arka plan programlarına aşağıdaki istekleri gönderir:")]),a._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#type-4"}},[a._v("Type 4")]),a._v(" Onur düğümünden blok hashlerini isteyin.")])]),a._v(" "),e("h2",{attrs:{id:"tcp-hizmet-protokolu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tcp-hizmet-protokolu"}},[a._v("#")]),a._v(" TCP hizmet protokolü")]),a._v(" "),e("p",[a._v("TCP hizmet protokolü, BlocksCollection, Dağıtıcı ve Onay arka plan programlarından gelen istekler için TCP'deki ikili protokolü kullanan onur düğümleri ve koruyucu düğümler üzerinde çalışır.")]),a._v(" "),e("h2",{attrs:{id:"istek-turu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-turu"}},[a._v("#")]),a._v(" İstek Türü")]),a._v(" "),e("p",[a._v("Her isteğin, isteğin ilk iki baytı tarafından tanımlanan bir türü vardır.")]),a._v(" "),e("h2",{attrs:{id:"tip-1"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tip-1"}},[a._v("#")]),a._v(" Tip 1")]),a._v(" "),e("h4",{attrs:{id:"istek-gonderen"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-gonderen"}},[a._v("#")]),a._v(" İstek gönderen")]),a._v(" "),e("p",[a._v("Bu istek "),e("a",{attrs:{href:"#disseminator-daemon"}},[a._v("Disseminator arka plan programı")]),a._v(" tarafından gönderilir.")]),a._v(" "),e("h4",{attrs:{id:"veri-iste"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veri-iste"}},[a._v("#")]),a._v(" Veri iste")]),a._v(" "),e("p",[a._v("İşlemin ve bloğun hashi.")]),a._v(" "),e("h4",{attrs:{id:"talep-isleme"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#talep-isleme"}},[a._v("#")]),a._v(" Talep işleme")]),a._v(" "),e("p",[a._v("Blok hash, blok kuyruğuna eklenir.")]),a._v(" "),e("p",[a._v("İşlem hash analiz eder ve doğrular ve henüz düğümde görünmeyen işlemleri seçer.")]),a._v(" "),e("h4",{attrs:{id:"cevap"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cevap"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),e("p",[a._v("Hayır. İsteği işledikten sonra bir "),e("a",{attrs:{href:"#type-2"}},[a._v("Type 2")]),a._v(" isteği verilir.")]),a._v(" "),e("h2",{attrs:{id:"tip-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tip-2"}},[a._v("#")]),a._v(" Tip 2")]),a._v(" "),e("h4",{attrs:{id:"istek-gonderen-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-gonderen-2"}},[a._v("#")]),a._v(" İstek gönderen")]),a._v(" "),e("p",[a._v("Bu istek "),e("a",{attrs:{href:"#disseminator-daemon"}},[a._v("Disseminator arka plan programı")]),a._v(" tarafından gönderilir.")]),a._v(" "),e("h4",{attrs:{id:"veri-iste-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veri-iste-2"}},[a._v("#")]),a._v(" Veri iste")]),a._v(" "),e("p",[a._v("Veri boyutu da dahil olmak üzere işlem verileri:")]),a._v(" "),e("ul",[e("li",[e("p",[a._v("data_size (4 bytes)")])]),a._v(" "),e("li",[e("p",[a._v("Size of the transaction data, in bytes.")])]),a._v(" "),e("li",[e("p",[a._v("data (data_size bytes)")])])]),a._v(" "),e("p",[a._v("İşlem verileri.")]),a._v(" "),e("h4",{attrs:{id:"talep-isleme-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#talep-isleme-2"}},[a._v("#")]),a._v(" Talep işleme")]),a._v(" "),e("p",[a._v("İşlemi doğrular ve işlem kuyruğuna ekler.")]),a._v(" "),e("h4",{attrs:{id:"cevap-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cevap-2"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),e("p",[a._v("Hayır.")]),a._v(" "),e("h2",{attrs:{id:"tip-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tip-4"}},[a._v("#")]),a._v(" Tip 4")]),a._v(" "),e("h4",{attrs:{id:"istek-gonderen-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-gonderen-3"}},[a._v("#")]),a._v(" İstek gönderen")]),a._v(" "),e("p",[a._v("Bu istek "),e("a",{attrs:{href:"#confirmations-daemon"}},[a._v("Onaylar arka plan programı")]),a._v(" tarafından gönderilir.")]),a._v(" "),e("h4",{attrs:{id:"veri-iste-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veri-iste-3"}},[a._v("#")]),a._v(" Veri iste")]),a._v(" "),e("p",[a._v("Block ID.")]),a._v(" "),e("h4",{attrs:{id:"cevap-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cevap-3"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),e("p",[a._v("Block hash.")]),a._v(" "),e("p",[a._v('Bu ID\'ye sahip bir blok yoksa "0" döndürür.')]),a._v(" "),e("h2",{attrs:{id:"tip-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tip-7"}},[a._v("#")]),a._v(" Tip 7")]),a._v(" "),e("h4",{attrs:{id:"istek-gonderen-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-gonderen-4"}},[a._v("#")]),a._v(" İstek gönderen")]),a._v(" "),e("p",[a._v("Bu istek "),e("a",{attrs:{href:"#blockcollection-daemon"}},[a._v("BlockCollection arka plan programı")]),a._v(" tarafından gönderilir.")]),a._v(" "),e("h4",{attrs:{id:"veri-iste-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veri-iste-4"}},[a._v("#")]),a._v(" Veri iste")]),a._v(" "),e("p",[a._v("Block ID.")]),a._v(" "),e("ul",[e("li",[a._v("block_id (4 bytes)")])]),a._v(" "),e("h4",{attrs:{id:"cevap-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cevap-4"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),e("p",[a._v("Veri boyutu dahil blok verileri.")]),a._v(" "),e("ul",[e("li",[e("p",[a._v("data_size (4 bytes)")])]),a._v(" "),e("li",[e("p",[a._v("Size of the block data, in bytes.")])]),a._v(" "),e("li",[e("p",[a._v("data (data_size bytes)")])])]),a._v(" "),e("p",[a._v("Blok verileri.")]),a._v(" "),e("p",[a._v("Bu kimliğe sahip bir blok yoksa bağlantı kapatılır.")]),a._v(" "),e("h2",{attrs:{id:"tip-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#tip-10"}},[a._v("#")]),a._v(" Tip 10")]),a._v(" "),e("h4",{attrs:{id:"istek-gonderen-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#istek-gonderen-5"}},[a._v("#")]),a._v(" İstek gönderen")]),a._v(" "),e("p",[a._v("Bu istek "),e("a",{attrs:{href:"#blockcollection-daemon"}},[a._v("BlockCollection arka plan programı")]),a._v(" tarafından gönderilir.")]),a._v(" "),e("h4",{attrs:{id:"veri-iste-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#veri-iste-5"}},[a._v("#")]),a._v(" Veri iste")]),a._v(" "),e("p",[a._v("Hayır.")]),a._v(" "),e("h4",{attrs:{id:"cevap-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cevap-5"}},[a._v("#")]),a._v(" Cevap")]),a._v(" "),e("p",[a._v("Block ID.")]),a._v(" "),e("ul",[e("li",[a._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);r.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/126.1979b4ba.js b/assets/js/126.6718f6ab.js similarity index 99% rename from assets/js/126.1979b4ba.js rename to assets/js/126.6718f6ab.js index be7ea6b..4f455c5 100644 --- a/assets/js/126.1979b4ba.js +++ b/assets/js/126.6718f6ab.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{505:function(a,e,t){"use strict";t.r(e);var r=t(51),i=Object(r.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"akıllı-kontratlar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#akıllı-kontratlar"}},[a._v("#")]),a._v(" Akıllı kontratlar")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Kontrat-yap%C4%B1s%C4%B1"}},[a._v("Kontrat Yapısı")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#data-section"}},[a._v("Data section")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#conditions-section"}},[a._v("Conditions section")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#action-section"}},[a._v("Action section")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#De%C4%9Fi%C5%9Fkenler"}},[a._v("Değişkenler")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#%C4%B0%C3%A7-%C4%B0%C3%A7e-S%C3%B6zle%C5%9Fmeler"}},[a._v("İç İçe Sözleşmeler")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#Dosya-Y%C3%BCkleme"}},[a._v("Dosya Yükleme")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#Json-format%C4%B1nda-sorgular"}},[a._v("Json formatında sorgular")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#Tarih-ve-saat-i%C5%9Flemleri-i%C3%A7eren-sorgular"}},[a._v("Tarih ve saat işlemleri içeren sorgular")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#Needle-s%C3%B6zle%C5%9Fme-dili"}},[a._v("Needle sözleşme dili")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Temel-elemanlar-ve-yap%C4%B1"}},[a._v("Temel elemanlar ve yapı")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#Veri-t%C3%BCrleri-ve-de%C4%9Fi%C5%9Fkenler"}},[a._v("Veri türleri ve değişkenler")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#Dizi"}},[a._v("Dizi")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#If-ve-While-ifadeleri"}},[a._v("If ve While ifadeleri")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#Fonksiyonlar"}},[a._v("Fonksiyonlar")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Fonksiyon-atamalar%C4%B1"}},[a._v("Fonksiyon atamaları")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#De%C4%9Fi%C5%9Fken-uzunluklu-parametreler"}},[a._v("Değişken-uzunluklu parametreler")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#Opsiyonel-parametreler"}},[a._v("Opsiyonel parametreler")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#Needle-fonksiyonlar%C4%B1n%C4%B1n-s%C4%B1n%C4%B1fland%C4%B1r%C4%B1lmas%C4%B1"}},[a._v("Needle fonksiyonlarının sınıflandırılması")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#Needle-fonksiyonlar%C4%B1-referans%C4%B1"}},[a._v("Needle fonksiyonları referansı")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#appparam"}},[a._v("AppParam")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#dbfind"}},[a._v("DBFind")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#dbrow"}},[a._v("DBRow")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#dbselectmetrics"}},[a._v("DBSelectMetrics")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#ecosysparam"}},[a._v("EcosysParam")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#gethistory"}},[a._v("GetHistory")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#gethistoryrow"}},[a._v("GetHistoryRow")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#getcolumntype"}},[a._v("GetColumnType")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#getdatafromxlsx"}},[a._v("GetDataFromXLSX")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#getrowscountxlsx"}},[a._v("GetRowsCountXLSX")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#langres"}},[a._v("LangRes")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#getblock"}},[a._v("GetBlock")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#dbinsert"}},[a._v("DBInsert")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#dbupdate"}},[a._v("DBUpdate")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#dbupdateext"}},[a._v("DBUpdateExt")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#delcolumn"}},[a._v("DelColumn")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#deltable"}},[a._v("DelTable")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#append"}},[a._v("Append")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#join"}},[a._v("Join")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#split"}},[a._v("Split")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#len"}},[a._v("Len")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#row"}},[a._v("Row")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#one"}},[a._v("One")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#getmapkeys"}},[a._v("GetMapKeys")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#sortedkeys"}},[a._v("SortedKeys")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#callcontract"}},[a._v("CallContract")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#contractaccess"}},[a._v("ContractAccess")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#contractconditions"}},[a._v("ContractConditions")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#evalcondition"}},[a._v("EvalCondition")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#getcontractbyid"}},[a._v("GetContractById")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#getcontractbyname"}},[a._v("GetContractByName")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#roleaccess"}},[a._v("RoleAccess")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#transactioninfo"}},[a._v("TransactionInfo")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#throw"}},[a._v("Throw")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#validatecondition"}},[a._v("ValidateCondition")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#addresstoid"}},[a._v("AddressToId")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#idtoaddress"}},[a._v("IdToAddress")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#pubtoid"}},[a._v("PubToID")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#decodebase64"}},[a._v("DecodeBase64")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#encodebase64"}},[a._v("EncodeBase64")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#float"}},[a._v("Float")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#hextobytes"}},[a._v("HexToBytes")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#formatmoney"}},[a._v("FormatMoney")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#random"}},[a._v("Random")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#int"}},[a._v("Int")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#hash"}},[a._v("Hash")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#sha256"}},[a._v("Sha256")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#str"}},[a._v("Str")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#jsonencode"}},[a._v("JSONEncode")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#jsonencodeindent"}},[a._v("JSONEncodeIndent")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#jsondecode"}},[a._v("JSONDecode")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#hasprefix"}},[a._v("HasPrefix")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#contains"}},[a._v("Contains")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#replace"}},[a._v("Replace")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#size"}},[a._v("Size")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#sprintf"}},[a._v("Sprintf")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#substr"}},[a._v("Substr")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#tolower"}},[a._v("ToLower")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#toupper"}},[a._v("ToUpper")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#trimspace"}},[a._v("TrimSpace")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#floor"}},[a._v("Floor")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#log"}},[a._v("Log")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#log10"}},[a._v("Log10")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#pow"}},[a._v("Pow")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#round"}},[a._v("Round")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#sqrt"}},[a._v("Sqrt")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#stringtobytes"}},[a._v("StringToBytes")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#bytestostring"}},[a._v("BytesToString")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#sysparamstring"}},[a._v("SysParamString")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#sysparamint"}},[a._v("SysParamInt")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#dbupdatesysparam"}},[a._v("DBUpdateSysParam")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#updatenotifications"}},[a._v("UpdateNotifications")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#updaterolesnotifications"}},[a._v("UpdateRolesNotifications")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#httprequest"}},[a._v("HTTPRequest")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#httppostjson"}},[a._v("HTTPPostJSON")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#blocktime"}},[a._v("BlockTime")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#datetime"}},[a._v("DateTime")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#unixdatetime"}},[a._v("UnixDateTime")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#createobs"}},[a._v("CreateOBS")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#getobslist"}},[a._v("GetOBSList")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#runobs"}},[a._v("RunOBS")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#stopobs"}},[a._v("StopOBS")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#removeobs"}},[a._v("RemoveOBS")])])])]),a._v(" "),t("li",[t("a",{attrs:{href:"#system-contracts"}},[a._v("System Contracts")]),a._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#newecosystem"}},[a._v("NewEcosystem")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#editecosystemname"}},[a._v("EditEcosystemName")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#newcontract"}},[a._v("NewContract")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#editcontract"}},[a._v("EditContract")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#bindwallet"}},[a._v("BindWallet")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#unbindwallet"}},[a._v("UnbindWallet")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#newparameter"}},[a._v("NewParameter")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#editparameter"}},[a._v("EditParameter")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#newmenu"}},[a._v("NewMenu")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#editmenu"}},[a._v("EditMenu")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#appendmenu"}},[a._v("AppendMenu")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#newpage"}},[a._v("NewPage")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#editpage"}},[a._v("EditPage")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#appendpage"}},[a._v("AppendPage")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#newblock"}},[a._v("NewBlock")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#editblock"}},[a._v("EditBlock")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#newtable"}},[a._v("NewTable")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#edittable"}},[a._v("EditTable")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#newcolumn"}},[a._v("NewColumn")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#editcolumn"}},[a._v("EditColumn")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#newlang"}},[a._v("NewLang")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#editlang"}},[a._v("EditLang")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#import"}},[a._v("Import")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#importupload"}},[a._v("ImportUpload")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#newappparam"}},[a._v("NewAppParam")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#editappparam"}},[a._v("EditAppParam")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#newdelayedcontract"}},[a._v("NewDelayedContract")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#editdelayedcontract"}},[a._v("EditDelayedContract")])]),a._v(" "),t("li",[t("a",{attrs:{href:"#uploadbinary"}},[a._v("UploadBinary")])])])])]),a._v(" "),t("p",[a._v("Akıllı Sözleşme (bundan böyle Sözleşme olarak anılacaktır), bir uygulamanın temel unsurlarından biridir. Kullanıcı tarafından bir sayfada bir sözleşmenin uygulanması genellikle tek bir işlemdir ve amacı bir veritabanı girdisini güncellemek veya oluşturmaktır. Bir uygulamanın tüm veri işlemleri bir sözleşme sistemi oluşturur ve bu sözleşmeler, veritabanı veya sözleşme içeriği işlevleri aracılığıyla birbirleriyle etkileşime girer.")]),a._v(" "),t("h2",{attrs:{id:"kontrat-yapısı"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kontrat-yapısı"}},[a._v("#")]),a._v(" Kontrat yapısı")]),a._v(" "),t("p",[a._v("Bir sözleşme bildirmek için "),t("code",[a._v("contract")]),a._v(" anahtar sözcüğünü, ardından kontrat adını kullanın ve kontrat içeriği parantez içine alınmalıdır. Bir kontrat temel olarak üç bölümden oluşur:")]),a._v(" "),t("ol",[t("li",[t("p",[t("strong",[a._v("data")]),a._v(" - "),t("a",{attrs:{href:"#data-section"}},[a._v("data section")]),a._v(", değişken adı ve değişken türü dahil olmak üzere giriş verilerinin değişkenlerini bildirir;")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("conditions")]),a._v(" - "),t("a",{attrs:{href:"#conditions-section"}},[a._v("conditions section")]),a._v(", nerede verilerin doğruluğunu onaylar;")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("action")]),a._v(" - "),t("a",{attrs:{href:"#action-section"}},[a._v("action section")]),a._v(", nerede veri manipülasyonlarını tanımlar.")])])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("contract MyContract {\n data {\n FromId int\n ToId int\n Amount money\n }\n func conditions {\n ...\n }\n func action {\n ...\n }\n}\n")])])]),t("h3",{attrs:{id:"data-section"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-section"}},[a._v("#")]),a._v(" Data section")]),a._v(" "),t("p",[t("code",[a._v("Data")]),a._v(" bölümü, sözleşme veri girişlerini ve alınan form parametrelerini açıklar.")]),a._v(" "),t("p",[a._v("Her satırın sıraya göre yapısı:")]),a._v(" "),t("ul",[t("li",[a._v("Değişken adı - dizileri değil, yalnızca değişkenleri alır;")]),a._v(" "),t("li",[a._v("Değişken veri türü - değişkenin "),t("a",{attrs:{href:"#veri-tipleri-ve-de%C4%9Fi%C5%9Fkenleri"}},[a._v("veri türü")]),a._v(";")]),a._v(" "),t("li",[a._v("isteğe bağlı - form öğesini doldurması gerekmeyen isteğe bağlı bir parametre.")])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('contract my {\n data {\n Name string\n RequestId int\n Photo file "optional"\n Amount money\n Private bytes\n }\n ...\n}\n')])])]),t("h3",{attrs:{id:"conditions-section"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#conditions-section"}},[a._v("#")]),a._v(" Conditions section")]),a._v(" "),t("p",[t("code",[a._v("conditions")]),a._v(" bölümü, alınan verilerin doğrulanmasını açıklar.")]),a._v(" "),t("p",[a._v("Hata uyarıları için şu komutlar kullanılır: ciddi hatalar "),t("code",[a._v("error")]),a._v(", uyarı hataları "),t("code",[a._v("warning")]),a._v(", düşündürücü hatalar "),t("code",[a._v("info")]),a._v(". Bu üç komut, sözleşmelerin yürütülmesini sonlandıran bir hata üretecek ve her hata, farklı türde bir hata günlüğü bilgisi yazdıracaktır. Örneğin:")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('if fuel == 0 {\n error "fuel cannot be zero!"\n}\nif money < limit {\n warning Sprintf("You don\'t have enough money: %v <%v", money, limit)\n}\nif idexist > 0 {\n info "You have already been registered"\n}\n')])])]),t("h3",{attrs:{id:"action-section"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#action-section"}},[a._v("#")]),a._v(" Action section")]),a._v(" "),t("p",[t("code",[a._v("action")]),a._v(" bölümü, diğer verileri alan ve sonuç değerlerini tablolara kaydeden sözleşmenin ana kodunu açıklar. Örneğin:")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('action {\nDBUpdate("keys", $key_id, {"-amount": $amount})\nDBUpdate("keys", $recipient, {"+amount": $amount, "pub": $Pub})\n}\n')])])]),t("h2",{attrs:{id:"degiskenler"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#degiskenler"}},[a._v("#")]),a._v(" Değişkenler")]),a._v(" "),t("p",[a._v("Veri bölümünde bildirilen değişkenler, değişken adının ardından "),t("code",[a._v("$")]),a._v(" sembolü ile diğer sözleşme bölümlerine iletilir. "),t("code",[a._v("$")]),a._v(" sembolü, bu sözleşmenin ve bu sözleşmenin iç içe olduğu tüm sözleşmelerin global değişkenleri olarak kabul edilen veri bölümünde olmayan diğer değişkenleri bildirmek için de kullanılabilir.")]),a._v(" "),t("p",[a._v("Önceden tanımlanmış değişkenler, sözleşme olarak adlandırılan işlem verilerini içeren sözleşmelerde kullanılabilir:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("$time")]),a._v(" - işlem timestamp;")]),a._v(" "),t("li",[t("code",[a._v("$ecosystem_id")]),a._v(" - ekosistem ID;")]),a._v(" "),t("li",[t("code",[a._v("$block")]),a._v(" - İşlemi içeren bloğun ID'si;")]),a._v(" "),t("li",[t("code",[a._v("$key_id")]),a._v(" - cari işlemi imzalayan hesabın adresi;")]),a._v(" "),t("li",[t("code",[a._v("$type")]),a._v(" - sanal makinede sözleşme kimliği;")]),a._v(" "),t("li",[t("code",[a._v("$block_key_id")]),a._v(" - bloğu oluşturan düğümün hesap adresi;")]),a._v(" "),t("li",[t("code",[a._v("$block_time")]),a._v(" - blok oluşturma zaman damgası;")]),a._v(" "),t("li",[t("code",[a._v("$original_contract")]),a._v(" - başlangıçta işlemi işleyen sözleşmenin adı. Değişken boş bir dize ise, sözleşmenin işlem doğrulaması sırasında çağrıldığı anlamına gelir. Sözleşmenin başka bir sözleşme tarafından mı yoksa doğrudan işlem tarafından mı çağrıldığını kontrol etmek için $original_contract ve $this_contract değerlerini karşılaştırmanız gerekir. Bu, sözleşmenin eşit olmaları durumunda işlem tarafından çağrıldığı anlamına gelir;")]),a._v(" "),t("li",[t("code",[a._v("$this_contract")]),a._v(" - şu anda yürütülmekte olan sözleşmenin adı;")]),a._v(" "),t("li",[t("code",[a._v("$guest_key")]),a._v(" - misafir hesabı adresi;")]),a._v(" "),t("li",[t("code",[a._v("$stack")]),a._v(" - yürütülen tüm sözleşmeleri içeren bir dizi veri türü içeren sözleşme dizisi yığını. Dizinin ilk öğesi, şu anda yürütülmekte olan sözleşmenin adını temsil ederken, son öğe işlemi ilk olarak işleyen sözleşmenin adını temsil eder;")]),a._v(" "),t("li",[t("code",[a._v("$node_position")]),a._v(" - bloğun bulunduğu doğrulama düğümü dizisinin dizin numarası;")]),a._v(" "),t("li",[t("code",[a._v("$txhash")]),a._v(" - işlem karması;")]),a._v(" "),t("li",[t("code",[a._v("$contract")]),a._v(" - mevcut sözleşme yapısı dizisi;")])]),a._v(" "),t("p",[a._v("Önceden tanımlanmış değişkenlere yalnızca sözleşmelerde değil, uygulama öğelerinin erişim izin koşullarını tanımlayan izin alanlarında da erişilebilir. İzin alanlarında kullanıldığında, blok bilgileri için önceden tanımlanmış değişkenler her zaman sıfıra eşittir, örneğin: "),t("code",[a._v("$time")]),a._v(", "),t("code",[a._v("$block")]),a._v(", vb.")]),a._v(" "),t("p",[a._v("Sözleşmenin dönüş sonucuyla önceden tanımlanmış bir "),t("code",[a._v("$result")]),a._v(" değişkeni olarak atanır.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('contract my {\n data {\n Name string\n Amount money\n }\n func conditions {\n if $Amount <= 0 {\n error "Amount cannot be 0"\n }\n $ownerId = 1232\n }\n func action {\n var amount money\n amount = $Amount - 10\n DBUpdate("mytable", $ownerId, {name: $Name,amount: amount})\n DBUpdate("mytable2", $ownerId, {amount: 10})\n }\n}\n')])])]),t("h2",{attrs:{id:"ic-ice-sozlesmeler"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ic-ice-sozlesmeler"}},[a._v("#")]),a._v(" İç İçe Sözleşmeler")]),a._v(" "),t("p",[a._v("Sözleşmeleri, sözleşmenin koşullar ve eylem bölümlerine yerleştirebilirsiniz. İç içe sözleşmeler doğrudan çağrılabilir ve sözleşme parametreleri, sözleşme adından sonra parantez içinde belirtilir, örneğin, "),t("code",[a._v("@1NameContract(Params)")]),a._v(". "),t("a",{attrs:{href:"#callcontract"}},[a._v("CallContract")]),a._v(" işleviyle iç içe sözleşmeleri de çağırabilirsiniz.")]),a._v(" "),t("h2",{attrs:{id:"dosya-yukleme"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dosya-yukleme"}},[a._v("#")]),a._v(" Dosya Yükleme")]),a._v(" "),t("p",[t("code",[a._v("multipart/form-data")]),a._v(" formatında bir form kullanarak dosya yükleme için, sözleşmenin veri tipi "),t("code",[a._v("file")]),a._v(" olmalıdır.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("contract Upload {\n data {\n \t File file\n }\n ...\n}\n")])])]),t("p",[a._v("Dosyaları depolamak için "),t("a",{attrs:{href:"#uploadbinary"}},[a._v("UploadBinary")]),a._v(" sözleşmesi kullanılır.Sayfa düzenleyicideki Logicor dil işlevi "),t("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#binary"}},[a._v("Binary")]),a._v(" ile dosya indirme bağlantısını alabilirisiniz.")],1),a._v(" "),t("h2",{attrs:{id:"json-formatında-sorgular"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#json-formatında-sorgular"}},[a._v("#")]),a._v(" Json formatında sorgular")]),a._v(" "),t("p",[a._v("Sözleşme dilinde "),t("strong",[a._v("JSON")]),a._v(" alan türü olarak belirtilebilir. Giriş alanını işlemek için "),t("strong",[a._v("columnname->fieldname")]),a._v(" söz dizimini kullanabilirsiniz. Elde edilen değer "),t("strong",[a._v("columnname.fieldname")]),a._v(" içine kaydedilir. Yukarıdaki sözdizimi, "),t("a",{attrs:{href:"#dbfind"}},[a._v("DBFind")]),a._v(" işlevinin Columns,One,Where bölümünde kullanılabilir.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var ret map\nvar val str\nvar list array\nret = DBFind("mytable").Columns("myname,doc,doc->ind").WhereId($Id).Row()\nval = ret["doc.ind"]\nval = DBFind("mytable").Columns("myname,doc->type").WhereId($Id).One("doc->type")\nlist = DBFind("mytable").Columns("myname,doc,doc->ind").Where("doc->ind = ?", "101")\nval = DBFind("mytable").WhereId($Id).One("doc->check")\n')])])]),t("h2",{attrs:{id:"tarih-ve-saat-islemleri-iceren-sorgular"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tarih-ve-saat-islemleri-iceren-sorgular"}},[a._v("#")]),a._v(" Tarih ve saat işlemleri içeren sorgular")]),a._v(" "),t("p",[a._v("Sözleşme dili işlevleriyle tarih ve saati doğrudan sorgulayıp güncelleyemezsiniz ancak aşağıdaki örnekte olduğu gibi Where deyiminde PostgreSQL işlevlerini ve özelliklerini kullanabilirsiniz.Örneğin, tarih_sütun alanını geçerli saatle karşılaştırmanız gerekir. tarih_sütun bir zaman damgası türüyse, ifade "),t("code",[a._v("date_column NOW()")]),a._v(" olmalıdır.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('Where("to_timestamp(date_column)> NOW()")\nWhere("date_column , >=, <=, ==, !=, ||, &&")])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("if val> 10 || id != $block_key_id {\n ...\n} else {\n ...\n}\n")])])]),t("p",[t("strong",[a._v("while")]),a._v(" döngüsünün koşullu ifadesi doğru olduğunda kod bloğu yürütülür. "),t("strong",[a._v("break")]),a._v(", kod bloğunun döngüsünü sonlandırmak anlamına gelir. Bir döngüyü baştan başlatmak istiyorsanız, "),t("strong",[a._v("devam")]),a._v("'ı kullanın.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var i int\nwhile true {\n if i > 100 {\n break\n }\n ...\n if i == 50 {\n continue\n }\n ...\n i = i + 1\n}\n")])])]),t("p",[a._v("Needle, koşullu ifadelere ek olarak standart aritmetik işlemleri de destekler: "),t("code",[a._v("+")]),a._v(", "),t("code",[a._v("-")]),a._v(", "),t("code",[a._v("*")]),a._v(", "),t("code",[a._v("/")]),a._v(".")]),a._v(" "),t("p",[a._v("Dize ve bayt türlerinin değişkenleri koşullu bir ifade olarak kullanılabilir. Türün uzunluğu sıfırdan büyükse koşul doğrudur, aksi takdirde yanlıştır.")]),a._v(" "),t("h2",{attrs:{id:"fonksiyonlar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fonksiyonlar"}},[a._v("#")]),a._v(" Fonksiyonlar")]),a._v(" "),t("p",[a._v("İşlevler, bir sözleşmenin "),t("a",{attrs:{href:"#data-section"}},[a._v("data section")]),a._v(" tarafından alınan veriler üzerinde bazı işlemler gerçekleştirebilir: veritabanından veri okuma ve yazma, değer türünü dönüştürme ve sözleşmeler arasındaki etkileşimi oluşturma.")]),a._v(" "),t("h3",{attrs:{id:"fonksiyon-atamaları"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fonksiyon-atamaları"}},[a._v("#")]),a._v(" Fonksiyon atamaları")]),a._v(" "),t("p",[a._v("Bir işlevi bildirmek için func anahtar sözcüğünü kullanın, ardından ad ve ona iletilen parametrelerin listesi ve türleri. Tüm parametreler parantez içine alınır ve virgülle ayrılır. Parantezlerden sonra fonksiyonun döndürdüğü değerin veri tipi bildirilmelidir. Fonksiyon gövdesi parantez içine alınmalıdır. Fonksiyonun parametresi yoksa, parantezler atlanabilir. Bir fonksiyondan değer döndürmek için "),t("code",[a._v("return")]),a._v(" anahtar sözcüğünü kullanın.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('func myfunc(left int, right int) int {\n return left*right + left - right\n}\nfunc test int {\n return myfunc(10, 30) + myfunc(20, 50)\n}\nfunc ooops {\n error "Ooops..."\n}\n')])])]),t("p",[a._v("Tüm hata kontrolleri otomatik olarak yapıldığından, fonksiyon hata döndürmez. Herhangi bir fonksiyonda bir hata varsa, sözleşme çalışmasını sonlandıracak ve hata açıklamasını bir pencerede sunacaktır.")]),a._v(" "),t("h3",{attrs:{id:"degisken-uzunluklu-parametreler"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#degisken-uzunluklu-parametreler"}},[a._v("#")]),a._v(" Değişken-uzunluklu parametreler")]),a._v(" "),t("p",[a._v("Fonksiyonlar değişken uzunluklu parametreleri tanımlayabilir, değişken uzunluklu parametreleri belirtmek için fonksiyonun son parametre tipi olarak "),t("code",[a._v("...")]),a._v(" sembolünü bir veri tipi "),t("code",[a._v("array")]),a._v(" ile kullanabilir. Değişken uzunluklu parametreler, parametrenin çağrıda geçirildiği zamandan itibaren tüm değişkenleri içerir. Tüm değişken türleri iletilebilir, ancak veri türlerinin uyumsuzluğundan kaynaklanan çatışmalarla uğraşmanız gerekir.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('func sum(out string, values ...) {\nvar i, res int\n\nwhile i 12")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{"field": {"$gte": 12}}')]),a._v("\nEquivalent to "),t("code",[a._v("field >= 12")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{"$and": [, , ]}')]),a._v("\nEquivalent to "),t("code",[a._v("expr1 AND expr2 AND expr3")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{"$or": [, , ]}')]),a._v("\nEquivalent to "),t("code",[a._v("expr1 OR expr2 OR expr3")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{field: {"$like": "value"}}')]),a._v("\nEquivalent to "),t("code",[a._v("field like'%value%'")]),a._v(" (fuzzy search).")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{field: {"$begin": "value"}}')]),a._v("\nEquivalent to "),t("code",[a._v("field like'value%'")]),a._v(" (starts with "),t("code",[a._v("value")]),a._v(").")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{field: {"$end": "value"}}')]),a._v("\nEquivalent to "),t("code",[a._v("field like'%value'")]),a._v(" (ends with "),t("code",[a._v("value")]),a._v(").")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{field: "$isnull"}')]),a._v("\nEquivalent to field is null.")])])])])]),a._v(" "),t("p",[a._v("Nesne dizilerinin anahtarlarının üzerine yazmadığınızdan emin olun. Örneğin, "),t("code",[a._v("id>2 ve id<5")]),a._v(" ile sorgulamak istiyorsanız, "),t("code",[a._v('{id:{"$gt": 2}, id:{"$lt": 5}}')]),a._v(" kullanamazsınız, çünkü ilk elemanın üzerine ikinci eleman yazılacaktır. Aşağıdaki sorgu yapısını kullanmalısınız:")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('{id: [{"$gt": 2}, {"$lt": 5}]}\n')])])]),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('{"$and": [{id:{"$gt": 2}}, {id:{"$lt": 5}}]}\n')])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Kimliğe göre sorgular. Örnek, .WhereId(1).")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("Order")])]),a._v(" "),t("p",[a._v("Sonuç kümesini belirli bir sütuna göre veya varsayılan olarak kimliğe göre sıralamak için kullanılır.")]),a._v(" "),t("p",[a._v("Sıralama için yalnızca bir alan kullanıyorsanız, onu bir dize olarak belirtebilirsiniz. Birden çok alanı sıralamak için bir dizi dize nesnesi belirtmeniz gerekir:")]),a._v(" "),t("p",[a._v("Azalan düzen: "),t("code",[a._v('{"field": "-1"}')]),a._v(" eşittir "),t("code",[a._v("field desc")]),a._v(".")]),a._v(" "),t("p",[a._v("Artan düzen: "),t("code",[a._v('{"field": "1"}')]),a._v(" eşittir "),t("code",[a._v("field asc")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("limit")])]),a._v(" "),t("p",[a._v("Girişlerin sayısını döndürür. 25, varsayılan olarak. Maksimum sayı 10.000'dir.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("Offset")])]),a._v(" "),t("p",[a._v("Offset.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("Ecosystemid")])]),a._v(" "),t("p",[a._v("Ekosistem kimliği. Varsayılan olarak, mevcut ekosistemin tablosu sorgulanır.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-2"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var i int\nvar ret string\nret = DBFind("contracts").Columns("id,value").Where({id: [{"$gt": 2}, {"$lt": 5}]}).Order( "id")\nwhile i 0 {\n item = list[0]\n}\n')])])]),t("h3",{attrs:{id:"gethistoryrow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gethistoryrow"}},[a._v("#")]),a._v(" GetHistoryRow")]),a._v(" "),t("p",[a._v("Belirtilen bir tabloda belirtilen bir girdinin değişiklik geçmişinden tek bir anlık görüntü döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-5"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetHistoryRow(table string, id int, rollbackId int) map\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("table")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Giriş ID.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("rollbackId")])]),a._v(" "),t("p",[a._v("rollback_tx Tablonun giriş ID.")])])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(' $result = GetHistoryRow("contracts",205,2358)\n')])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[a._v("#")]),a._v(" GetColumnType")]),a._v(" "),t("p",[a._v("Belirtilen tablodaki belirtilen alanın veri türünü döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-6"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetColumnType(table, column string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("table")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("column")])]),a._v(" "),t("p",[a._v("Alan adı.")])])]),a._v(" "),t("blockquote",[t("p",[t("strong",[a._v("Return value")])])]),a._v(" "),t("p",[a._v("Değerler döndürülebilir: "),t("code",[a._v("text, varchar, number, money, double, bytes, json, datetime, double")]),a._v(".")]),a._v(" "),t("h4",{attrs:{id:"ornek-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-7"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var coltype string\ncoltype = GetColumnType("members", "member_name")\n')])])]),t("h3",{attrs:{id:"getdatafromxlsx"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getdatafromxlsx"}},[a._v("#")]),a._v(" GetDataFromXLSX")]),a._v(" "),t("p",[a._v("XLSX elektronik tablolarından verileri döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-7"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetDataFromXLSX(binId int, line int, count int, sheet int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("binId")])]),a._v(" "),t("p",[a._v("İkili tablo ikili dosyasında XLSX biçiminde kimlik.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("line")])]),a._v(" "),t("p",[a._v("Varsayılan olarak 0'dan başlayan başlangıç ​​satırı numarası.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("count")])]),a._v(" "),t("p",[a._v("Döndürülmesi gereken satır sayısı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("sheet")])]),a._v(" "),t("p",[a._v("Liste numarası, varsayılan olarak 1'den başlar.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-8"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var a array\na = GetDataFromXLSX(3, 12, 10, 1)\n")])])]),t("h3",{attrs:{id:"getrowscountxlsx"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getrowscountxlsx"}},[a._v("#")]),a._v(" GetRowsCountXLSX")]),a._v(" "),t("p",[a._v("Belirtilen bir XLSX dosyasındaki satır sayısını döndürür.")]),a._v(" "),t("h4",{attrs:{id:"syntax-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-2"}},[a._v("#")]),a._v(" Syntax")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetRowsCountXLSX(binId int, sheet int) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("binId")])]),a._v(" "),t("p",[a._v("İkili tablo ikili dosyasında XLSX biçiminde kimlik.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("sheet")])]),a._v(" "),t("p",[a._v("Liste numarası, varsayılan olarak 1'den başlar.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-9"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var count int\ncount = GetRowsCountXLSX(binid, 1)\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[a._v("#")]),a._v(" LangRes")]),a._v(" "),t("p",[a._v("İki karakterli bir kod olarak belirtilen dil dili için ad etiketine sahip çok dilli bir kaynak döndürür, örneğin: "),t("code",[a._v("en")]),a._v(", "),t("code",[a._v("zh")]),a._v(". Seçilen bir dil için dil yoksa, "),t("code",[a._v("en")]),a._v(" etiketinin dil kaynağı döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"syntax-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-3"}},[a._v("#")]),a._v(" Syntax")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("LangRes(label string, lang string) string\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("label")])]),a._v(" "),t("p",[a._v("Dil kaynağı adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("lang")])]),a._v(" "),t("p",[a._v("İki karakterli dil kodu.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-10"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('warning LangRes("@1confirm", "en")\nerror LangRes("@1problems", "zh")\n')])])]),t("h3",{attrs:{id:"getblock"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getblock"}},[a._v("#")]),a._v(" GetBlock")]),a._v(" "),t("p",[a._v("Belirtilen bir blok hakkında ilgili bilgileri döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-8"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetBlock(blockID int64) map\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("blockID")])]),a._v(" "),t("p",[a._v("Block ID.")])])]),a._v(" "),t("blockquote",[t("p",[t("strong",[a._v("Return value")])])]),a._v(" "),t("p",[a._v("Bir dizi nesne döndür:")]),a._v(" "),t("ul",[t("li",[t("p",[t("strong",[a._v("id")])]),a._v(" "),t("p",[a._v("Block ID.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("time")])]),a._v(" "),t("p",[a._v("Blok oluşturma zaman damgası.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("key_id")])]),a._v(" "),t("p",[a._v("Doğrulama düğümünün hesap adresi bloğu oluşturdu.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-11"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var b map\nb = GetBlock(1)\nPrintln(b)\n")])])]),t("h3",{attrs:{id:"dbinsert"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbinsert"}},[a._v("#")]),a._v(" DBInsert")]),a._v(" "),t("p",[a._v("Belirtilen tabloya bir girdi ekler ve girdi kimliğini döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-9"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DBInsert(table string, params map) int\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tblname")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("params")])]),a._v(" "),t("p",[a._v("Anahtarların alan adları ve değerlerin eklenen değerler olduğu bir nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-12"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('DBInsert("mytable", {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"dbupdate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbupdate"}},[a._v("#")]),a._v(" DBUpdate")]),a._v(" "),t("p",[a._v("Belirtilen bir tabloda belirtilen giriş kimliğinin sütun değerini değiştirir. Giriş kimliği tabloda yoksa bir hata döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-10"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DBUpdate(tblname string, id int, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tblname")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Entry ID.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("params")])]),a._v(" "),t("p",[a._v("Anahtarların alan adları ve değerlerin değişikliklerden sonra yeni değerler olduğu bir nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-13"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('DBUpdate("mytable", myid, {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"dbupdateext"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbupdateext"}},[a._v("#")]),a._v(" DBUpdateExt")]),a._v(" "),t("p",[a._v("Belirtilen tablodaki sorgu koşuluyla eşleşen bir sütunun değerini değiştirir.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-11"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DBUpdateExt(tblname string, where map, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tblname")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("where")])]),a._v(" "),t("p",[a._v("Sorgo koşulları")]),a._v(" "),t("p",[a._v("Daha fazla detay için, burada "),t("a",{attrs:{href:"#dbfind"}},[a._v("DBFind")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("params")])]),a._v(" "),t("p",[a._v("Anahtarların alan adları ve değerlerin değişikliklerden sonra yeni değerler olduğu bir nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-14"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('DBUpdateExt("mytable", {id: $key_id, ecosystem: $ecosystem_id}, {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"delcolumn"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#delcolumn"}},[a._v("#")]),a._v(" DelColumn")]),a._v(" "),t("p",[a._v("Belirtilen tabloda kaydı olmayan bir alanı silin.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-12"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DelColumn(tblname string, column string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tblname")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("column")])]),a._v(" "),t("p",[a._v("Silinecek alan.")])])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('DelColumn("mytable", "mycolumn")\n')])])]),t("h3",{attrs:{id:"deltable"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deltable"}},[a._v("#")]),a._v(" DelTable")]),a._v(" "),t("p",[a._v("Hiçbir kaydı olmayan belirli bir tabloyu siler.")]),a._v(" "),t("h4",{attrs:{id:"syntax-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-4"}},[a._v("#")]),a._v(" Syntax")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DelTable(tblname string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tblname")])]),a._v(" "),t("p",[a._v("Tablo adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-15"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('DelTable("mytable")\n')])])]),t("h3",{attrs:{id:"ekle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ekle"}},[a._v("#")]),a._v(" Ekle")]),a._v(" "),t("p",[a._v("Src dizisine herhangi bir türde val ekler.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-13"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("p",[a._v("Append(src array, val anyType) array")]),a._v(" "),t("ul",[t("li",[t("p",[t("strong",[a._v("src")])]),a._v(" "),t("p",[a._v("Orjinal dizi.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("val")])]),a._v(" "),t("p",[a._v("Eklenecek değer.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-16"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var list array\nlist = Append(list, "new_val")\n')])])]),t("h3",{attrs:{id:"katılmak"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#katılmak"}},[a._v("#")]),a._v(" Katılmak")]),a._v(" "),t("p",[a._v('"in dizisinin" öğelerini belirtilen bir ayırıcıyla bir dizede birleştirir.')]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-14"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Join(in array, sep string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("İçinde")])]),a._v(" "),t("p",[a._v("Array ismi.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("sep")])]),a._v(" "),t("p",[a._v("Ayırıcı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-17"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(' var val string, myarr array\n myarr[0] = "first"\n myarr[1] = 10\n val = Join(myarr, ",")\n')])])]),t("h3",{attrs:{id:"bolmek"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bolmek"}},[a._v("#")]),a._v(" Bölmek")]),a._v(" "),t("p",[a._v('"in dizesini" öğelere bölmek ve bunları bir diziye yerleştirmek için ayırıcıyı kullanır.')]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-15"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Split(in string, sep string) array\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("İçinde")])]),a._v(" "),t("p",[a._v("Metinsel.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("sep")])]),a._v(" "),t("p",[a._v("Ayırıcı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-18"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var myarr array\nmyarr = Split("first,second,third", ",")\n')])])]),t("h3",{attrs:{id:"len"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#len"}},[a._v("#")]),a._v(" Len")]),a._v(" "),t("p",[a._v("Belirtilen dizideki öğelerin sayısını döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-16"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Len(val array) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("val")])]),a._v(" "),t("p",[a._v("Dizi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-19"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("if Len(mylist) == 0 {\n ...\n}\n")])])]),t("h3",{attrs:{id:"sıra"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sıra"}},[a._v("#")]),a._v(" Sıra")]),a._v(" "),t("p",[a._v("Bu durumda list parametresi belirtilmemelidir. Dizi listesindeki ilk nesne dizisini döndürün. Liste boşsa, boş bir sonuç döndürülür. Bu işlev çoğunlukla "),t("a",{attrs:{href:"#dbfind"}},[a._v("DBFind")]),a._v(" işleviyle birlikte kullanılır. Bu işlevi kullanırken, parametreleri belirtemezsiniz.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-17"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(" Row(list array) map\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("list")])]),a._v(" "),t("p",[a._v("DBFind işlevi tarafından döndürülen nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-20"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(' var ret map\n ret = DBFind("contracts").Columns("id,value").WhereId(10).Row()\n Println(ret)\n')])])]),t("h3",{attrs:{id:"one"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#one"}},[a._v("#")]),a._v(" One")]),a._v(" "),t("p",[a._v("Dizi listesindeki ilk nesne dizisinin alan değerini döndürür. Liste dizisi boşsa, nil döndürülür. Çoğunlukla "),t("a",{attrs:{href:"#dbfind"}},[a._v("DBFind")]),a._v(" işleviyle birlikte kullanılır. Bu işlevi kullanırken, parametreleri belirtemezsiniz.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-18"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("One(list array, column string) string\n")])])]),t("ul",[t("li",[t("strong",[a._v("list")])])]),a._v(" "),t("p",[a._v("DBFind işlevi tarafından döndürülen nesne dizisi.")]),a._v(" "),t("ul",[t("li",[t("p",[t("strong",[a._v("column")])]),a._v(" "),t("p",[a._v("Alan adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-21"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var ret string\nret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")\nif ret != nil {\n Println(ret)\n}\n')])])]),t("h3",{attrs:{id:"getmapkeys"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getmapkeys"}},[a._v("#")]),a._v(" GetMapKeys")]),a._v(" "),t("p",[a._v("Nesne dizisindeki anahtar diziyi döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-19"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetMapKeys(val map) array\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("val")])]),a._v(" "),t("p",[a._v("Nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-22"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var val map\nvar arr array\nval["k1"] = "v1"\nval["k2"] = "v2"\narr = GetMapKeys(val)\n')])])]),t("h3",{attrs:{id:"sortedkeys"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sortedkeys"}},[a._v("#")]),a._v(" SortedKeys")]),a._v(" "),t("p",[a._v("Nesne dizisinde sıralanmış bir anahtar dizi döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-20"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("SortedKeys(val map) array\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("val")])]),a._v(" "),t("p",[a._v("Nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-23"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var val map\nvar arr array\nval["k2"] = "v2"\nval["k1"] = "v1"\narr = SortedKeys(val)\n')])])]),t("h3",{attrs:{id:"callcontract"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#callcontract"}},[a._v("#")]),a._v(" CallContract")]),a._v(" "),t("p",[a._v("Belirtilen adla sözleşmeyi çağırır. Sözleşmedeki veri bölümünün tüm parametreleri bir nesne dizisine dahil edilmelidir. Bu işlev, belirtilen bir sözleşme tarafından "),t("strong",[a._v("$result")]),a._v(" değişkenine atanan değeri döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-21"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("CallContract(name string, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("name")])]),a._v(" "),t("p",[a._v("Çağrılan sözleşmenin adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("params")])]),a._v(" "),t("p",[a._v("Sözleşme girdi verilerinin ilişkisel dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-24"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var par map\npar["Name"] = "My Name"\nCallContract("MyContract", par)\n')])])]),t("h3",{attrs:{id:"contractaccess"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contractaccess"}},[a._v("#")]),a._v(" ContractAccess")]),a._v(" "),t("p",[a._v("Yürütülmekte olan sözleşmenin adının parametrelerde listelenen adlardan biriyle eşleşip eşleşmediğini kontrol eder. Genellikle tablolara sözleşme erişimini kontrol etmek için kullanılır. Tablo alanlarını düzenlerken veya tablonun izinler bölümünde yeni sütun alanları eklerken, lütfen bu işlevi izin alanlarında belirtin.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-22"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("ContractAccess(name string, [name string]) bool\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("name")])]),a._v(" "),t("p",[a._v("Sözleşme adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-25"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('ContractAccess("MyContract")\nContractAccess("MyContract","SimpleContract")\n')])])]),t("h3",{attrs:{id:"contractconditions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contractconditions"}},[a._v("#")]),a._v(" ContractConditions")]),a._v(" "),t("p",[a._v("Sözleşmedeki koşullar bölümünü belirtilen adla çağırır.")]),a._v(" "),t("p",[a._v("Bu tür sözleşmeler için veri bölümü boş olmalıdır. Koşullar bölümü hatasız yürütülürse true döner. Yürütme sırasında bir hata varsa, hata nedeniyle ana sözleşme de feshedilecektir. Bu işlev genellikle sözleşmenin tablolara erişimini kontrol etmek için kullanılır ve sistem tablolarını düzenlerken izin alanlarında çağrılabilir.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-23"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("ContractConditions(name string, [name string]) bool\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("name")])]),a._v(" "),t("p",[a._v("Sözleşme adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-26"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('ContractConditions("MainCondition")\n')])])]),t("h3",{attrs:{id:"evalcondition"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#evalcondition"}},[a._v("#")]),a._v(" EvalCondition")]),a._v(" "),t("p",[a._v("Sözleşme tablo adı tablosundan bir 'ad' alanı olan kayıttaki koşul alanının değerini alır ve koşul alanı değerinin koşullarını kontrol eder.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-24"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("EvalCondition(tablename string, name string, condfield string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tablename")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("name")])]),a._v(" "),t("p",[a._v("'name' alanı ile değeri sorgular.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("condfield")])]),a._v(" "),t("p",[a._v("Koşulları kontrol edilmesi gereken alanın adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-27"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("EvalCondition(`menu`, $Name, `conditions`)\n")])])]),t("h3",{attrs:{id:"getcontractbyid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyid"}},[a._v("#")]),a._v(" GetContractById")]),a._v(" "),t("p",[a._v("Sözleşme kimliğine göre sözleşme adını döndürür. Sözleşme bulunamazsa boş bir dize döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-25"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetContractById(id int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Sözleşme tablosu sözleşmelerindeki sözleşme kimliği.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-28"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var name string\nname = GetContractById($IdContract)\n")])])]),t("h3",{attrs:{id:"getcontractbyname"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyname"}},[a._v("#")]),a._v(" GetContractByName")]),a._v(" "),t("p",[a._v("Bu işlev, sözleşme kimliğini sözleşme adına göre döndürür. Sözleşme bulunamazsa, sıfır döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-26"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetContractByName(name string) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("name")])]),a._v(" "),t("p",[a._v("Sözleşme tablosu sözleşmelerinde sözleşme adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-29"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var id int\nid = GetContractByName(`NewBlock`)\n")])])]),t("h3",{attrs:{id:"rolerisimi"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rolerisimi"}},[a._v("#")]),a._v(" RolErişimi")]),a._v(" "),t("p",[a._v("Sözleşme arayanın rol kimliğinin parametrede belirtilen kimliklerden biriyle eşleşip eşleşmediğini kontrol eder.")]),a._v(" "),t("p",[a._v("Tablolara ve diğer verilere sözleşme erişimini kontrol etmek için bu işlevi kullanabilirsiniz.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-27"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("RoleAccess(id int, [id int]) bool\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Role ID.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-30"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("RoleAccess(1)\nRoleAccess(1, 3)\n")])])]),t("h3",{attrs:{id:"islem-bilgileri"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#islem-bilgileri"}},[a._v("#")]),a._v(" İşlem Bilgileri")]),a._v(" "),t("p",[a._v("İşlemleri belirtilen hash değerine göre sorgular ve yürütülen sözleşme ve parametreleri hakkında bilgi verir.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-28"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("TransactionInfo(hash: string)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("hash")])]),a._v(" "),t("p",[a._v("Onaltılık(hexadecimal) dize biçiminde işlem karması.")])])]),a._v(" "),t("blockquote",[t("p",[t("strong",[a._v("Return value")])])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[a._v("Bu işlev, JSON biçiminde bir dize döndürür:\n")])])]),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}\n')])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("contract")])]),a._v(" "),t("p",[a._v("Sözleşme adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("params")])]),a._v(" "),t("p",[a._v("Sözleşme parametrelerine aktarılan veriler.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("block")])]),a._v(" "),t("p",[a._v("İşlemi işleyen bloğun kimliği.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-31"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var out map\nout = JSONDecode(TransactionInfo(hash))\n")])])]),t("h3",{attrs:{id:"throw"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#throw"}},[a._v("#")]),a._v(" Throw")]),a._v(" "),t("p",[a._v("Özel durum(exception) türünde bir hata oluşturur.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-29"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Throw(ErrorId string, ErrDescription string)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("ErrorId")])]),a._v(" "),t("p",[a._v("Hata tanımlayıcısı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("ErrDescription")])]),a._v(" "),t("p",[a._v("Hata tanımlaması.")])])]),a._v(" "),t("blockquote",[t("p",[t("strong",[a._v("Return value")])])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[a._v("Bu tür işlem sonuçlarının biçimi:\n")])])]),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('{"type":"exception","error":"Error description","id":"Error ID"}\n')])])]),t("h4",{attrs:{id:"ornek-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-32"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('Throw("Problem", "There is a problem")\n')])])]),t("h3",{attrs:{id:"validatecondition"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validatecondition"}},[a._v("#")]),a._v(" ValidateCondition")]),a._v(" "),t("p",[a._v("Koşul parametresi tarafından belirtilen koşulları derlemeye çalışır. Derleme işlemi sırasında bir hata oluşursa hata oluşur ve çağrılan sözleşme sonlandırılır. Bu işlev, koşullu biçimin doğruluğunu kontrol etmek için tasarlanmıştır.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-30"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("ValidateCondition(condition string, state int)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("condition")])]),a._v(" "),t("p",[a._v("Doğrulanması gereken koşullu biçim.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("state")])]),a._v(" "),t("p",[a._v("Ekosistem kimliği. Global koşulu kontrol ederseniz, lütfen 0 olarak belirtin.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-33"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('ValidateCondition(`ContractAccess("@1MyContract")`, 1)\n')])])]),t("h3",{attrs:{id:"addresstoid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[a._v("#")]),a._v(" AddressToId")]),a._v(" "),t("p",[a._v("Cüzdan adresine göre ilgili hesap adresini döndürür. Geçersiz bir adres belirtilirse, '0' döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-31"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("AddressToId(address string) int\n\n")])])]),t("ul",[t("li",[t("p",[a._v("Address")]),a._v(" "),t("p",[t("code",[a._v("XXXX-...-XXXX")]),a._v(" biçiminde veya sayı biçiminde cüzdan adresi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-34"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("wallet = AddressToId($Recipient)\n")])])]),t("h3",{attrs:{id:"idtoaddress"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#idtoaddress"}},[a._v("#")]),a._v(" IdToAddress")]),a._v(" "),t("p",[a._v("Hesap adresine göre ilgili cüzdan adresini döndürür. Geçersiz bir adres belirtilirse, geçersiz adres 'invalid' döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-32"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("IdToAddress(id int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Hesap adresi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-35"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("$address = IdToAddress($id)\n")])])]),t("h3",{attrs:{id:"pubtoid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pubtoid"}},[a._v("#")]),a._v(" PubToID")]),a._v(" "),t("p",[a._v("Hesap adresi, genel anahtar tarafından onaltılık biçimde döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-33"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("PubToID(hexkey string) int\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("hexkey")])]),a._v(" "),t("p",[a._v("Onaltılık biçimde genel anahtar.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-36"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var wallet int\nwallet = PubToID("04fa5e78.....34abd6")\n')])])]),t("h3",{attrs:{id:"decodebase64"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decodebase64"}},[a._v("#")]),a._v(" DecodeBase64")]),a._v(" "),t("p",[a._v("Base64 biçimini belirterek bir dize döndürür")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-34"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DecodeBase64(input string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Input")])]),a._v(" "),t("p",[a._v("Base64 biçiminde dize.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-37"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("val = DecodeBase64(mybase64)\n")])])]),t("h3",{attrs:{id:"encodebase64"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#encodebase64"}},[a._v("#")]),a._v(" EncodeBase64")]),a._v(" "),t("p",[a._v("Bir dize belirterek base64 biçiminde bir dize döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-35"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("EncodeBase64(input string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Input")])]),a._v(" "),t("p",[a._v("Kodlanacak dize.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-38"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var base64str string\nbase64str = EncodeBase64("my text")\n')])])]),t("h3",{attrs:{id:"ondalık"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ondalık"}},[a._v("#")]),a._v(" Ondalık")]),a._v(" "),t("p",[a._v("Bir tamsayıyı veya dizeyi bir kayan sayıya dönüştürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-36"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Float(val int|string) float\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("val")])]),a._v(" "),t("p",[a._v("Bir tamsayı veya dize.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-39"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('val = Float("567.989") + Float(232)\n')])])]),t("h3",{attrs:{id:"hextobytes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hextobytes"}},[a._v("#")]),a._v(" HexToBytes")]),a._v(" "),t("p",[a._v("Onaltılık biçimdeki bir dizeyi bayt türü baytlara dönüştürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-37"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(" HexToBytes(hexdata string) bytes\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("hexdata")])]),a._v(" "),t("p",[a._v("Onaltılık biçimde bir dize.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-40"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var val bytes\nval = HexToBytes("34fe4501a4d80094")\n')])])]),t("h3",{attrs:{id:"formatmoney"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#formatmoney"}},[a._v("#")]),a._v(" FormatMoney")]),a._v(" "),t("p",[a._v("exp / 10 ^ basamağının dize değerini döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-38"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("FormatMoney(exp string, digit int) string\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Exp")])]),a._v(" "),t("p",[a._v("Dize biçiminde bir sayı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("digit")])]),a._v(" "),t("p",[t("code",[a._v("Exp/10^digit")]),a._v(" ifadesinde 10'un üssü (pozitif veya negatif). Pozitif değerler ondalık basamakları belirler.")])])]),a._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[a._v("#")]),a._v(" Example")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(' s = FormatMoney("78236475917384", 0)\n')])])]),t("h3",{attrs:{id:"random"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#random"}},[a._v("#")]),a._v(" Random")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Returns a random number between min and max (min <= result 0 {\n info "You have already been registered"\n}\n')])])]),t("h3",{attrs:{id:"action-section"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#action-section"}},[a._v("#")]),a._v(" Action section")]),a._v(" "),t("p",[t("code",[a._v("action")]),a._v(" bölümü, diğer verileri alan ve sonuç değerlerini tablolara kaydeden sözleşmenin ana kodunu açıklar. Örneğin:")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('action {\nDBUpdate("keys", $key_id, {"-amount": $amount})\nDBUpdate("keys", $recipient, {"+amount": $amount, "pub": $Pub})\n}\n')])])]),t("h2",{attrs:{id:"degiskenler"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#degiskenler"}},[a._v("#")]),a._v(" Değişkenler")]),a._v(" "),t("p",[a._v("Veri bölümünde bildirilen değişkenler, değişken adının ardından "),t("code",[a._v("$")]),a._v(" sembolü ile diğer sözleşme bölümlerine iletilir. "),t("code",[a._v("$")]),a._v(" sembolü, bu sözleşmenin ve bu sözleşmenin iç içe olduğu tüm sözleşmelerin global değişkenleri olarak kabul edilen veri bölümünde olmayan diğer değişkenleri bildirmek için de kullanılabilir.")]),a._v(" "),t("p",[a._v("Önceden tanımlanmış değişkenler, sözleşme olarak adlandırılan işlem verilerini içeren sözleşmelerde kullanılabilir:")]),a._v(" "),t("ul",[t("li",[t("code",[a._v("$time")]),a._v(" - işlem timestamp;")]),a._v(" "),t("li",[t("code",[a._v("$ecosystem_id")]),a._v(" - ekosistem ID;")]),a._v(" "),t("li",[t("code",[a._v("$block")]),a._v(" - İşlemi içeren bloğun ID'si;")]),a._v(" "),t("li",[t("code",[a._v("$key_id")]),a._v(" - cari işlemi imzalayan hesabın adresi;")]),a._v(" "),t("li",[t("code",[a._v("$type")]),a._v(" - sanal makinede sözleşme kimliği;")]),a._v(" "),t("li",[t("code",[a._v("$block_key_id")]),a._v(" - bloğu oluşturan düğümün hesap adresi;")]),a._v(" "),t("li",[t("code",[a._v("$block_time")]),a._v(" - blok oluşturma zaman damgası;")]),a._v(" "),t("li",[t("code",[a._v("$original_contract")]),a._v(" - başlangıçta işlemi işleyen sözleşmenin adı. Değişken boş bir dize ise, sözleşmenin işlem doğrulaması sırasında çağrıldığı anlamına gelir. Sözleşmenin başka bir sözleşme tarafından mı yoksa doğrudan işlem tarafından mı çağrıldığını kontrol etmek için $original_contract ve $this_contract değerlerini karşılaştırmanız gerekir. Bu, sözleşmenin eşit olmaları durumunda işlem tarafından çağrıldığı anlamına gelir;")]),a._v(" "),t("li",[t("code",[a._v("$this_contract")]),a._v(" - şu anda yürütülmekte olan sözleşmenin adı;")]),a._v(" "),t("li",[t("code",[a._v("$guest_key")]),a._v(" - misafir hesabı adresi;")]),a._v(" "),t("li",[t("code",[a._v("$stack")]),a._v(" - yürütülen tüm sözleşmeleri içeren bir dizi veri türü içeren sözleşme dizisi yığını. Dizinin ilk öğesi, şu anda yürütülmekte olan sözleşmenin adını temsil ederken, son öğe işlemi ilk olarak işleyen sözleşmenin adını temsil eder;")]),a._v(" "),t("li",[t("code",[a._v("$node_position")]),a._v(" - bloğun bulunduğu doğrulama düğümü dizisinin dizin numarası;")]),a._v(" "),t("li",[t("code",[a._v("$txhash")]),a._v(" - işlem karması;")]),a._v(" "),t("li",[t("code",[a._v("$contract")]),a._v(" - mevcut sözleşme yapısı dizisi;")])]),a._v(" "),t("p",[a._v("Önceden tanımlanmış değişkenlere yalnızca sözleşmelerde değil, uygulama öğelerinin erişim izin koşullarını tanımlayan izin alanlarında da erişilebilir. İzin alanlarında kullanıldığında, blok bilgileri için önceden tanımlanmış değişkenler her zaman sıfıra eşittir, örneğin: "),t("code",[a._v("$time")]),a._v(", "),t("code",[a._v("$block")]),a._v(", vb.")]),a._v(" "),t("p",[a._v("Sözleşmenin dönüş sonucuyla önceden tanımlanmış bir "),t("code",[a._v("$result")]),a._v(" değişkeni olarak atanır.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('contract my {\n data {\n Name string\n Amount money\n }\n func conditions {\n if $Amount <= 0 {\n error "Amount cannot be 0"\n }\n $ownerId = 1232\n }\n func action {\n var amount money\n amount = $Amount - 10\n DBUpdate("mytable", $ownerId, {name: $Name,amount: amount})\n DBUpdate("mytable2", $ownerId, {amount: 10})\n }\n}\n')])])]),t("h2",{attrs:{id:"ic-ice-sozlesmeler"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ic-ice-sozlesmeler"}},[a._v("#")]),a._v(" İç İçe Sözleşmeler")]),a._v(" "),t("p",[a._v("Sözleşmeleri, sözleşmenin koşullar ve eylem bölümlerine yerleştirebilirsiniz. İç içe sözleşmeler doğrudan çağrılabilir ve sözleşme parametreleri, sözleşme adından sonra parantez içinde belirtilir, örneğin, "),t("code",[a._v("@1NameContract(Params)")]),a._v(". "),t("a",{attrs:{href:"#callcontract"}},[a._v("CallContract")]),a._v(" işleviyle iç içe sözleşmeleri de çağırabilirsiniz.")]),a._v(" "),t("h2",{attrs:{id:"dosya-yukleme"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dosya-yukleme"}},[a._v("#")]),a._v(" Dosya Yükleme")]),a._v(" "),t("p",[t("code",[a._v("multipart/form-data")]),a._v(" formatında bir form kullanarak dosya yükleme için, sözleşmenin veri tipi "),t("code",[a._v("file")]),a._v(" olmalıdır.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("contract Upload {\n data {\n \t File file\n }\n ...\n}\n")])])]),t("p",[a._v("Dosyaları depolamak için "),t("a",{attrs:{href:"#uploadbinary"}},[a._v("UploadBinary")]),a._v(" sözleşmesi kullanılır.Sayfa düzenleyicideki Logicor dil işlevi "),t("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#binary"}},[a._v("Binary")]),a._v(" ile dosya indirme bağlantısını alabilirisiniz.")],1),a._v(" "),t("h2",{attrs:{id:"json-formatında-sorgular"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#json-formatında-sorgular"}},[a._v("#")]),a._v(" Json formatında sorgular")]),a._v(" "),t("p",[a._v("Sözleşme dilinde "),t("strong",[a._v("JSON")]),a._v(" alan türü olarak belirtilebilir. Giriş alanını işlemek için "),t("strong",[a._v("columnname->fieldname")]),a._v(" söz dizimini kullanabilirsiniz. Elde edilen değer "),t("strong",[a._v("columnname.fieldname")]),a._v(" içine kaydedilir. Yukarıdaki sözdizimi, "),t("a",{attrs:{href:"#dbfind"}},[a._v("DBFind")]),a._v(" işlevinin Columns,One,Where bölümünde kullanılabilir.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var ret map\nvar val str\nvar list array\nret = DBFind("mytable").Columns("myname,doc,doc->ind").WhereId($Id).Row()\nval = ret["doc.ind"]\nval = DBFind("mytable").Columns("myname,doc->type").WhereId($Id).One("doc->type")\nlist = DBFind("mytable").Columns("myname,doc,doc->ind").Where("doc->ind = ?", "101")\nval = DBFind("mytable").WhereId($Id).One("doc->check")\n')])])]),t("h2",{attrs:{id:"tarih-ve-saat-islemleri-iceren-sorgular"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tarih-ve-saat-islemleri-iceren-sorgular"}},[a._v("#")]),a._v(" Tarih ve saat işlemleri içeren sorgular")]),a._v(" "),t("p",[a._v("Sözleşme dili işlevleriyle tarih ve saati doğrudan sorgulayıp güncelleyemezsiniz ancak aşağıdaki örnekte olduğu gibi Where deyiminde PostgreSQL işlevlerini ve özelliklerini kullanabilirsiniz.Örneğin, tarih_sütun alanını geçerli saatle karşılaştırmanız gerekir. tarih_sütun bir zaman damgası türüyse, ifade "),t("code",[a._v("date_column NOW()")]),a._v(" olmalıdır.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('Where("to_timestamp(date_column)> NOW()")\nWhere("date_column , >=, <=, ==, !=, ||, &&")])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("if val> 10 || id != $block_key_id {\n ...\n} else {\n ...\n}\n")])])]),t("p",[t("strong",[a._v("while")]),a._v(" döngüsünün koşullu ifadesi doğru olduğunda kod bloğu yürütülür. "),t("strong",[a._v("break")]),a._v(", kod bloğunun döngüsünü sonlandırmak anlamına gelir. Bir döngüyü baştan başlatmak istiyorsanız, "),t("strong",[a._v("devam")]),a._v("'ı kullanın.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var i int\nwhile true {\n if i > 100 {\n break\n }\n ...\n if i == 50 {\n continue\n }\n ...\n i = i + 1\n}\n")])])]),t("p",[a._v("Needle, koşullu ifadelere ek olarak standart aritmetik işlemleri de destekler: "),t("code",[a._v("+")]),a._v(", "),t("code",[a._v("-")]),a._v(", "),t("code",[a._v("*")]),a._v(", "),t("code",[a._v("/")]),a._v(".")]),a._v(" "),t("p",[a._v("Dize ve bayt türlerinin değişkenleri koşullu bir ifade olarak kullanılabilir. Türün uzunluğu sıfırdan büyükse koşul doğrudur, aksi takdirde yanlıştır.")]),a._v(" "),t("h2",{attrs:{id:"fonksiyonlar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fonksiyonlar"}},[a._v("#")]),a._v(" Fonksiyonlar")]),a._v(" "),t("p",[a._v("İşlevler, bir sözleşmenin "),t("a",{attrs:{href:"#data-section"}},[a._v("data section")]),a._v(" tarafından alınan veriler üzerinde bazı işlemler gerçekleştirebilir: veritabanından veri okuma ve yazma, değer türünü dönüştürme ve sözleşmeler arasındaki etkileşimi oluşturma.")]),a._v(" "),t("h3",{attrs:{id:"fonksiyon-atamaları"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fonksiyon-atamaları"}},[a._v("#")]),a._v(" Fonksiyon atamaları")]),a._v(" "),t("p",[a._v("Bir işlevi bildirmek için func anahtar sözcüğünü kullanın, ardından ad ve ona iletilen parametrelerin listesi ve türleri. Tüm parametreler parantez içine alınır ve virgülle ayrılır. Parantezlerden sonra fonksiyonun döndürdüğü değerin veri tipi bildirilmelidir. Fonksiyon gövdesi parantez içine alınmalıdır. Fonksiyonun parametresi yoksa, parantezler atlanabilir. Bir fonksiyondan değer döndürmek için "),t("code",[a._v("return")]),a._v(" anahtar sözcüğünü kullanın.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('func myfunc(left int, right int) int {\n return left*right + left - right\n}\nfunc test int {\n return myfunc(10, 30) + myfunc(20, 50)\n}\nfunc ooops {\n error "Ooops..."\n}\n')])])]),t("p",[a._v("Tüm hata kontrolleri otomatik olarak yapıldığından, fonksiyon hata döndürmez. Herhangi bir fonksiyonda bir hata varsa, sözleşme çalışmasını sonlandıracak ve hata açıklamasını bir pencerede sunacaktır.")]),a._v(" "),t("h3",{attrs:{id:"degisken-uzunluklu-parametreler"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#degisken-uzunluklu-parametreler"}},[a._v("#")]),a._v(" Değişken-uzunluklu parametreler")]),a._v(" "),t("p",[a._v("Fonksiyonlar değişken uzunluklu parametreleri tanımlayabilir, değişken uzunluklu parametreleri belirtmek için fonksiyonun son parametre tipi olarak "),t("code",[a._v("...")]),a._v(" sembolünü bir veri tipi "),t("code",[a._v("array")]),a._v(" ile kullanabilir. Değişken uzunluklu parametreler, parametrenin çağrıda geçirildiği zamandan itibaren tüm değişkenleri içerir. Tüm değişken türleri iletilebilir, ancak veri türlerinin uyumsuzluğundan kaynaklanan çatışmalarla uğraşmanız gerekir.")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('func sum(out string, values ...) {\nvar i, res int\n\nwhile i 12")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{"field": {"$gte": 12}}')]),a._v("\nEquivalent to "),t("code",[a._v("field >= 12")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{"$and": [, , ]}')]),a._v("\nEquivalent to "),t("code",[a._v("expr1 AND expr2 AND expr3")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{"$or": [, , ]}')]),a._v("\nEquivalent to "),t("code",[a._v("expr1 OR expr2 OR expr3")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{field: {"$like": "value"}}')]),a._v("\nEquivalent to "),t("code",[a._v("field like'%value%'")]),a._v(" (fuzzy search).")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{field: {"$begin": "value"}}')]),a._v("\nEquivalent to "),t("code",[a._v("field like'value%'")]),a._v(" (starts with "),t("code",[a._v("value")]),a._v(").")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{field: {"$end": "value"}}')]),a._v("\nEquivalent to "),t("code",[a._v("field like'%value'")]),a._v(" (ends with "),t("code",[a._v("value")]),a._v(").")])]),a._v(" "),t("li",[t("p",[t("code",[a._v('{field: "$isnull"}')]),a._v("\nEquivalent to field is null.")])])])])]),a._v(" "),t("p",[a._v("Nesne dizilerinin anahtarlarının üzerine yazmadığınızdan emin olun. Örneğin, "),t("code",[a._v("id>2 ve id<5")]),a._v(" ile sorgulamak istiyorsanız, "),t("code",[a._v('{id:{"$gt": 2}, id:{"$lt": 5}}')]),a._v(" kullanamazsınız, çünkü ilk elemanın üzerine ikinci eleman yazılacaktır. Aşağıdaki sorgu yapısını kullanmalısınız:")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('{id: [{"$gt": 2}, {"$lt": 5}]}\n')])])]),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('{"$and": [{id:{"$gt": 2}}, {id:{"$lt": 5}}]}\n')])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Kimliğe göre sorgular. Örnek, .WhereId(1).")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("Order")])]),a._v(" "),t("p",[a._v("Sonuç kümesini belirli bir sütuna göre veya varsayılan olarak kimliğe göre sıralamak için kullanılır.")]),a._v(" "),t("p",[a._v("Sıralama için yalnızca bir alan kullanıyorsanız, onu bir dize olarak belirtebilirsiniz. Birden çok alanı sıralamak için bir dizi dize nesnesi belirtmeniz gerekir:")]),a._v(" "),t("p",[a._v("Azalan düzen: "),t("code",[a._v('{"field": "-1"}')]),a._v(" eşittir "),t("code",[a._v("field desc")]),a._v(".")]),a._v(" "),t("p",[a._v("Artan düzen: "),t("code",[a._v('{"field": "1"}')]),a._v(" eşittir "),t("code",[a._v("field asc")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("limit")])]),a._v(" "),t("p",[a._v("Girişlerin sayısını döndürür. 25, varsayılan olarak. Maksimum sayı 10.000'dir.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("Offset")])]),a._v(" "),t("p",[a._v("Offset.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("Ecosystemid")])]),a._v(" "),t("p",[a._v("Ekosistem kimliği. Varsayılan olarak, mevcut ekosistemin tablosu sorgulanır.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-2"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var i int\nvar ret string\nret = DBFind("contracts").Columns("id,value").Where({id: [{"$gt": 2}, {"$lt": 5}]}).Order( "id")\nwhile i 0 {\n item = list[0]\n}\n')])])]),t("h3",{attrs:{id:"gethistoryrow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gethistoryrow"}},[a._v("#")]),a._v(" GetHistoryRow")]),a._v(" "),t("p",[a._v("Belirtilen bir tabloda belirtilen bir girdinin değişiklik geçmişinden tek bir anlık görüntü döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-5"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetHistoryRow(table string, id int, rollbackId int) map\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("table")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Giriş ID.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("rollbackId")])]),a._v(" "),t("p",[a._v("rollback_tx Tablonun giriş ID.")])])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(' $result = GetHistoryRow("contracts",205,2358)\n')])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[a._v("#")]),a._v(" GetColumnType")]),a._v(" "),t("p",[a._v("Belirtilen tablodaki belirtilen alanın veri türünü döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-6"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetColumnType(table, column string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("table")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("column")])]),a._v(" "),t("p",[a._v("Alan adı.")])])]),a._v(" "),t("blockquote",[t("p",[t("strong",[a._v("Return value")])])]),a._v(" "),t("p",[a._v("Değerler döndürülebilir: "),t("code",[a._v("text, varchar, number, money, double, bytes, json, datetime, double")]),a._v(".")]),a._v(" "),t("h4",{attrs:{id:"ornek-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-7"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var coltype string\ncoltype = GetColumnType("members", "member_name")\n')])])]),t("h3",{attrs:{id:"getdatafromxlsx"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getdatafromxlsx"}},[a._v("#")]),a._v(" GetDataFromXLSX")]),a._v(" "),t("p",[a._v("XLSX elektronik tablolarından verileri döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-7"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetDataFromXLSX(binId int, line int, count int, sheet int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("binId")])]),a._v(" "),t("p",[a._v("İkili tablo ikili dosyasında XLSX biçiminde kimlik.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("line")])]),a._v(" "),t("p",[a._v("Varsayılan olarak 0'dan başlayan başlangıç ​​satırı numarası.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("count")])]),a._v(" "),t("p",[a._v("Döndürülmesi gereken satır sayısı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("sheet")])]),a._v(" "),t("p",[a._v("Liste numarası, varsayılan olarak 1'den başlar.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-8"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var a array\na = GetDataFromXLSX(3, 12, 10, 1)\n")])])]),t("h3",{attrs:{id:"getrowscountxlsx"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getrowscountxlsx"}},[a._v("#")]),a._v(" GetRowsCountXLSX")]),a._v(" "),t("p",[a._v("Belirtilen bir XLSX dosyasındaki satır sayısını döndürür.")]),a._v(" "),t("h4",{attrs:{id:"syntax-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-2"}},[a._v("#")]),a._v(" Syntax")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetRowsCountXLSX(binId int, sheet int) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("binId")])]),a._v(" "),t("p",[a._v("İkili tablo ikili dosyasında XLSX biçiminde kimlik.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("sheet")])]),a._v(" "),t("p",[a._v("Liste numarası, varsayılan olarak 1'den başlar.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-9"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var count int\ncount = GetRowsCountXLSX(binid, 1)\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[a._v("#")]),a._v(" LangRes")]),a._v(" "),t("p",[a._v("İki karakterli bir kod olarak belirtilen dil dili için ad etiketine sahip çok dilli bir kaynak döndürür, örneğin: "),t("code",[a._v("en")]),a._v(", "),t("code",[a._v("zh")]),a._v(". Seçilen bir dil için dil yoksa, "),t("code",[a._v("en")]),a._v(" etiketinin dil kaynağı döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"syntax-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-3"}},[a._v("#")]),a._v(" Syntax")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("LangRes(label string, lang string) string\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("label")])]),a._v(" "),t("p",[a._v("Dil kaynağı adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("lang")])]),a._v(" "),t("p",[a._v("İki karakterli dil kodu.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-10"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('warning LangRes("@1confirm", "en")\nerror LangRes("@1problems", "zh")\n')])])]),t("h3",{attrs:{id:"getblock"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getblock"}},[a._v("#")]),a._v(" GetBlock")]),a._v(" "),t("p",[a._v("Belirtilen bir blok hakkında ilgili bilgileri döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-8"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetBlock(blockID int64) map\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("blockID")])]),a._v(" "),t("p",[a._v("Block ID.")])])]),a._v(" "),t("blockquote",[t("p",[t("strong",[a._v("Return value")])])]),a._v(" "),t("p",[a._v("Bir dizi nesne döndür:")]),a._v(" "),t("ul",[t("li",[t("p",[t("strong",[a._v("id")])]),a._v(" "),t("p",[a._v("Block ID.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("time")])]),a._v(" "),t("p",[a._v("Blok oluşturma zaman damgası.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("key_id")])]),a._v(" "),t("p",[a._v("Doğrulama düğümünün hesap adresi bloğu oluşturdu.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-11"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var b map\nb = GetBlock(1)\nPrintln(b)\n")])])]),t("h3",{attrs:{id:"dbinsert"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbinsert"}},[a._v("#")]),a._v(" DBInsert")]),a._v(" "),t("p",[a._v("Belirtilen tabloya bir girdi ekler ve girdi kimliğini döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-9"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DBInsert(table string, params map) int\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tblname")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("params")])]),a._v(" "),t("p",[a._v("Anahtarların alan adları ve değerlerin eklenen değerler olduğu bir nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-12"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('DBInsert("mytable", {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"dbupdate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbupdate"}},[a._v("#")]),a._v(" DBUpdate")]),a._v(" "),t("p",[a._v("Belirtilen bir tabloda belirtilen giriş kimliğinin sütun değerini değiştirir. Giriş kimliği tabloda yoksa bir hata döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-10"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DBUpdate(tblname string, id int, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tblname")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Entry ID.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("params")])]),a._v(" "),t("p",[a._v("Anahtarların alan adları ve değerlerin değişikliklerden sonra yeni değerler olduğu bir nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-13"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('DBUpdate("mytable", myid, {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"dbupdateext"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbupdateext"}},[a._v("#")]),a._v(" DBUpdateExt")]),a._v(" "),t("p",[a._v("Belirtilen tablodaki sorgu koşuluyla eşleşen bir sütunun değerini değiştirir.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-11"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DBUpdateExt(tblname string, where map, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tblname")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("where")])]),a._v(" "),t("p",[a._v("Sorgo koşulları")]),a._v(" "),t("p",[a._v("Daha fazla detay için, burada "),t("a",{attrs:{href:"#dbfind"}},[a._v("DBFind")]),a._v(".")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("params")])]),a._v(" "),t("p",[a._v("Anahtarların alan adları ve değerlerin değişikliklerden sonra yeni değerler olduğu bir nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-14"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('DBUpdateExt("mytable", {id: $key_id, ecosystem: $ecosystem_id}, {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"delcolumn"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#delcolumn"}},[a._v("#")]),a._v(" DelColumn")]),a._v(" "),t("p",[a._v("Belirtilen tabloda kaydı olmayan bir alanı silin.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-12"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DelColumn(tblname string, column string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tblname")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("column")])]),a._v(" "),t("p",[a._v("Silinecek alan.")])])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('DelColumn("mytable", "mycolumn")\n')])])]),t("h3",{attrs:{id:"deltable"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deltable"}},[a._v("#")]),a._v(" DelTable")]),a._v(" "),t("p",[a._v("Hiçbir kaydı olmayan belirli bir tabloyu siler.")]),a._v(" "),t("h4",{attrs:{id:"syntax-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-4"}},[a._v("#")]),a._v(" Syntax")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DelTable(tblname string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tblname")])]),a._v(" "),t("p",[a._v("Tablo adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-15"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('DelTable("mytable")\n')])])]),t("h3",{attrs:{id:"ekle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ekle"}},[a._v("#")]),a._v(" Ekle")]),a._v(" "),t("p",[a._v("Src dizisine herhangi bir türde val ekler.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-13"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("p",[a._v("Append(src array, val anyType) array")]),a._v(" "),t("ul",[t("li",[t("p",[t("strong",[a._v("src")])]),a._v(" "),t("p",[a._v("Orjinal dizi.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("val")])]),a._v(" "),t("p",[a._v("Eklenecek değer.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-16"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var list array\nlist = Append(list, "new_val")\n')])])]),t("h3",{attrs:{id:"katılmak"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#katılmak"}},[a._v("#")]),a._v(" Katılmak")]),a._v(" "),t("p",[a._v('"in dizisinin" öğelerini belirtilen bir ayırıcıyla bir dizede birleştirir.')]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-14"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Join(in array, sep string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("İçinde")])]),a._v(" "),t("p",[a._v("Array ismi.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("sep")])]),a._v(" "),t("p",[a._v("Ayırıcı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-17"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(' var val string, myarr array\n myarr[0] = "first"\n myarr[1] = 10\n val = Join(myarr, ",")\n')])])]),t("h3",{attrs:{id:"bolmek"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bolmek"}},[a._v("#")]),a._v(" Bölmek")]),a._v(" "),t("p",[a._v('"in dizesini" öğelere bölmek ve bunları bir diziye yerleştirmek için ayırıcıyı kullanır.')]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-15"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Split(in string, sep string) array\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("İçinde")])]),a._v(" "),t("p",[a._v("Metinsel.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("sep")])]),a._v(" "),t("p",[a._v("Ayırıcı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-18"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var myarr array\nmyarr = Split("first,second,third", ",")\n')])])]),t("h3",{attrs:{id:"len"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#len"}},[a._v("#")]),a._v(" Len")]),a._v(" "),t("p",[a._v("Belirtilen dizideki öğelerin sayısını döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-16"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Len(val array) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("val")])]),a._v(" "),t("p",[a._v("Dizi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-19"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("if Len(mylist) == 0 {\n ...\n}\n")])])]),t("h3",{attrs:{id:"sıra"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sıra"}},[a._v("#")]),a._v(" Sıra")]),a._v(" "),t("p",[a._v("Bu durumda list parametresi belirtilmemelidir. Dizi listesindeki ilk nesne dizisini döndürün. Liste boşsa, boş bir sonuç döndürülür. Bu işlev çoğunlukla "),t("a",{attrs:{href:"#dbfind"}},[a._v("DBFind")]),a._v(" işleviyle birlikte kullanılır. Bu işlevi kullanırken, parametreleri belirtemezsiniz.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-17"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(" Row(list array) map\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("list")])]),a._v(" "),t("p",[a._v("DBFind işlevi tarafından döndürülen nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-20"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(' var ret map\n ret = DBFind("contracts").Columns("id,value").WhereId(10).Row()\n Println(ret)\n')])])]),t("h3",{attrs:{id:"one"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#one"}},[a._v("#")]),a._v(" One")]),a._v(" "),t("p",[a._v("Dizi listesindeki ilk nesne dizisinin alan değerini döndürür. Liste dizisi boşsa, nil döndürülür. Çoğunlukla "),t("a",{attrs:{href:"#dbfind"}},[a._v("DBFind")]),a._v(" işleviyle birlikte kullanılır. Bu işlevi kullanırken, parametreleri belirtemezsiniz.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-18"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("One(list array, column string) string\n")])])]),t("ul",[t("li",[t("strong",[a._v("list")])])]),a._v(" "),t("p",[a._v("DBFind işlevi tarafından döndürülen nesne dizisi.")]),a._v(" "),t("ul",[t("li",[t("p",[t("strong",[a._v("column")])]),a._v(" "),t("p",[a._v("Alan adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-21"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var ret string\nret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")\nif ret != nil {\n Println(ret)\n}\n')])])]),t("h3",{attrs:{id:"getmapkeys"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getmapkeys"}},[a._v("#")]),a._v(" GetMapKeys")]),a._v(" "),t("p",[a._v("Nesne dizisindeki anahtar diziyi döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-19"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetMapKeys(val map) array\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("val")])]),a._v(" "),t("p",[a._v("Nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-22"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var val map\nvar arr array\nval["k1"] = "v1"\nval["k2"] = "v2"\narr = GetMapKeys(val)\n')])])]),t("h3",{attrs:{id:"sortedkeys"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sortedkeys"}},[a._v("#")]),a._v(" SortedKeys")]),a._v(" "),t("p",[a._v("Nesne dizisinde sıralanmış bir anahtar dizi döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-20"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("SortedKeys(val map) array\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("val")])]),a._v(" "),t("p",[a._v("Nesne dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-23"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var val map\nvar arr array\nval["k2"] = "v2"\nval["k1"] = "v1"\narr = SortedKeys(val)\n')])])]),t("h3",{attrs:{id:"callcontract"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#callcontract"}},[a._v("#")]),a._v(" CallContract")]),a._v(" "),t("p",[a._v("Belirtilen adla sözleşmeyi çağırır. Sözleşmedeki veri bölümünün tüm parametreleri bir nesne dizisine dahil edilmelidir. Bu işlev, belirtilen bir sözleşme tarafından "),t("strong",[a._v("$result")]),a._v(" değişkenine atanan değeri döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-21"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("CallContract(name string, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("name")])]),a._v(" "),t("p",[a._v("Çağrılan sözleşmenin adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("params")])]),a._v(" "),t("p",[a._v("Sözleşme girdi verilerinin ilişkisel dizisi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-24"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var par map\npar["Name"] = "My Name"\nCallContract("MyContract", par)\n')])])]),t("h3",{attrs:{id:"contractaccess"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contractaccess"}},[a._v("#")]),a._v(" ContractAccess")]),a._v(" "),t("p",[a._v("Yürütülmekte olan sözleşmenin adının parametrelerde listelenen adlardan biriyle eşleşip eşleşmediğini kontrol eder. Genellikle tablolara sözleşme erişimini kontrol etmek için kullanılır. Tablo alanlarını düzenlerken veya tablonun izinler bölümünde yeni sütun alanları eklerken, lütfen bu işlevi izin alanlarında belirtin.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-22"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("ContractAccess(name string, [name string]) bool\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("name")])]),a._v(" "),t("p",[a._v("Sözleşme adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-25"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('ContractAccess("MyContract")\nContractAccess("MyContract","SimpleContract")\n')])])]),t("h3",{attrs:{id:"contractconditions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contractconditions"}},[a._v("#")]),a._v(" ContractConditions")]),a._v(" "),t("p",[a._v("Sözleşmedeki koşullar bölümünü belirtilen adla çağırır.")]),a._v(" "),t("p",[a._v("Bu tür sözleşmeler için veri bölümü boş olmalıdır. Koşullar bölümü hatasız yürütülürse true döner. Yürütme sırasında bir hata varsa, hata nedeniyle ana sözleşme de feshedilecektir. Bu işlev genellikle sözleşmenin tablolara erişimini kontrol etmek için kullanılır ve sistem tablolarını düzenlerken izin alanlarında çağrılabilir.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-23"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("ContractConditions(name string, [name string]) bool\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("name")])]),a._v(" "),t("p",[a._v("Sözleşme adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-26"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('ContractConditions("MainCondition")\n')])])]),t("h3",{attrs:{id:"evalcondition"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#evalcondition"}},[a._v("#")]),a._v(" EvalCondition")]),a._v(" "),t("p",[a._v("Sözleşme tablo adı tablosundan bir 'ad' alanı olan kayıttaki koşul alanının değerini alır ve koşul alanı değerinin koşullarını kontrol eder.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-24"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("EvalCondition(tablename string, name string, condfield string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("tablename")])]),a._v(" "),t("p",[a._v("Tablo adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("name")])]),a._v(" "),t("p",[a._v("'name' alanı ile değeri sorgular.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("condfield")])]),a._v(" "),t("p",[a._v("Koşulları kontrol edilmesi gereken alanın adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-27"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("EvalCondition(`menu`, $Name, `conditions`)\n")])])]),t("h3",{attrs:{id:"getcontractbyid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyid"}},[a._v("#")]),a._v(" GetContractById")]),a._v(" "),t("p",[a._v("Sözleşme kimliğine göre sözleşme adını döndürür. Sözleşme bulunamazsa boş bir dize döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-25"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetContractById(id int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Sözleşme tablosu sözleşmelerindeki sözleşme kimliği.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-28"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var name string\nname = GetContractById($IdContract)\n")])])]),t("h3",{attrs:{id:"getcontractbyname"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyname"}},[a._v("#")]),a._v(" GetContractByName")]),a._v(" "),t("p",[a._v("Bu işlev, sözleşme kimliğini sözleşme adına göre döndürür. Sözleşme bulunamazsa, sıfır döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-26"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("GetContractByName(name string) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("name")])]),a._v(" "),t("p",[a._v("Sözleşme tablosu sözleşmelerinde sözleşme adı.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-29"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var id int\nid = GetContractByName(`NewBlock`)\n")])])]),t("h3",{attrs:{id:"rolerisimi"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rolerisimi"}},[a._v("#")]),a._v(" RolErişimi")]),a._v(" "),t("p",[a._v("Sözleşme arayanın rol kimliğinin parametrede belirtilen kimliklerden biriyle eşleşip eşleşmediğini kontrol eder.")]),a._v(" "),t("p",[a._v("Tablolara ve diğer verilere sözleşme erişimini kontrol etmek için bu işlevi kullanabilirsiniz.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-27"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("RoleAccess(id int, [id int]) bool\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Role ID.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-30"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("RoleAccess(1)\nRoleAccess(1, 3)\n")])])]),t("h3",{attrs:{id:"islem-bilgileri"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#islem-bilgileri"}},[a._v("#")]),a._v(" İşlem Bilgileri")]),a._v(" "),t("p",[a._v("İşlemleri belirtilen hash değerine göre sorgular ve yürütülen sözleşme ve parametreleri hakkında bilgi verir.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-28"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("TransactionInfo(hash: string)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("hash")])]),a._v(" "),t("p",[a._v("Onaltılık(hexadecimal) dize biçiminde işlem karması.")])])]),a._v(" "),t("blockquote",[t("p",[t("strong",[a._v("Return value")])])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[a._v("Bu işlev, JSON biçiminde bir dize döndürür:\n")])])]),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}\n')])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("contract")])]),a._v(" "),t("p",[a._v("Sözleşme adı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("params")])]),a._v(" "),t("p",[a._v("Sözleşme parametrelerine aktarılan veriler.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("block")])]),a._v(" "),t("p",[a._v("İşlemi işleyen bloğun kimliği.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-31"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("var out map\nout = JSONDecode(TransactionInfo(hash))\n")])])]),t("h3",{attrs:{id:"throw"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#throw"}},[a._v("#")]),a._v(" Throw")]),a._v(" "),t("p",[a._v("Özel durum(exception) türünde bir hata oluşturur.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-29"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Throw(ErrorId string, ErrDescription string)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("ErrorId")])]),a._v(" "),t("p",[a._v("Hata tanımlayıcısı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("ErrDescription")])]),a._v(" "),t("p",[a._v("Hata tanımlaması.")])])]),a._v(" "),t("blockquote",[t("p",[t("strong",[a._v("Return value")])])]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[a._v("Bu tür işlem sonuçlarının biçimi:\n")])])]),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('{"type":"exception","error":"Error description","id":"Error ID"}\n')])])]),t("h4",{attrs:{id:"ornek-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-32"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('Throw("Problem", "There is a problem")\n')])])]),t("h3",{attrs:{id:"validatecondition"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#validatecondition"}},[a._v("#")]),a._v(" ValidateCondition")]),a._v(" "),t("p",[a._v("Koşul parametresi tarafından belirtilen koşulları derlemeye çalışır. Derleme işlemi sırasında bir hata oluşursa hata oluşur ve çağrılan sözleşme sonlandırılır. Bu işlev, koşullu biçimin doğruluğunu kontrol etmek için tasarlanmıştır.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-30"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("ValidateCondition(condition string, state int)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("condition")])]),a._v(" "),t("p",[a._v("Doğrulanması gereken koşullu biçim.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("state")])]),a._v(" "),t("p",[a._v("Ekosistem kimliği. Global koşulu kontrol ederseniz, lütfen 0 olarak belirtin.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-33"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('ValidateCondition(`ContractAccess("@1MyContract")`, 1)\n')])])]),t("h3",{attrs:{id:"addresstoid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[a._v("#")]),a._v(" AddressToId")]),a._v(" "),t("p",[a._v("Cüzdan adresine göre ilgili hesap adresini döndürür. Geçersiz bir adres belirtilirse, '0' döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-31"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("AddressToId(address string) int\n\n")])])]),t("ul",[t("li",[t("p",[a._v("Address")]),a._v(" "),t("p",[t("code",[a._v("XXXX-...-XXXX")]),a._v(" biçiminde veya sayı biçiminde cüzdan adresi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-34"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("wallet = AddressToId($Recipient)\n")])])]),t("h3",{attrs:{id:"idtoaddress"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#idtoaddress"}},[a._v("#")]),a._v(" IdToAddress")]),a._v(" "),t("p",[a._v("Hesap adresine göre ilgili cüzdan adresini döndürür. Geçersiz bir adres belirtilirse, geçersiz adres 'invalid' döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-32"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("IdToAddress(id int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Id")])]),a._v(" "),t("p",[a._v("Hesap adresi.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-35"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("$address = IdToAddress($id)\n")])])]),t("h3",{attrs:{id:"pubtoid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pubtoid"}},[a._v("#")]),a._v(" PubToID")]),a._v(" "),t("p",[a._v("Hesap adresi, genel anahtar tarafından onaltılık biçimde döndürülür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-33"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("PubToID(hexkey string) int\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("hexkey")])]),a._v(" "),t("p",[a._v("Onaltılık biçimde genel anahtar.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-36"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var wallet int\nwallet = PubToID("04fa5e78.....34abd6")\n')])])]),t("h3",{attrs:{id:"decodebase64"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#decodebase64"}},[a._v("#")]),a._v(" DecodeBase64")]),a._v(" "),t("p",[a._v("Base64 biçimini belirterek bir dize döndürür")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-34"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DecodeBase64(input string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Input")])]),a._v(" "),t("p",[a._v("Base64 biçiminde dize.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-37"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("val = DecodeBase64(mybase64)\n")])])]),t("h3",{attrs:{id:"encodebase64"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#encodebase64"}},[a._v("#")]),a._v(" EncodeBase64")]),a._v(" "),t("p",[a._v("Bir dize belirterek base64 biçiminde bir dize döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-35"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("EncodeBase64(input string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Input")])]),a._v(" "),t("p",[a._v("Kodlanacak dize.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-38"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var base64str string\nbase64str = EncodeBase64("my text")\n')])])]),t("h3",{attrs:{id:"ondalık"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ondalık"}},[a._v("#")]),a._v(" Ondalık")]),a._v(" "),t("p",[a._v("Bir tamsayıyı veya dizeyi bir kayan sayıya dönüştürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-36"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Float(val int|string) float\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("val")])]),a._v(" "),t("p",[a._v("Bir tamsayı veya dize.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-39"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('val = Float("567.989") + Float(232)\n')])])]),t("h3",{attrs:{id:"hextobytes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hextobytes"}},[a._v("#")]),a._v(" HexToBytes")]),a._v(" "),t("p",[a._v("Onaltılık biçimdeki bir dizeyi bayt türü baytlara dönüştürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-37"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(" HexToBytes(hexdata string) bytes\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("hexdata")])]),a._v(" "),t("p",[a._v("Onaltılık biçimde bir dize.")])])]),a._v(" "),t("h4",{attrs:{id:"ornek-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ornek-40"}},[a._v("#")]),a._v(" Örnek")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v('var val bytes\nval = HexToBytes("34fe4501a4d80094")\n')])])]),t("h3",{attrs:{id:"formatmoney"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#formatmoney"}},[a._v("#")]),a._v(" FormatMoney")]),a._v(" "),t("p",[a._v("exp / 10 ^ basamağının dize değerini döndürür.")]),a._v(" "),t("h4",{attrs:{id:"sozdizimi-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sozdizimi-38"}},[a._v("#")]),a._v(" Sözdizimi")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("FormatMoney(exp string, digit int) string\n")])])]),t("ul",[t("li",[t("p",[t("strong",[a._v("Exp")])]),a._v(" "),t("p",[a._v("Dize biçiminde bir sayı.")])]),a._v(" "),t("li",[t("p",[t("strong",[a._v("digit")])]),a._v(" "),t("p",[t("code",[a._v("Exp/10^digit")]),a._v(" ifadesinde 10'un üssü (pozitif veya negatif). Pozitif değerler ondalık basamakları belirler.")])])]),a._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[a._v("#")]),a._v(" Example")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v(' s = FormatMoney("78236475917384", 0)\n')])])]),t("h3",{attrs:{id:"random"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#random"}},[a._v("#")]),a._v(" Random")]),a._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Returns a random number between min and max (min <= result (map | array [index value])")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdSetIndex")]),e._v(" – Değer kullanmadan, yığının en üst öğesinin değerini harita veya dizi öğelerine atar. Örneğin, "),r("code",[e._v("(map | array) (index value) (value) => (map | array)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdFuncName")]),e._v(" - dot. ile bölünen sıralı açıklamalar kullanılarak geçirilen parametreleri ekler. Örneğin, "),r("code",[e._v("func name => Func (...) .Name (...)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdUnwrapArr")]),e._v(" - yığının en üst öğesi bir dizi ise bir Boole bayrağı tanımlar;")]),e._v(" "),r("li",[r("strong",[e._v("cmdMapInit")]),e._v(" – map değerini başlatır;")]),e._v(" "),r("li",[r("strong",[e._v("cmdArrayInit")]),e._v(" - dizinin değerini başlatır;")]),e._v(" "),r("li",[r("strong",[e._v("cmdError")]),e._v(" - bu komut, bir sözleşme veya işlev belirtilen bir ile sona erdiğinde oluşturulur."),r("code",[e._v("error, warning, info")]),e._v(".")])]),e._v(" "),r("h3",{attrs:{id:"yıgın-islem-komutları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#yıgın-islem-komutları"}},[e._v("#")]),e._v(" Yığın işlem komutları")]),e._v(" "),r("blockquote",[r("p",[e._v("Not")])]),e._v(" "),r("blockquote",[r("p",[e._v("Mevcut sürümde, bu komutlar için otomatik tip dönüştürme tam olarak uygulanamaz. Örneğin,")])]),e._v(" "),r("blockquote",[r("p",[r("code",[e._v("string + float | int | decimal => float | int | decimal, float + int | str => float, but int + string => runtime error")]),e._v(".")])]),e._v(" "),r("p",[e._v("Aşağıdakiler, doğrudan yığın işleme için komutlardır. Bu komutlarda Değer alanı kullanılmaz.")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("cmdNot")]),e._v(" - logical negation. "),r("code",[e._v("(val) => (!ValueToBool(val))")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdSign")]),e._v(" - change of sign. "),r("code",[e._v("(val) => (-val)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdAdd")]),e._v(" - addition. "),r("code",[e._v("(val1)(val2) => (val1 + val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdSub")]),e._v(" - subtraction. "),r("code",[e._v("(val1)(val2) => (val1-val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdMul")]),e._v(" - multiplication. "),r("code",[e._v("(val1)(val2) => (val1 * val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdDiv")]),e._v(" - division. "),r("code",[e._v("(val1)(val2) => (val1 / val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdAnd")]),e._v(" - logical AND. "),r("code",[e._v("(val1)(val2) => (valueToBool(val1) && valueToBool(val2))")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdOr")]),e._v(" - logical OR. "),r("code",[e._v("(val1)(val2) => (valueToBool(val1) || valueToBool(val2))")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdEqual")]),e._v(" - equality comparison, bool is returned. "),r("code",[e._v("(val1)(val2) => (val1 == val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdNotEq")]),e._v(" - inequality comparison, bool is returned. "),r("code",[e._v("(val1)(val2) => (val1 != val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdLess")]),e._v(" - less-than comparison, bool is returned. "),r("code",[e._v("(val1)(val2) => (val1 (val1 >= val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdGreat")]),e._v(" - greater-than comparison, bool is returned. "),r("code",[e._v("(val1)(val2) => (val1> val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdNotGreat")]),e._v(" - less-than-or-equal comparison, bool is returned. "),r("code",[e._v("(val1)(val2) => (val1 <= val2)")]),e._v(".")])]),e._v(" "),r("h3",{attrs:{id:"runtime-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#runtime-yapısı"}},[e._v("#")]),e._v(" Runtime Yapısı")]),e._v(" "),r("p",[e._v("Bayt kodlarının yürütülmesi sanal makineyi etkilemez. Örneğin, çeşitli işlevlerin ve sözleşmelerin tek bir sanal makinede aynı anda çalışmasına izin verir. Runtime yapısı, herhangi bir ifade ve bayt kodunun yanı sıra işlevleri ve sözleşmeleri çalıştırmak için kullanılır.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type RunTime struct {\n stack []interface{}\n blocks []*blockStack\n vars []interface{}\n extend *map[string]interface{}\n vm *VM\n cost int64\n err error\n}\n")])])]),r("ul",[r("li",[r("strong",[e._v("stack")]),e._v(" - bayt kodunu yürütmek için yığın;")]),e._v(" "),r("li",[r("strong",[e._v("blocks")]),e._v(" - calls yığınını engelle;")]),e._v(" "),r("li",[r("strong",[e._v("vars")]),e._v(" - değişken yığını. Blokta bayt kodu çağrıldığında, değişkeni değişken yığınına eklenecektir. Bloktan çıktıktan sonra, değişken yığınının boyutu önceki değere dönecektir;")]),e._v(" "),r("li",[r("strong",[e._v("extend")]),e._v(" - external değişkenlerin değerleriyle eşlenecek bir işaretçi ("),r("code",[e._v("$name")]),e._v(");")]),e._v(" "),r("li",[r("strong",[e._v("vm")]),e._v(" - bir sanal makine işaretçisi;")]),e._v(" "),r("li",[r("strong",[e._v("cost")]),e._v(" - ortaya çıkan yürütme maliyetinin yakıt birimi;")]),e._v(" "),r("li",[r("strong",[e._v("err")]),e._v(" - yürütme sırasında hata oluştu.")])]),e._v(" "),r("h4",{attrs:{id:"blockstack-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#blockstack-yapısı"}},[e._v("#")]),e._v(" blockStack Yapısı")]),e._v(" "),r("p",[e._v("Runtime yapısında blockStack yapısı kullanılır.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type blockStack struct {\n Block *Block\n Offset int\n}\n")])])]),r("ul",[r("li",[r("strong",[e._v("Block")]),e._v(" - yürütülmekte olan bloğa bir işaretçi;")]),e._v(" "),r("li",[r("strong",[e._v("Offset")]),e._v(" – belirtilen bloğun bayt kodunda yürütülen son komutun ofseti.")])]),e._v(" "),r("h3",{attrs:{id:"runcode-fonksiyonu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#runcode-fonksiyonu"}},[e._v("#")]),e._v(" RunCode Fonksiyonu")]),e._v(" "),r("p",[e._v("Bayt kodları "),r("strong",[e._v("RunCode")]),e._v(" işlevinde yürütülür. Her bayt kodu komutu için karşılık gelen işlemi gerçekleştiren bir döngü içerir. Bir bayt kodunu işlemeden önce, gerekli veriler başlatılmalıdır.")]),e._v(" "),r("p",[e._v("Diğer bloklara yeni bloklar eklenir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("rt.blocks = append(rt.blocks, &blockStack{block, len(rt.vars)})\n")])])]),r("p",[e._v("Ardından, kuyruk fonksiyonunun ilgili parametrelerinin bilgilerini alın. Bu parametreler yığının son elemanında bulunur.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("var namemap map[string][]interface{}\nif block.Type == ObjFunc && block.Info.(*FuncInfo).Names != nil {\n if rt.stack[len(rt.stack)-1] != nil {\n namemap = rt.stack[len(rt.stack)-1].(map[string][]interface{})\n }\n rt.stack = rt.stack[:len(rt.stack)-1]\n}\n")])])]),r("p",[e._v("Ardından, mevcut blokta tanımlanan tüm değişkenler, başlangıç ​​değerleri ile başlatılmalıdır.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("start := len(rt.stack)\nvaroff := len(rt.vars)\nfor vkey, vpar := range block.Vars {\n rt.cost--\n var value interface{}\n")])])]),r("p",[e._v("Fonksiyondaki değişkenler de değişken olduğundan, onları fonksiyonun tanımladığı sıraya göre yığının son elemanından almamız gerekir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" if block.Type == ObjFunc && vkey = len(params.Params)-1 {\n")])])]),r("p",[e._v("Geçirilen değişken parametreler değişken sayıda parametreye aitse, bu parametreler bir dizi değişkende birleştirilir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" off := varoff + params.Offset[len(params.Params)-1]\n rt.vars[off] = append(rt.vars[off].([]interface{}), value)\n } else {\n rt.vars[varoff+params.Offset[i]] = value\n }\n }\n }\n}\n")])])]),r("p",[e._v("Bundan sonra tek yapmamız gereken, yığının tepesinden fonksiyon parametreleri olarak geçen değerleri silmek ve böylece yığını taşımaktır. Değerlerini bir değişken dizisine kopyaladık.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("if block.Type == ObjFunc {\n start -= len(block.Info.(*FuncInfo).Params)\n}\n")])])]),r("p",[e._v("Bir bayt kodu komut döngüsü bittiğinde, yığını doğru şekilde temizlemeliyiz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("last := rt.blocks[len(rt.blocks)-1]\n")])])]),r("p",[e._v("Mevcut bloğu blok yığınından silin.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("rt.blocks = rt.blocks[:len(rt.blocks)-1]\nif status == statusReturn {\n")])])]),r("p",[e._v("Halihazırda yürütülen bir fonksiyondan başarıyla çıkılırsa, dönüş değerini önceki yığının sonuna ekleyeceğiz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" if last.Block.Type == ObjFunc {\n for count := len(last.Block.Info.(*FuncInfo).Results); count > 0; count-- {\n rt.stack[start] = rt.stack[len(rt.stack)-count]\n start++\n }\n status = statusNormal\n } else {\n")])])]),r("p",[e._v("Gördüğünüz gibi, fonksiyonu çalıştırmazsak, yığın durumunu geri yüklemeyeceğiz ve fonksiyondan olduğu gibi çıkmayacağız. Bunun nedeni, fonksiyonda yürütülen döngüler ve koşullu yapıların da bayt kodu blokları olmasıdır.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" return\n\n }\n}\n\nrt.stack = rt.stack[:start]\n")])])]),r("h3",{attrs:{id:"vm-ile-islemler-icin-diger-islevler"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#vm-ile-islemler-icin-diger-islevler"}},[e._v("#")]),e._v(" VM ile işlemler için diğer işlevler")]),e._v(" "),r("p",[r("strong",[e._v("NewVM")]),e._v(" işleviyle sanal bir makine oluşturabilirsiniz. Her sanal makine, "),r("strong",[e._v("Extend")]),e._v(" işlevi aracılığıyla "),r("strong",[e._v("ExecContract")]),e._v(", "),r("strong",[e._v("MemoryUsage")]),e._v(", "),r("strong",[e._v("CallContract")]),e._v(" ve "),r("strong",[e._v("Settings")]),e._v(" gibi dört işlevle eklenecektir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("for key, item := range ext.Objects {\n fobj := reflect.ValueOf(item).Type()\n")])])]),r("p",[e._v("Geçen tüm nesneleri dolaşıyoruz ve sadece işlevlere bakıyoruz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" switch fobj.Kind() {\n case reflect.Func:\n")])])]),r("p",[r("strong",[e._v("ExtFuncInfo")]),e._v(" yapısını fonksiyon hakkında aldığımız bilgilere göre dolduruyoruz ve yapısını üst seviye haritasına "),r("strong",[e._v("Objects")]),e._v(" ismiyle ekliyoruz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" data := ExtFuncInfo{key, make([]reflect.Type, fobj.NumIn()), make([]reflect.Type, fobj.NumOut()),\n make([]string, fobj.NumIn()), fobj.IsVariadic(), item}\n for i := 0; i 0 && ((*lexems)[i-1].Type == isComma || (*lexems)[i-1].Type == lexOper) {\n continue main\n }\n for k := len(buffer) - 1; k >= 0; k-- {\n if buffer[k].Cmd == cmdSys {\n continue main\n }\n}\nbreak main\n\n")])])]),r("p",[e._v("Genel olarak, algoritmanın kendisi, inverse Polish notasyonuna dönüştürmek için bir algoritmaya karşılık gelir. Gerekli sözleşmelerin, işlevlerin ve dizinlerin çağrılmasının yanı sıra ayrıştırma sırasında karşılaşılmayan diğer şeyler ve lexIdent tipi belirteçleri ayrıştırma seçenekleri göz önüne alındığında, bu adla değişkenler, işlevler veya sözleşmeler kontrol edilecektir. Hiçbir şey bulunamazsa ve bu bir işlev veya sözleşme çağrısı değilse, bir hata olduğunu gösterir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("objInfo, tobj := vm.findObj(lexem.Value.(string), block)\nif objInfo == nil && (!vm.Extern || i> *ind || i >= len(*lexems)-2 || (*lexems)[i+1].Type != isLPar) {\n return fmt.Errorf(`unknown identifier %s`, lexem.Value.(string))\n}\n")])])]),r("p",[e._v("Böyle bir durumla karşılaşabiliriz ve sözleşme görüşmesi daha sonra anlatılacaktır. Bu örnekte, aynı isimde herhangi bir fonksiyon veya değişken bulunamazsa, bir sözleşme çağırmanın gerekli olduğunu düşünüyoruz. Bu derlenmiş dilde, sözleşmeler ve işlev çağrıları arasında hiçbir fark yoktur. Ancak sözleşmeyi bytecode'da kullanılan "),r("strong",[e._v("ExecContract")]),e._v(" işlevi aracılığıyla çağırmamız gerekiyor.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("if objInfo.Type == ObjContract {\n if objInfo.Value != nil {\n objContract = objInfo.Value.(*Block)\n }\n objInfo, tobj = vm.findObj(`ExecContract`, block)\n isContract = true\n}\n")])])]),r("p",[e._v("Şimdiye kadarki değişkenlerin sayısını, fonksiyon parametrelerinin sayısı ile birlikte yığına da yazılacak olan "),r("code",[e._v("count")]),e._v(" içine kaydederiz. Parametrelerin sonraki her tespitinde, yığının son elemanında bu sayıyı yalnızca bir birim artırmamız gerekir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("count := 0\nif (*lexems)[i+2].Type != isRPar {\n count++\n}\n")])])]),r("p",[e._v("Kontratlar için kullanılan parametreleri içeren bir listemiz var, sonra kontratın çağrıldığı durumu işaretlememiz gerekiyor. Kontrat parametresiz çağrılırsa, en az iki parametre almak için "),r("strong",[e._v("ExecContract")]),e._v(" çağrısına iki boş parametre eklemeliyiz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v('if isContract {\n name := StateName((*block)[0].Info.(uint32), lexem.Value.(string))\n for j := len(*block) - 1; j >= 0; j-- {\n topblock := (*block)[j]\n if topblock.Type == ObjContract {\n if topblock.Info.(*ContractInfo).Used == nil {\n topblock.Info.(*ContractInfo).Used = make(map[string]bool)\n }\n topblock.Info.(*ContractInfo).Used[name] = true\n }\n }\n bytecode = append(bytecode, &ByteCode{cmdPush, name})\n if count == 0 {\n count = 2\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n }\n count++\n}\n')])])]),r("p",[e._v("Yanında bir braces olduğunu görürsek, indekse göre değeri almak için "),r("strong",[e._v("cmdIndex")]),e._v(" komutunu ekliyoruz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("if (*lexems)[i+1].Type == isLBrack {\n if objInfo == nil || objInfo.Type != ObjVar {\n return fmt.Errorf(`unknown variable %s`, lexem.Value.(string))\n }\n buffer = append(buffer, &ByteCode{cmdIndex, 0})\n}\n")])])]),r("p",[r("strong",[e._v("CompileBlock")]),e._v(" işlevi, nesne ağaçları ve ifadeden bağımsız bayt kodları oluşturabilir. Derleme işlemi, tıpkı bir sözlüksel çözümleyici gibi, ancak aşağıdaki farklılıklarla birlikte, sonlu durumlu bir makineye dayanmaktadır. İlk olarak, semboller değil tokenlar kullanıyoruz; ikinci olarak, tüm durumlar ve geçişlerdeki "),r("em",[e._v("durumlar")]),e._v(" değişkenlerini hemen tanımlayacağız. Belirteç türüne göre dizine alınmış bir dizi nesneyi temsil eder. Her simgenin bir "),r("em",[e._v("compileState")]),e._v(" yapısı vardır ve "),r("em",[e._v("NewState")]),e._v(" içinde yeni bir durum belirtilir. Hangi yapıyı çözdüğümüz açıksa, "),r("em",[e._v("Func")]),e._v(" alanında işleyicinin fonksiyonunu belirtebiliriz.")]),e._v(" "),r("p",[e._v("Örnek olarak ana durumu inceleyelim.")]),e._v(" "),r("p",[e._v("Bir satırsonu veya yorumla karşılaşırsak, aynı durumda kalırız. "),r("strong",[e._v("contract")]),e._v(" anahtar kelimesiyle karşılaşırsak, durumu "),r("em",[e._v("stateContract")]),e._v(" olarak değiştirir ve yapıyı ayrıştırmaya başlarız. "),r("strong",[e._v("func")]),e._v(" anahtar kelimesiyle karşılaşırsak, durumu "),r("em",[e._v("stateFunc")]),e._v(" olarak değiştiririz. Diğer belirteçler alınırsa, fonksiyon üreten hata çağrılır.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("{// stateRoot\n lexNewLine: {stateRoot, 0},\n lexKeyword | (keyContract << 8): {stateContract | statePush, 0},\n lexKeyword | (keyFunc << 8): {stateFunc | statePush, 0},\n lexComment: {stateRoot, 0},\n 0: {errUnknownCmd, cfError},\n},\n")])])]),r("p",[r("strong",[e._v("func")]),e._v(" anahtar sözcüğüyle karşılaştığımızı ve durumu "),r("em",[e._v("stateFunc")]),e._v(" olarak değiştirdiğimizi varsayalım. İşlev adının "),r("strong",[e._v("func")]),e._v(" anahtar sözcüğünü takip etmesi gerektiğinden, işlev adını değiştirirken aynı durumu koruyacağız. Diğer tüm belirteçler için ilgili hataları üreteceğiz. Belirteç tanımlayıcıda işlev adını alırsak, işlevin parametrelerini alabileceğimiz "),r("em",[e._v("stateFParams")]),e._v(" durumuna gideriz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("{// stateFunc\n lexNewLine: {stateFunc, 0},\n lexIdent: {stateFParams, cfNameBlock},\n 0: {errMustName, cfError},\n},\n")])])]),r("p",[e._v("Yukarıdaki işlemlerle aynı zamanda "),r("strong",[e._v("fNameBlock")]),e._v(" fonksiyonunu çağıracağız. Unutulmamalıdır ki Block yapısı, tampondan aldığımız ve ihtiyacımız olan verilerle doldurduğumuz statePush işareti ile oluşturulmaktadır. "),r("strong",[e._v("fNameBlock")]),e._v(" işlevi, sözleşmeler ve işlevler için uygundur (iç içe geçmiş olanlar dahil). "),r("em",[e._v("Bilgi")]),e._v(" alanını ilgili yapı ile doldurur ve kendisini üst bloğun "),r("em",[e._v("Nesnelerine")]),e._v(" yazar. Bu şekilde belirtilen isim ile fonksiyonu veya sözleşmeyi çağırabiliriz. Benzer şekilde, tüm durumlar ve değişkenler için karşılık gelen fonksiyonlar yaratırız. Bu işlevler genellikle çok küçüktür ve sanal makine ağacını oluştururken bazı görevleri yerine getirir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("func fNameBlock(buf *[]*Block, state int, lexem *Lexem) error {\n var itype int\n prev := (*buf)[len(*buf)-2]\n fblock := (*buf)[len(*buf)-1]\n name := lexem.Value.(string)\n switch state {\n case stateBlock:\n itype = ObjContract\n name = StateName((*buf)[0].Info.(uint32), name)\n fblock.Info = &ContractInfo{ID: uint32(len(prev.Children) - 1), Name: name,\n Owner: (*buf)[0].Owner}\n default:\n itype = ObjFunc\n fblock.Info = &FuncInfo{}\n }\n fblock.Type = itype\n prev.Objects[name] = &ObjInfo{Type: itype, Value: fblock}\n return nil\n}\n")])])]),r("p",[r("strong",[e._v("CompileBlock")]),e._v(" işlevi için, tüm belirteçler arasında geçiş yapar ve durumlarda açıklanan belirteçlere göre durumları değiştirir. Hemen hemen tüm ek belirteçler, ek program kodlarına karşılık gelir.")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("statePush")]),e._v(" – "),r("strong",[e._v("Blok")]),e._v(" nesnesini nesne ağacına ekler;")]),e._v(" "),r("li",[r("strong",[e._v("statePop")]),e._v(" - blok bir kapatma braces ile sona erdiğinde kullanılır;")]),e._v(" "),r("li",[r("strong",[e._v("stateStay")]),e._v(" - yeni bir duruma geçerken mevcut işareti korumanız gerekir;")]),e._v(" "),r("li",[r("strong",[e._v("stateToBlock")]),e._v(" - "),r("em",[e._v("while")]),e._v(" ve "),r("em",[e._v("if")]),e._v(" işlemek için "),r("strong",[e._v("stateBlock")]),e._v(" durumuna geçiş. İfadeleri işledikten sonra, parantez içindeki blokları işlemeniz gerekir;")]),e._v(" "),r("li",[r("strong",[e._v("stateToBody")]),e._v(" - "),r("strong",[e._v("stateBody")]),e._v(" durumuna geçiş;")]),e._v(" "),r("li",[r("strong",[e._v("stateFork")]),e._v(" - işaretli konumu kaydedin. İfade bir tanımlayıcı veya "),r("code",[e._v("$")]),e._v(" ile bir isim ile başladığında, fonksiyon çağrıları veya atamalar yapabiliriz;")]),e._v(" "),r("li",[r("strong",[e._v("stateToFork")]),e._v(" – işlem işlevine iletilecek olan "),r("strong",[e._v("stateFork")]),e._v(" içinde saklanan belirteci almak için kullanılır;")]),e._v(" "),r("li",[r("strong",[e._v("stateLabel")]),e._v(" – "),r("strong",[e._v("cmdLabel")]),e._v(" komutlarını eklemek için kullanılır. "),r("em",[e._v("while")]),e._v(" yapısı bu bayrağı gerektirir;")]),e._v(" "),r("li",[r("strong",[e._v("stateMustEval")]),e._v(" – "),r("em",[e._v("if")]),e._v(" ve "),r("em",[e._v("while")]),e._v(" yapılarının başında koşullu ifadelerin kullanılabilirliğini kontrol edin.")])]),e._v(" "),r("p",[r("strong",[e._v("CompileBlock")]),e._v(" işlevine ek olarak, "),r("strong",[e._v("FlushBlock")]),e._v(" işlevinden de bahsedilmelidir. Ancak sorun, blok ağacının mevcut sanal makinelerden bağımsız olarak oluşturulmasıdır. Daha doğrusu sanal bir makinede var olan işlevler ve sözleşmeler hakkında bilgi alıyoruz ancak derlenen blokları ayrı bir ağaçta topluyoruz. Aksi halde derleme sırasında bir hata oluşursa sanal makineyi bir önceki duruma döndürmemiz gerekir. Bu nedenle derleme ağacına ayrı ayrı gidiyoruz fakat derleme başarılı olduktan sonra "),r("strong",[e._v("FlushContract")]),e._v(" fonksiyonu çağrılmalıdır. Bu işlev, tamamlanmış blok ağacını mevcut sanal makineye ekler. Derleme aşaması artık tamamlanmıştır.")]),e._v(" "),r("h2",{attrs:{id:"lexical-analizor"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#lexical-analizor"}},[e._v("#")]),e._v(" Lexical analizör")]),e._v(" "),r("p",[e._v("Sözcüksel çözümleyici, gelen dizeleri işler ve aşağıdaki türlerde bir dizi belirteç oluşturur:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("lexSys")]),e._v(" - system token, örnek: "),r("code",[e._v("{}, [], (), ,, .")]),e._v(" etc;")]),e._v(" "),r("li",[r("strong",[e._v("lexOper")]),e._v(" - operation token, örnek: "),r("code",[e._v("+, -, /, \\, *")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("lexNumber")]),e._v(" - number;")]),e._v(" "),r("li",[r("strong",[e._v("lexident")]),e._v(" - identifier;")]),e._v(" "),r("li",[r("strong",[e._v("lexNewline")]),e._v(" - newline character;")]),e._v(" "),r("li",[r("strong",[e._v("lexString")]),e._v(" - string;")]),e._v(" "),r("li",[r("strong",[e._v("lexComment")]),e._v(" - comment;")]),e._v(" "),r("li",[r("strong",[e._v("lexKeyword")]),e._v(" - keyword;")]),e._v(" "),r("li",[r("strong",[e._v("lexType")]),e._v(" - type;")]),e._v(" "),r("li",[r("strong",[e._v("lexExtend")]),e._v(" - harici değişkenlere veya fonksiyonlara referans, örneğin: "),r("code",[e._v("$myname")]),e._v(".")])]),e._v(" "),r("p",[e._v("Mevcut sürümde, lex_table.go dosyasına yazılan belirteçleri ayrıştırmak için başlangıçta "),r("a",{attrs:{href:"#lextablelextablego"}},[e._v("script/lextable/lextable.go")]),e._v(" dosyası yardımıyla bir dönüşüm tablosu (sonlu durum makinesi) oluşturulur. Genel olarak, dosya tarafından başlangıçta oluşturulan dönüştürme tablosundan kurtulabilir ve başlangıçta hemen bellekte ("),r("code",[e._v("init()")]),e._v(") bir dönüştürme tablosu oluşturabilirsiniz. Sözcük analizinin kendisi "),r("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")]),e._v(" dosyasındaki lexParser işlevinde gerçekleşir.")]),e._v(" "),r("h3",{attrs:{id:"lextable-lextable-go"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#lextable-lextable-go"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),r("p",[e._v("Burada çalışacak alfabeyi tanımlıyoruz ve sonlu durum makinesinin bir sonraki alınan sembole göre bir durumdan diğerine nasıl değiştiğini açıklıyoruz.")]),e._v(" "),r("p",[r("em",[e._v("durumlar")]),e._v(", bir durum listesi içeren bir JSON nesnesidir.")]),e._v(" "),r("p",[e._v("Belirli semboller dışında, "),r("code",[e._v("d")]),e._v(", durumda belirtilmeyen tüm sembolleri ifade eder.\n"),r("code",[e._v("n")]),e._v(" 0x0a, "),r("code",[e._v("s")]),e._v(" boşluk, "),r("code",[e._v("q")]),e._v(" ters alıntı, "),r("code",[e._v("Q")]),e._v(" çift tırnak, "),r("code",[e._v("r")]),e._v(" >= 128, "),r("code",[e._v("a")]),e._v(" AZ ve az ve "),r("code",[e._v("1")]),e._v(" 1-9 anlamına gelir.")]),e._v(" "),r("p",[e._v("Bu durumların adı anahtarlardır ve olası değerler değer nesnesinde listelenir. Daha sonra her grup için geçiş yapılacak yeni bir durum vardır. Sonra jetonun adı var. İlk duruma geri dönmemiz gerekirse, üçüncü parametre, mevcut sembolün nasıl ele alınacağını gösteren hizmet simgesidir.")]),e._v(" "),r("p",[e._v("Örneğin, ana durumumuz ve gelen karakterler "),r("code",[e._v("/")]),e._v(", "),r("code",[e._v('"/": ["solidus", "", "push next"]')]),e._v(",")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("push")]),e._v(" - gayrı bir yığında olduğunu hatırlama komutunu verir;")]),e._v(" "),r("li",[r("strong",[e._v("next")]),e._v(" - sonraki karaktere gider ve aynı zamanda durumu "),r("strong",[e._v("solidus")]),e._v(" olarak değiştiririz. Bundan sonra, bir sonraki karakteri alır ve "),r("strong",[e._v("solidus")]),e._v("'un durumunu kontrol edin.")])]),e._v(" "),r("p",[e._v("Sonraki karakterde "),r("code",[e._v("/")]),e._v(" veya "),r("code",[e._v("/*")]),e._v(" varsa, o zaman "),r("code",[e._v("//")]),e._v(" veya "),r("code",[e._v("/*")]),e._v(" ile başladıkları için yorum "),r("strong",[e._v("yorum")]),e._v(" durumuna gideriz. Açıkçası, her yorumun daha sonra farklı bir durumu vardır, çünkü farklı bir sembolle biterler.")]),e._v(" "),r("p",[e._v("Sonraki karakter "),r("code",[e._v("/")]),e._v(" ve "),r("code",[e._v("*")]),e._v(" değilse, yığındaki her şeyi "),r("strong",[e._v("lexOper")]),e._v(" tipi etiketler olarak kaydeder, yığını temizler ve ana duruma döneriz.")]),e._v(" "),r("p",[e._v("Aşağıdaki modül, durum ağacını sayısal bir diziye dönüştürür ve onu "),r("em",[e._v("lex_table.go")]),e._v(" dosyasına yazar.")]),e._v(" "),r("p",[e._v("İlk döngüde:")]),e._v(" "),r("p",[e._v("Geçerli sembollerden oluşan bir alfabe oluşturuyoruz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("for ind, ch := range alphabet {\n i := byte(ind)\n")])])]),r("p",[e._v("Ek olarak, "),r("strong",[e._v("state2int")]),e._v(" içinde her duruma kendi dizi tanımlayıcısını sağlarız.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" state2int := map[string]uint{`main`: 0}\n if err := json.Unmarshal([]byte(states), &data); err == nil {\n for key := range data {\n if key != `main` {\n state2int[key] = uint(len(state2int))\n")])])]),r("p",[e._v("Tüm durumları ve bir durumdaki her bir kümeyi ve bir kümedeki her bir sembolü geçtiğimizde, üç baytlık bir sayı yazarız [new state identifier (0 = main)] + [token type ( 0-no token)] + [token]. .\n"),r("em",[e._v("table")]),e._v(" dizisinin iki boyutluluğu, durumlara ve aynı sırada düzenlenmiş "),r("em",[e._v("alfabe")]),e._v(" dizisinden 34 giriş sembolüne bölünmüş olmasıdır.\n"),r("em",[e._v("Tablonun")]),e._v(" sıfır satırında "),r("em",[e._v("main")]),e._v(" durumundayız. İlk karakteri alın, "),r("em",[e._v("alphabet")]),e._v(" dizisinde dizinini bulun ve verilen dizine sahip sütundan değeri alın. Alınan değerden başlayarak jetonu düşük bayt olarak alıyoruz. Ayrıştırma tamamlandıysa, ikinci bayt, alınan belirtecin türünü gösterir. Üçüncü baytta, bir sonraki yeni durumun indeksini alırız.\nBunların tümü "),r("em",[e._v("lex.go")]),e._v(" içindeki "),r("strong",[e._v("lexParser")]),e._v(" işlevinde daha ayrıntılı olarak açıklanmıştır.\nBazı yeni karakterler eklemek istiyorsanız, bunları "),r("em",[e._v("alphabet")]),e._v(" dizisine eklemeniz ve "),r("em",[e._v("AlphaSize")]),e._v(" sabitinin miktarını artırmanız gerekir. Yeni bir sembol kombinasyonu eklemek isterseniz, mevcut seçeneklere benzer şekilde durum içinde açıklanmalıdır. Yukarıdaki işlemden sonra "),r("em",[e._v("lex_table.go")]),e._v(" dosyasını güncellemek için "),r("em",[e._v("lextable.go")]),e._v(" dosyasını çalıştırın.")]),e._v(" "),r("h3",{attrs:{id:"lex-go"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#lex-go"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"lex-go"}},[e._v("lex.go")])]),e._v(" "),r("p",[r("strong",[e._v("lexParser")]),e._v(" işlevi doğrudan sözcüksel analiz oluşturur ve gelen dizelere dayalı olarak bir dizi alınan etiket döndürür. Tokenların yapısını analiz edelim.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type Lexem struct {\n Type uint32 // Type of the lexem\n Value interface{} // Value of lexem\n Line uint32 // Line of the lexem\n Column uint32 // Position inside the line\n}\n")])])]),r("ul",[r("li",[r("strong",[e._v("Type")]),e._v(" - belirteç türü. Aşağıdaki değerlerden birine sahiptir: "),r("code",[e._v("lexSys, lexOper, lexNumber, lexIdent, lexString, lexComment, lexKeyword, lexType, lexExtend")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Value")]),e._v(" – token değeri. Değerin türü, belirteç türüne bağlıdır, daha ayrıntılı olarak analiz edelim:\n"),r("ul",[r("li",[r("strong",[e._v("lexSys")]),e._v(" - parantez, virgül vb. içerir. Bu durumda, "),r("code",[e._v("Type = ch << 8 | lexSys")]),e._v(", lütfen "),r("code",[e._v("isLPar ... isRBrack")]),e._v(" sabitine bakın ve değeri uint32 bittir;")]),e._v(" "),r("li",[r("strong",[e._v("lexOper")]),e._v(" - değer, uint32 biçimindeki eşdeğer bir karakter dizisini temsil eder. 'isNot ... isOr' sabitlerine bakın;")]),e._v(" "),r("li",[r("strong",[e._v("lexNumber")]),e._v(" - sayılar int64 veya float64 olarak saklanır. Sayının ondalık noktası varsa, float64'tür;")]),e._v(" "),r("li",[r("strong",[e._v("lexIdent")]),e._v(" - tanımlayıcılar dize olarak saklanır;")]),e._v(" "),r("li",[r("strong",[e._v("lexNewLine")]),e._v(" - yeni satır karakteri. Ayrıca satır ve token konumunu hesaplamak için kullanılır;")]),e._v(" "),r("li",[r("strong",[e._v("lexString")]),e._v(" - satırlar dize olarak saklanır;")]),e._v(" "),r("li",[r("strong",[e._v("lexComment")]),e._v(" - yorumlar dize olarak saklanır;")]),e._v(" "),r("li",[r("strong",[e._v("lexKeyword")]),e._v(" - anahtar sözcükler için yalnızca ilgili dizinler saklanır, bkz. "),r("code",[e._v("keyContract ... keyTail' sabiti. Bu durumda")]),e._v('Tür = AnahtarKimliği << 8 | lexKeyword`. Ayrıca, "true, false, nil" anahtar sözcüklerinin hemen lexNumber tipi belirteçlere dönüştürüleceği ve ilgili "bool" ve "interface {}" türlerinin kullanılacağına dikkat edilmelidir;')]),e._v(" "),r("li",[r("strong",[e._v("lexType")]),e._v(' – bu değer, karşılık gelen "reflect.Type" tipi değerini içerir;')]),e._v(" "),r("li",[r("strong",[e._v("lexExtend")]),e._v(" – "),r("code",[e._v("$")]),e._v(" ile başlayan tanımlayıcılar. Bu değişkenler ve işlevler dışarıdan iletilir ve bu nedenle özel türdeki belirteçlere atanır. Bu değer, adı başında $ olmadan bir dize olarak içerir.")])])]),e._v(" "),r("li",[r("strong",[e._v("Line")]),e._v(" - tokenın bulunduğu satır;")]),e._v(" "),r("li",[r("strong",[e._v("Column")]),e._v(" - tokenın satır içi konumu.")])]),e._v(" "),r("p",[r("strong",[e._v("lexParser")]),e._v(" işlevini ayrıntılı olarak analiz edelim. "),r("strong",[e._v("todo")]),e._v(" işlevi, mevcut duruma ve gelen sembole göre alfabedeki sembol dizinini arar ve dönüşüm tablosundan yeni bir durum, belirteç tanımlayıcısı (varsa) ve diğer belirteçleri alır. Ayrıştırmanın kendisi, her bir sonraki karakter için sırayla "),r("strong",[e._v("todo")]),e._v(" işlevini çağırmayı ve yeni bir duruma geçmeyi içerir. Etiket alındıktan sonra çıktı kriterlerinde karşılık gelen jetonu oluşturup ayrıştırma işlemine devam ediyoruz. Ayrıştırma işlemi sırasında belirteç sembollerini ayrı bir yığın veya dizide biriktirmediğimize dikkat edilmelidir, çünkü yalnızca belirtecin başlangıcının ofsetini kaydederiz. Belirteci aldıktan sonra, bir sonraki belirtecin ofsetini mevcut ayrıştırma konumuna taşırız.")]),e._v(" "),r("p",[e._v("Geriye kalan tek şey, ayrıştırmada kullanılan sözcüksel durum belirteçlerini kontrol etmektir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("lexfPush")]),e._v(" - bu simge, yeni bir simgede simgeler biriktirmeye başladığımız anlamına gelir;")]),e._v(" "),r("li",[r("strong",[e._v("lexfNext")]),e._v(" - karakter, geçerli simgeye eklenmelidir;")]),e._v(" "),r("li",[r("strong",[e._v("lexfPop")]),e._v(" - tokenın alınması tamamlandı. Genellikle, bu bayrakla, ayrıştırılmış belirtecin tanımlayıcı türüne sahibiz;")]),e._v(" "),r("li",[r("strong",[e._v("lexfSkip")]),e._v(' - bu token, karakterleri ayrıştırmanın dışında tutmak için kullanılır. Örneğin, dizgedeki kontrol eğik çizgileri \\n \\r " şeklindedir. Sözcüksel analiz aşamasında bunlar otomatik olarak değiştirilecektir..')])]),e._v(" "),r("h2",{attrs:{id:"needle-dili"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#needle-dili"}},[e._v("#")]),e._v(" Needle dili")]),e._v(" "),r("h3",{attrs:{id:"lexemes"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#lexemes"}},[e._v("#")]),e._v(" Lexemes")]),e._v(" "),r("p",[e._v("Bir programın kaynak kodu UTF-8 kodlamasında olmalıdır.")]),e._v(" "),r("p",[e._v("Aşağıdaki sözcük türleri işlenir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Keywords")]),e._v(" - "),r("code",[e._v("action, break, conditions, continue, contract, data, else, error, false, func, If, info, nil, return, settings, true, var, warning, while")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Number")]),e._v(" - sadece ondalık sayılar kabul edilir. İki temel tür vardır: "),r("strong",[e._v("int")]),e._v(" ve "),r("strong",[e._v("float")]),e._v(". Sayının ondalık noktası varsa, kayan nokta ** kayan nokta** olur. "),r("strong",[e._v("int")]),e._v(" türü, golang'da "),r("strong",[e._v("int64")]),e._v(" ile eşdeğerdir, "),r("strong",[e._v("float")]),e._v(" türü ise golang'da "),r("strong",[e._v("float64")]),e._v(" ile eşdeğerdir.")]),e._v(" "),r("li",[r("strong",[e._v("String")]),e._v(" - dize "),r("code",[e._v('("a dize")')]),e._v(" çift tırnak içine alınabilir veya "),r("code",[e._v("(\\`a dize\\`)")]),e._v(" ters tırnak içine alınabilir. Her iki dize türü de yeni satır karakterleri içerebilir. Çift tırnak içindeki dizeler, çift tırnak, yeni satır karakterleri ve eğik çizgilerle kaçan satır başları içerebilir. Örneğin, "),r("code",[e._v('"Bu bir \\"ilk dizedir\\".\\r\\nBu ikinci bir dizedir."')]),e._v(".")]),e._v(" "),r("li",[r("strong",[e._v("Comment")]),e._v(" - iki tür yorum vardır. Tek satırlı yorumlar iki eğik çizgi (//) kullanır. Örneğin, // Bu tek satırlık bir yorumdur. Çok satırlı yorumlar eğik çizgi ve yıldız sembollerini kullanır ve birden çok satıra yayılabilir. Örneğin, "),r("code",[e._v("/* Bu çok satırlı bir yorumdur */")]),e._v(".")]),e._v(" "),r("li",[r("strong",[e._v("Identifier")]),e._v(" - a-z ve A-Z harfleri, UTF-8 sembolleri, sayılar ve alt çizgilerden oluşan değişkenlerin ve fonksiyonların adları. Ad bir harf, alt çizgi, "),r("code",[e._v("@")]),e._v(" veya "),r("code",[e._v("$")]),e._v(" ile başlayabilir. "),r("code",[e._v("$")]),e._v(" ile başlayan ad, "),r("strong",[e._v("data")]),e._v(" tanımlanan değişkenin adıdır. "),r("code",[e._v("$")]),e._v(" ile başlayan ad, "),r("strong",[e._v("conditons")]),e._v(" ve "),r("strong",[e._v("actions")]),e._v(" kapsamındaki global değişkenleri tanımlamak için de kullanılabilir. Ekosistem sözleşmeleri "),r("code",[e._v("@")]),e._v(" sembolü kullanılarak çağrılabilir. Örneğin: "),r("code",[e._v("@1NewTable(...)")]),e._v(".")])]),e._v(" "),r("h3",{attrs:{id:"turler"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#turler"}},[e._v("#")]),e._v(" Türler")]),e._v(" "),r("p",[e._v("Karşılık gelen golang türleri, Needle türlerinin yanında belirtilir.")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("bool")]),e._v(" - bool, "),r("strong",[e._v("false")]),e._v(" by default;")]),e._v(" "),r("li",[r("strong",[e._v("bytes")]),e._v(" - []byte{}, an empty byte array by default;")]),e._v(" "),r("li",[r("strong",[e._v("int")]),e._v(" - int64, "),r("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),r("li",[r("strong",[e._v("address")]),e._v(" - uint64, "),r("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),r("li",[r("strong",[e._v("array")]),e._v(" - []interface{}, an empty array by default;")]),e._v(" "),r("li",[r("strong",[e._v("map")]),e._v(" - map[string]interface{}, an empty object array by default;")]),e._v(" "),r("li",[r("strong",[e._v("money")]),e._v(" - decimal. Decimal, "),r("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),r("li",[r("strong",[e._v("float")]),e._v(" - float64, "),r("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),r("li",[r("strong",[e._v("string")]),e._v(" - string,;")]),e._v(" "),r("li",[r("strong",[e._v("file")]),e._v(" - map[string]interface{}, varsayılan olarak boş bir nesne dizisi.")])]),e._v(" "),r("p",[e._v("Bu tür değişkenler "),r("code",[e._v("var")]),e._v(" anahtar kelimesi ile tanımlanır. Örneğin, "),r("code",[e._v("var var1, var2 int")]),e._v(". Bu şekilde tanımlandığında, türe göre varsayılan bir değere sahip bir değişken atanacaktır.")]),e._v(" "),r("p",[e._v("Tüm değişken değerleri interface{} türündedir ve ardından gerekli golang türlerine atanır. Bu nedenle, örneğin dizi ve harita türleri, []interface{} ve map[array]interface{} golang türleridir. Her iki dizi türü de herhangi bir türden öğe içerebilir.")]),e._v(" "),r("h3",{attrs:{id:"expressions"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#expressions"}},[e._v("#")]),e._v(" Expressions")]),e._v(" "),r("p",[e._v("Bir ifade aritmetik işlemleri, mantıksal işlemleri ve işlev çağrılarını içerebilir. Tüm ifadeler, operatörlerin önceliğine göre soldan sağa doğru değerlendirilir. Eşit önceliğe sahipse, operatörler soldan sağa doğru değerlendirilir.")]),e._v(" "),r("p",[e._v("Yüksekten düşüğe operasyonların önceliği:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Function call and parentheses")]),e._v(" - bir fonksiyon çağrıldığında, geçirilen parametreler soldan sağa doğru hesaplanır;")]),e._v(" "),r("li",[r("strong",[e._v("Unary Operation")]),e._v(" - logical negation "),r("code",[e._v("!")]),e._v(" and arithmetic sign change "),r("code",[e._v("-")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Multiplication and Division")]),e._v(" - arithmetic multiplication "),r("code",[e._v("*")]),e._v(" and division "),r("code",[e._v("/")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Addition and Subtraction")]),e._v(" - arithmetic addition "),r("code",[e._v("+")]),e._v(" and subtraction "),r("code",[e._v("-")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Logical comparison")]),e._v(" - "),r("code",[e._v(">=>> >=")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Logical equality and inequality")]),e._v(" - "),r("code",[e._v("== !=")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Logical AND")]),e._v(" - "),r("code",[e._v("&&")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Logical OR")]),e._v(" - "),r("code",[e._v("||")]),e._v(".")])]),e._v(" "),r("p",[e._v("Mantıksal AND ve OR değerlendirilirken, her durumda ifadenin her iki tarafı da değerlendirilir.")]),e._v(" "),r("p",[e._v("Derleme sırasında iğnenin tip kontrolü yoktur. İşlenenleri değerlendirirken, türü daha karmaşık bir türe dönüştürmeye çalışılır. Karmaşıklık sırasının türü şu şekilde olabilir: "),r("code",[e._v("string, int, float, money")]),e._v(". Tür dönüşümlerinin yalnızca bir kısmı uygulanır. Dize türü, ekleme işlemlerini destekler ve sonuç, dize birleştirme olacaktır. Örneğin, "),r("code",[e._v("string + string = string, money-int = para, int * float = float")]),e._v(".")]),e._v(" "),r("p",[e._v("İşlevler için, yürütme sırasında "),r("code",[e._v("string")]),e._v(" ve "),r("code",[e._v("int")]),e._v(" türlerinde tip kontrolü yapılır.")]),e._v(" "),r("p",[r("strong",[e._v("array")]),e._v(" ve "),r("strong",[e._v("map")]),e._v(" türleri dizine göre ele alınabilir. "),r("strong",[e._v("array")]),e._v(" türü için "),r("strong",[e._v("int")]),e._v(" değeri dizin olarak belirtilmelidir. "),r("strong",[e._v("harita")]),e._v(" türü için bir değişken veya "),r("strong",[e._v("dize")]),e._v(" değeri belirtilmelidir. Dizini mevcut maksimum dizinden büyük olan bir "),r("strong",[e._v("array")]),e._v(" öğesine bir değer atarsanız, diziye boş bir öğe eklenir. Bu öğelerin başlangıç ​​değeri "),r("strong",[e._v("nil")]),e._v("'dir. Örneğin: .. code:")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v('var my array\nmy[5] = 0\nvar mymap map\nmymap["index"] = my[3]\n')])])]),r("p",[e._v("Koşullu mantıksal değerlerin ifadelerinde ("),r("code",[e._v("if, while, &&, ||, !")]),e._v(" gibi), tür otomatik olarak mantıksal bir değere dönüştürülür. Tür varsayılan değer değilse, doğrudur.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("var mymap map\nvar val string\nif mymap && val {\n...\n}\n")])])]),r("h3",{attrs:{id:"scope"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#scope"}},[e._v("#")]),e._v(" Scope")]),e._v(" "),r("p",[e._v("Parantezler, yerel kapsam değişkenlerini içerebilen bir blok belirtir. Varsayılan olarak, bir değişkenin kapsamı kendi bloklarına ve tüm iç içe bloklara uzanır. Bir blokta, mevcut bir değişkenin adını kullanarak yeni bir değişken tanımlayabilirsiniz. Ancak bu durumda aynı ada sahip harici değişkenler kullanılamaz hale gelir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("var a int\na = 3\n{\n var a int\n a = 4\n Println(a) // 4\n}\nPrintln(a) // 3\n")])])]),r("h3",{attrs:{id:"kontrat-yurutme"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#kontrat-yurutme"}},[e._v("#")]),e._v(" Kontrat Yürütme")]),e._v(" "),r("p",[e._v("Bir kontratı çağırırken, "),r("strong",[e._v("data")]),e._v(" içinde tanımlanan parametreler ona iletilmelidir. Bir kontratı yürütmeden önce sanal makine bu parametreleri alır ve bunları karşılık gelen değişkenlere ($Param) atar. Ardından, önceden tanımlanmış "),r("strong",[e._v("conditons")]),e._v(" işlevi ve "),r("strong",[e._v("action")]),e._v(" işlevi çağrılır.")]),e._v(" "),r("p",[e._v("Kontratın yürütülmesi sırasında meydana gelen hatalar iki türe ayrılabilir: form hataları ve ortam hataları. Form hataları özel komutlar kullanılarak oluşturulur: "),r("code",[e._v("error, Warning, info")]),e._v(" ve yerleşik işlev "),r("code",[e._v("err")]),e._v(" döndürdüğünde "),r("em",[e._v("nil")]),e._v(" değerine eşit değildir.")]),e._v(" "),r("p",[e._v("Needle dili istisnaları işlemez. Herhangi bir hata, sözleşmelerin yürütülmesini sonlandıracaktır. Bir sözleşme yürütüldüğünde değişken değerleri kaydetmek için ayrı bir yığın ve yapı oluşturulduğundan, bir sözleşme yürütüldüğünde golang garbage collection tarafından bu verileri otomatik olarak siler.")]),e._v(" "),r("h3",{attrs:{id:"backus-naur-formu-bnf"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#backus-naur-formu-bnf"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"backus-naur-form-bnf"}},[e._v("Backus–Naur Formu (BNF)")])]),e._v(" "),r("p",[e._v("Bilgisayar biliminde BNF, bağlamdan bağımsız sözdizimi için bir gösterim tekniğidir ve genellikle hesaplamada kullanılan dilin sözdizimini tanımlamak için kullanılır.")]),e._v(" "),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" {}\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("''''''\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("['-'] ]\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("['-'] | \n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("' | '\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'A' |'B' | ... |'Z' |'a' |'b' | ... |'z' | 0x80 | 0x81 | ... | 0xFF\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'0x20'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'0x09'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'0x0D 0x0A'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'!' |'\"' |'$' |''' |'(' |')' |'\\*' |'+' |',' |'-' |'.' |'/ '|'<' |'=' |'>' |'[' |'\\\\' |']' |'_' |'|' |'}' | '{' | | | \n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" | | \n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("( |'_') { |'_' | }\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" | |'!' |'#' | ... |'[' |']' | ...\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("{ |'\\\"' |'\\n' |'\\r'}\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'\"' {}'\"' |'\\`' {}'\\`'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'='\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'-'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'==' |'!=' |'>' |'<' |'<=' |'>=' |'&&' |'||' |'\\*' |'/' |'+ '|'-'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" | | \n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" {','}\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'(' []')'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" [{'.' '(' []')'}]\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" {}\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'{''}'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("( | | | | | break | continue | return)\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'if [else ]'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'while '\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'contract '{'[] {} [] []'}''\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'data '{' {} '}''\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" '\"'{}'\"'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'optional | image | file | hidden | text | polymap | map | address | signature:'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'conditions '\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'action '\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'func '('[{','}]')'[{}] [] '\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" {',' } \n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'.''('[{','}]')'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'var {','}'\n")])])])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{509:function(e,a,r){"use strict";r.r(a);var n=r(51),i=Object(n.a)({},(function(){var e=this,a=e.$createElement,r=e._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"compiler-and-virtual-machine"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#compiler-and-virtual-machine"}},[e._v("#")]),e._v(" Compiler and Virtual Machine")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#Kaynak-kodu-depolama-ve-derleme"}},[e._v("Kaynak kodu depolama ve derleme")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#Sanal-makine-yap%C4%B1lar%C4%B1"}},[e._v("Sanal makine yapıları")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#VM-Yap%C4%B1lar%C4%B1"}},[e._v("VM Yapıları")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#Blok-Yap%C4%B1lar%C4%B1"}},[e._v("Blok Yapıları")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#ObjInfo-Yap%C4%B1s%C4%B1"}},[e._v("ObjInfo Yapısı")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#ContractInfo-Yap%C4%B1s%C4%B1"}},[e._v("ContractInfo Yapısı")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#FieldInfo-Yap%C4%B1s%C4%B1"}},[e._v("FieldInfo Yapısı")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#FuncInfo-Yap%C4%B1s%C4%B1"}},[e._v("FuncInfo Yapısı")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#FuncName-Yap%C4%B1s%C4%B1"}},[e._v("FuncName Yapısı")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#ExtFuncInfo-Yap%C4%B1s%C4%B1"}},[e._v("ExtFuncInfo Yapısı")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#VarInfo-Yap%C4%B1s%C4%B1"}},[e._v("VarInfo Yapısı")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#ObjExtend-De%C4%9Fer"}},[e._v("ObjExtend Değer")])])])])])]),e._v(" "),r("li",[r("a",{attrs:{href:"#Sanal-makine-komutlar%C4%B1"}},[e._v("Sanal makine komutları")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#ByteCode-Yap%C4%B1s%C4%B1"}},[e._v("ByteCode Yapısı")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#command-identifiers"}},[e._v("Command identifiers")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#Y%C4%B1%C4%9F%C4%B1n-i%C5%9Flem-komutlar%C4%B1"}},[e._v("Yığın işlem komutları")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#Runtime-Yap%C4%B1s%C4%B1"}},[e._v("Runtime Yapısı")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#blockStack-Yap%C4%B1s%C4%B1"}},[e._v("blockStack Yapısı")])])])]),e._v(" "),r("li",[r("a",{attrs:{href:"#RunCode-Fonksiyonu"}},[e._v("RunCode Fonksiyonu")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#VM-ile-i%C5%9Flemler-i%C3%A7in-di%C4%9Fer-i%C5%9Flevler"}},[e._v("VM ile işlemler için diğer işlevler")])])])]),e._v(" "),r("li",[r("a",{attrs:{href:"#compiler"}},[e._v("Compiler")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#Lexical-analiz%C3%B6r"}},[e._v("Lexical analizör")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")])])])]),e._v(" "),r("li",[r("a",{attrs:{href:"#needle-dili"}},[e._v("Needle dili")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#lexemes"}},[e._v("Lexemes")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#Types"}},[e._v("Türler")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#expressions"}},[e._v("Expressions")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#scope"}},[e._v("Scope")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#Kontrat-Y%C3%BCr%C3%BCtme"}},[e._v("Kontrat yürütme")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#Backus%E2%80%93Naur-Formu-(BNF)"}},[e._v("Backus–Naur Formu (BNF)")])])])])]),e._v(" "),r("p",[e._v("Bu bölüm, Sanal Makinede (VM) program derleme ve Needle dili işlemlerini içerir.")]),e._v(" "),r("h2",{attrs:{id:"kaynak-kodu-depolama-ve-derleme"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#kaynak-kodu-depolama-ve-derleme"}},[e._v("#")]),e._v(" Kaynak kodu depolama ve derleme")]),e._v(" "),r("p",[e._v("Sözleşmeler ve fonksiyonlar Golang ile yazılır ve ekosistemlerin sözleşme tablolarında saklanır.")]),e._v(" "),r("p",[e._v("Bir sözleşme yürütüldüğünde, kaynak kodu veritabanından okunacak ve bayt koduna derlenecektir.")]),e._v(" "),r("p",[e._v("Bir sözleşme değiştirildiğinde, kaynak kodu güncellenecek ve veritabanına kaydedilecektir. Daha sonra kaynak kod derlenir, böylece ilgili sanal makinedeki bayt kodu güncellenir.")]),e._v(" "),r("p",[e._v("Bayt kodları fiziksel olarak kaydedilmediği için program tekrar çalıştırıldığında yeniden derlenecektir.")]),e._v(" "),r("p",[e._v("Her ekosistemin sözleşme tablosunda açıklanan kaynak kodunun tamamı katı bir sırayla sanal bir makinede derlenir ve sanal makinenin durumu tüm düğümlerde aynıdır.")]),e._v(" "),r("p",[e._v("Sözleşme çağrıldığında, sanal makine durumunu hiçbir şekilde değiştirmeyecektir. Herhangi bir sözleşmenin yürütülmesi veya herhangi bir işlevin çağrılması, her harici çağrı sırasında oluşturulan ayrı bir çalışan yığında gerçekleşir.")]),e._v(" "),r("p",[e._v("Her ekosistem, blok zinciri veya diğer sanal ekosistemler üzerinde doğrudan etki olmaksızın blok zinciri dışındaki tablolarla birlikte bir düğüm içinde kullanılabilen sanal bir ekosisteme sahip olabilir. Bu durumda böyle bir sanal ekosistemi barındıran düğüm, sözleşmesini derleyecek ve kendi sanal makinesini oluşturacaktır.")]),e._v(" "),r("h2",{attrs:{id:"sanal-makine-yapıları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#sanal-makine-yapıları"}},[e._v("#")]),e._v(" Sanal makine yapıları")]),e._v(" "),r("h3",{attrs:{id:"vm-yapıları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#vm-yapıları"}},[e._v("#")]),e._v(" VM Yapıları")]),e._v(" "),r("p",[e._v("Bir sanal makine, aşağıdaki gibi bir yapı olarak bellekte düzenlenmiştir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type VM struct {\n Block\n ExtCost func(string) int64\n FuncCallsDB map[string]struct{}\n Extern bool\n ShiftContract int64\n logger *log.Entry\n}\n")])])]),r("p",[e._v("Bir VM yapısı aşağıdaki öğelere sahiptir:")]),e._v(" "),r("ul",[r("li",[e._v("Blok - bir "),r("a",{attrs:{href:"#block-structure"}},[e._v("blok yapısı")]),e._v(";")]),e._v(" "),r("li",[e._v("ExtCost - bir işlev, harici bir golang işlevini yürütmenin maliyetini döndürür;")]),e._v(" "),r("li",[e._v("FuncCallsDB - Golang işlev adlarının bir koleksiyonu. Bu işlev, yürütme maliyetini ilk parametre olarak döndürür. Bu işlevler, veritabanı işleme maliyetini hesaplamak için EXPLAIN'i kullanır;")]),e._v(" "),r("li",[e._v("Extern - bir sözleşmenin harici bir sözleşme olup olmadığını gösteren bir Boole bayrağı. Bir VM oluşturulduğunda true olarak ayarlanır. Kod derlendiğinde çağrılan sözleşmeler görüntülenmez. Yani ileride belirlenen sözleşme kodunun çağrılmasını sağlar;")]),e._v(" "),r("li",[e._v("ShiftContract - VM'deki ilk sözleşmenin kimliği;")]),e._v(" "),r("li",[e._v("logger - VM hata günlüğü çıktısı.")])]),e._v(" "),r("h3",{attrs:{id:"blok-yapıları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#blok-yapıları"}},[e._v("#")]),e._v(" Blok Yapıları")]),e._v(" "),r("p",[e._v("Sanal makine, "),r("strong",[e._v("Blok tipi")]),e._v(" nesnelerden oluşan bir ağaçtır.")]),e._v(" "),r("p",[e._v("Bir blok, bazı bayt kodları içeren bağımsız bir birimdir. Basit bir ifadeyle, dilde parantezler ("),r("code",[e._v("{}")]),e._v(") içine koyduğunuz her şey bir bloktur.")]),e._v(" "),r("p",[e._v("Örneğin, aşağıdaki kod, fonksiyonlara sahip bir blok oluşturacaktır. Bu blok ayrıca bir if ifadesine sahip başka bir blok içerir ve bu blok while ifadesine sahip bir blok içerir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("func my() {\n if true {\n while false {\n ...\n }\n }\n}\n")])])]),r("p",[e._v("Blok, bellekte aşağıdaki gibi bir yapı olarak düzenlenmiştir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type Block struct {\n Objects map[string]*ObjInfo\n Type int\n Owner *OwnerInfo\n Info interface{}\n Parent *Block\n Vars []reflect.Type\n Code ByteCodes\n Children Blocks\n}\n")])])]),r("p",[e._v("Bir blok yapısı aşağıdaki unsurlardan oluşur:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Objects")]),e._v(" - "),r("a",{attrs:{href:"#objInfo-structure"}},[e._v("ObjInfo")]),e._v(" pointer türündeki internal objelerin haritası. Örneğin, blokta bir değişken varsa, onun adıyla ilgili bilgi alabilirsiniz;")]),e._v(" "),r("li",[r("strong",[e._v("Type")]),e._v(" - bloğun türü. Bir fonksiyon bloğu için tipi "),r("strong",[e._v("ObjFunc")]),e._v("; bir sözleşme bloğu için türü "),r("strong",[e._v("ObjContract")]),e._v("'tır;")]),e._v(" "),r("li",[r("strong",[e._v("Owner")]),e._v(" - "),r("strong",[e._v("OwnerInfo")]),e._v(" işaretçi türünün yapısı. Bu yapı, sözleşmenin derlenmesi sırasında belirtilen veya "),r("strong",[e._v("sözleşmeler")]),e._v(" tablosundan elde edilen, derlenmiş sözleşmenin sahibine ilişkin bilgileri içerir;")]),e._v(" "),r("li",[r("strong",[e._v("Info")]),e._v(" - blok türüne bağlı olarak nesne hakkında bilgi içerir;")]),e._v(" "),r("li",[r("strong",[e._v("Parent")]),e._v(" - üst bloğa bir işaretçi;")]),e._v(" "),r("li",[r("strong",[e._v("Vars")]),e._v(" - mevcut blok değişkenlerinin türlerini içeren bir dizi;")]),e._v(" "),r("li",[r("strong",[e._v("Code")]),e._v(" - örneğin fonksiyon çağrıları veya döngü gövdeleri gibi kontrol hakları bloğa aktarıldığında yürütülecek bloğun kendisinin bayt kodu;")]),e._v(" "),r("li",[r("strong",[e._v("Children")]),e._v(" - fonksiyon iç içe yerleştirme, döngüler, koşullu operatörler gibi alt blokları içeren bir dizi.")])]),e._v(" "),r("h3",{attrs:{id:"objinfo-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#objinfo-yapısı"}},[e._v("#")]),e._v(" ObjInfo Yapısı")]),e._v(" "),r("p",[e._v("ObjInfo yapısı, internal nesneler hakkında bilgi içerir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type ObjInfo struct {\n Type int\n Value interface{}\n}\n")])])]),r("p",[e._v("ObjInfo yapısı aşağıdaki öğelere sahiptir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Type")]),e._v(" is the object type, which has any of the following values:\n"),r("ul",[r("li",[r("strong",[e._v("ObjContract")]),e._v(" – "),r("a",{attrs:{href:"#contractInfo-structure"}},[e._v("contract")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("ObjFunc")]),e._v(" - function;")]),e._v(" "),r("li",[r("strong",[e._v("ObjExtFunc")]),e._v(" - external golang function;")]),e._v(" "),r("li",[r("strong",[e._v("ObjVar")]),e._v(" - variable;")]),e._v(" "),r("li",[r("strong",[e._v("ObjExtend")]),e._v(" - $name variable.")])])]),e._v(" "),r("li",[r("strong",[e._v("Value")]),e._v(" – it contains the structure of each type.")])]),e._v(" "),r("h4",{attrs:{id:"contractinfo-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#contractinfo-yapısı"}},[e._v("#")]),e._v(" ContractInfo Yapısı")]),e._v(" "),r("p",[r("strong",[e._v("ObjContract")]),e._v(" türüne işaret edilir ve "),r("strong",[e._v("Value")]),e._v(" alanı bir "),r("strong",[e._v("ContractInfo")]),e._v(" yapısı içerir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type ContractInfo struct {\n ID uint32\n Name string\n Owner *OwnerInfo\n Used map[string]bool\n Tx *[]*FieldInfo\n}\n")])])]),r("p",[e._v("ContractInfo yapısı aşağıdaki değişkenlere sahiptir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("ID")]),e._v(" - sözleşme çağrılırken blok zincirinde görüntülenen contractID")]),e._v(" "),r("li",[r("strong",[e._v("Name")]),e._v(" - contract adı;")]),e._v(" "),r("li",[r("strong",[e._v("Owner")]),e._v(" - sözleşme ile ilgili diğer bilgiler;")]),e._v(" "),r("li",[r("strong",[e._v("Used")]),e._v(" - çağrılan sözleşme adlarının haritası;")]),e._v(" "),r("li",[r("strong",[e._v("Tx")]),e._v(" - kontratın "),r("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#data-section"}},[e._v("data section")]),e._v(" açıklanan bir veri dizisi.")],1)]),e._v(" "),r("h4",{attrs:{id:"fieldinfo-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#fieldinfo-yapısı"}},[e._v("#")]),e._v(" FieldInfo Yapısı")]),e._v(" "),r("p",[e._v("FieldInfo yapısı "),r("strong",[e._v("ContractInfo")]),e._v(" yapısında kullanılır ve bir sözleşmenin "),r("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#data-section"}},[e._v("datasection")]),e._v(" içindeki öğeleri açıklar.")],1),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type FieldInfo struct {\n Name string\n Type reflect.Type\n Original uint32\n Tags string\n}\n")])])]),r("p",[e._v("FieldInfo yapısı aşağıdaki öğelere sahiptir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Name")]),e._v(" - field adı;")]),e._v(" "),r("li",[r("strong",[e._v("Type")]),e._v(" - field tipi;")]),e._v(" "),r("li",[r("strong",[e._v("Original")]),e._v(" - opsiyonel field;")]),e._v(" "),r("li",[r("strong",[e._v("Tags")]),e._v(" - bu alan için ek etiketler.")])]),e._v(" "),r("h4",{attrs:{id:"funcinfo-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#funcinfo-yapısı"}},[e._v("#")]),e._v(" FuncInfo Yapısı")]),e._v(" "),r("p",[e._v("ObjFunc tipine işaret eden ve Değer alanı bir FuncInfo yapısı içerir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type FuncInfo struct {\n Params []reflect.Type\n Results []reflect.Type\n Names *map[string]FuncName\n Variadic bool\n ID uint32\n}\n")])])]),r("p",[e._v("FuncInfo yapısı aşağıdaki değişkenlere sahiptir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Params")]),e._v(" - bir dizi parametre türü;")]),e._v(" "),r("li",[r("strong",[e._v("Results")]),e._v(" - bir dizi döndürülen tür;")]),e._v(" "),r("li",[r("strong",[e._v("Names")]),e._v(" - örneğin kuyruk fonksiyonları için veri haritası, "),r("code",[e._v("DBFind().Columns ()")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Variadic")]),e._v(" - işlev değişken sayıda parametreye sahip olabilirse true;")]),e._v(" "),r("li",[r("strong",[e._v("ID")]),e._v(" - function ID.")])]),e._v(" "),r("h4",{attrs:{id:"funcname-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#funcname-yapısı"}},[e._v("#")]),e._v(" FuncName Yapısı")]),e._v(" "),r("p",[e._v("FuncName yapısı, FuncInfo için kullanılır ve bir kuyruk fonksiyonunun verilerini tanımlar.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type FuncName struct {\n Params []reflect.Type\n Offset []int\n Variadic bool\n}\n")])])]),r("p",[e._v("FuncName yapısı aşağıdaki öğelere sahiptir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Params")]),e._v(" - bir dizi parametre türü;")]),e._v(" "),r("li",[r("strong",[e._v("Offset")]),e._v(" - bu değişkenler için ofset dizisi. Aslında, bir fonksiyondaki tüm parametrelerin değerleri dot. ile başlatılabilir;")]),e._v(" "),r("li",[r("strong",[e._v("Variadic")]),e._v(" - tail işlevi değişken sayıda parametreye sahip olabilirse true.")])]),e._v(" "),r("h4",{attrs:{id:"extfuncinfo-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#extfuncinfo-yapısı"}},[e._v("#")]),e._v(" ExtFuncInfo Yapısı")]),e._v(" "),r("p",[e._v("ObjExtFunc türüne işaret eden ve Değer alanı bir ExtFuncInfo yapısı içerir. Golang fonksiyonlarını tanımlamak için kullanılır.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type ExtFuncInfo struct {\n Name string\n Params []reflect.Type\n Results []reflect.Type\n Auto []string\n Variadic bool\n Func interface{}\n}\n")])])]),r("p",[e._v("ExtFuncInfo yapısı aşağıdaki öğelere sahiptir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Name")]),e._v(", "),r("strong",[e._v("Params")]),e._v(", "),r("strong",[e._v("Results")]),e._v(" parametreler "),r("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo")]),e._v(" ile aynı yapıya sahiptir;")]),e._v(" "),r("li",[r("strong",[e._v("Auto")]),e._v(" - bir dizi değişken. Varsa ek parametre olarak fonksiyona geçer. Örneğin, SmartContract sc türünde bir değişken;")]),e._v(" "),r("li",[r("strong",[e._v("Func")]),e._v(" - golang fonksiyonu.")])]),e._v(" "),r("h4",{attrs:{id:"varinfo-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#varinfo-yapısı"}},[e._v("#")]),e._v(" VarInfo Yapısı")]),e._v(" "),r("p",[r("strong",[e._v("ObjVar")]),e._v(" türüne işaret edilir ve "),r("strong",[e._v("Value")]),e._v(" alanı bir "),r("strong",[e._v("VarInfo")]),e._v(" yapısı içerir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type VarInfo struct {\n Obj *ObjInfo\n Owner *Block\n}\n")])])]),r("p",[e._v("VarInfo yapısı aşağıdaki unsurlara sahiptir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Obj")]),e._v(" - değişkenin türü ve değeri hakkında bilgi;")]),e._v(" "),r("li",[r("strong",[e._v("Owner")]),e._v(" - Owner bloğunun pointerı.")])]),e._v(" "),r("h4",{attrs:{id:"objextend-deger"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#objextend-deger"}},[e._v("#")]),e._v(" ObjExtend Değer")]),e._v(" "),r("p",[r("strong",[e._v("ObjExtend")]),e._v(" türüne işaret edilir ve "),r("strong",[e._v("Value")]),e._v(" alanı, değişken veya işlevin adını içeren bir dize içerir.")]),e._v(" "),r("h2",{attrs:{id:"sanal-makine-komutları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#sanal-makine-komutları"}},[e._v("#")]),e._v(" Sanal makine komutları")]),e._v(" "),r("h3",{attrs:{id:"bytecode-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#bytecode-yapısı"}},[e._v("#")]),e._v(" ByteCode Yapısı")]),e._v(" "),r("p",[e._v("Bir bayt kodu, "),r("strong",[e._v("ByteCode")]),e._v(" tipi yapıların bir dizisidir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type ByteCode struct {\n Cmd uint16\n Value interface{}\n}\n")])])]),r("p",[e._v("Bu yapı aşağıdaki alanlara sahiptir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Cmd")]),e._v(" - the identifier of the storage commands;")]),e._v(" "),r("li",[r("strong",[e._v("Value")]),e._v(" - işleneni içerir (değer).")])]),e._v(" "),r("p",[e._v("Genel olarak komutlar, yığının en üst öğesinde bir işlem gerçekleştirir ve gerekirse sonuç değerini buna yazar.")]),e._v(" "),r("h3",{attrs:{id:"command-identifiers"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#command-identifiers"}},[e._v("#")]),e._v(" Command identifiers")]),e._v(" "),r("p",[e._v("Sanal makine komutlarının identifiersları, vm/cmds_list.go dosyasında açıklanmıştır.")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("cmdPush")]),e._v(" – Değer alanından yığına bir değer koyun. Örneğin, yığına sayılar ve satırlar koyun;")]),e._v(" "),r("li",[r("strong",[e._v("cmdVar")]),e._v(" - bir değişkenin değerini yığına koyun. Değer, VarInfo yapısına bir işaretçi ve değişken hakkında bilgi içerir;")]),e._v(" "),r("li",[r("strong",[e._v("cmdExtend")]),e._v(" – yığına harici bir değişkenin değerini koyun. Değer, değişken adıyla ($ ile başlayan) bir dize içerir;")]),e._v(" "),r("li",[r("strong",[e._v("cmdCallExtend")]),e._v(" – harici bir işlevi çağırın ($ ile başlayan). Fonksiyonun parametreleri yığından elde edilir ve sonuçlar yığına yerleştirilir. Değer bir fonksiyon adı içerir ($ ile başlar);")]),e._v(" "),r("li",[r("strong",[e._v("cmdPushStr")]),e._v(" – dizeyi Değer'e yığına koyun;")]),e._v(" "),r("li",[r("strong",[e._v("cmdCall")]),e._v(" - sanal makine işlevini çağırır. Değer bir "),r("strong",[e._v("ObjInfo")]),e._v(" yapısı içerir. Bu komut, "),r("strong",[e._v("ObjExtFunc")]),e._v(" golang işlevi ve "),r("strong",[e._v("ObjFunc")]),e._v(" İğne işlevi için geçerlidir. Bir fonksiyon çağrılırsa, parametreleri yığından alınacak ve sonuç değerleri yığına yerleştirilecektir;")]),e._v(" "),r("li",[r("strong",[e._v("cmdCallVari")]),e._v(" - "),r("strong",[e._v("cmdCall")]),e._v(" komutuna benzer şekilde sanal makine işlevini çağırır. Bu komut, değişken sayıda parametreye sahip bir işlevi çağırmak için kullanılır;")]),e._v(" "),r("li",[r("strong",[e._v("cmdReturn")]),e._v(" - fonksiyondan çıkmak için kullanılır. Dönüş değerleri yığına konur ve Değer alanı kullanılmaz;")]),e._v(" "),r("li",[r("strong",[e._v("cmdIf")]),e._v(" – Değer alanına iletilen "),r("strong",[e._v("blok")]),e._v(" yapısındaki bayt koduna kontrolü aktarın. Kontrol, yalnızca yığının en üst öğesi "),r("em",[e._v("valueToBool")]),e._v(" işlevi tarafından çağrıldığında ve 'true' döndürüldüğünde yığına aktarılacaktır. Aksi takdirde, kontrol bir sonraki komuta aktarılacaktır;")]),e._v(" "),r("li",[r("strong",[e._v("cmdElse")]),e._v(" - bu komut, "),r("strong",[e._v("cmdIf")]),e._v(" ile aynı şekilde çalışır, ancak yalnızca yığının üst öğesi valueToBool işlevi tarafından çağrıldığında ve 'false' döndürüldüğünde, kontrol belirtilen bloğa aktarılacaktır;")]),e._v(" "),r("li",[r("strong",[e._v("cmdAssignVar")]),e._v(" – Value'dan "),r("strong",[e._v("VarInfo")]),e._v(" türündeki değişkenlerin bir listesini alın. Bu değişkenler,"),r("strong",[e._v("cmdAssign")]),e._v(" değeri almak için komut;")]),e._v(" "),r("li",[r("strong",[e._v("cmdAssign")]),e._v(" – yığındaki değeri "),r("strong",[e._v("cmdAssignVar")]),e._v(" komutuyla elde edilen değişkene atayın;")]),e._v(" "),r("li",[r("strong",[e._v("cmdLabel")]),e._v(" - while döngüsü sırasında kontrol döndürüldüğünde bir etiket tanımlar;")]),e._v(" "),r("li",[r("strong",[e._v("cmdContinue")]),e._v(" - bu komut, kontrolü "),r("strong",[e._v("cmdLabel")]),e._v(" etiketine aktarır. Döngünün yeni bir yinelemesi yürütülürken Değer kullanılmaz;")]),e._v(" "),r("li",[r("strong",[e._v("cmdWhile")]),e._v(' – yığının üst öğesini kontrol etmek için valueToBool kullanın. Bu değer "doğru" ise,'),r("strong",[e._v("block")]),e._v(" yapı, değer alanından çağrılır;")]),e._v(" "),r("li",[r("strong",[e._v("cmdBreak")]),e._v(" - döngüden çıkar;")]),e._v(" "),r("li",[r("strong",[e._v("cmdIndex")]),e._v(" – Değer kullanmadan, haritadaki veya dizideki değeri dizine göre yığına koyun. Örneğin, "),r("code",[e._v("(map | array) (index value) => (map | array [index value])")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdSetIndex")]),e._v(" – Değer kullanmadan, yığının en üst öğesinin değerini harita veya dizi öğelerine atar. Örneğin, "),r("code",[e._v("(map | array) (index value) (value) => (map | array)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdFuncName")]),e._v(" - dot. ile bölünen sıralı açıklamalar kullanılarak geçirilen parametreleri ekler. Örneğin, "),r("code",[e._v("func name => Func (...) .Name (...)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdUnwrapArr")]),e._v(" - yığının en üst öğesi bir dizi ise bir Boole bayrağı tanımlar;")]),e._v(" "),r("li",[r("strong",[e._v("cmdMapInit")]),e._v(" – map değerini başlatır;")]),e._v(" "),r("li",[r("strong",[e._v("cmdArrayInit")]),e._v(" - dizinin değerini başlatır;")]),e._v(" "),r("li",[r("strong",[e._v("cmdError")]),e._v(" - bu komut, bir sözleşme veya işlev belirtilen bir ile sona erdiğinde oluşturulur."),r("code",[e._v("error, warning, info")]),e._v(".")])]),e._v(" "),r("h3",{attrs:{id:"yıgın-islem-komutları"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#yıgın-islem-komutları"}},[e._v("#")]),e._v(" Yığın işlem komutları")]),e._v(" "),r("blockquote",[r("p",[e._v("Not")])]),e._v(" "),r("blockquote",[r("p",[e._v("Mevcut sürümde, bu komutlar için otomatik tip dönüştürme tam olarak uygulanamaz. Örneğin,")])]),e._v(" "),r("blockquote",[r("p",[r("code",[e._v("string + float | int | decimal => float | int | decimal, float + int | str => float, but int + string => runtime error")]),e._v(".")])]),e._v(" "),r("p",[e._v("Aşağıdakiler, doğrudan yığın işleme için komutlardır. Bu komutlarda Değer alanı kullanılmaz.")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("cmdNot")]),e._v(" - logical negation. "),r("code",[e._v("(val) => (!ValueToBool(val))")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdSign")]),e._v(" - change of sign. "),r("code",[e._v("(val) => (-val)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdAdd")]),e._v(" - addition. "),r("code",[e._v("(val1)(val2) => (val1 + val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdSub")]),e._v(" - subtraction. "),r("code",[e._v("(val1)(val2) => (val1-val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdMul")]),e._v(" - multiplication. "),r("code",[e._v("(val1)(val2) => (val1 * val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdDiv")]),e._v(" - division. "),r("code",[e._v("(val1)(val2) => (val1 / val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdAnd")]),e._v(" - logical AND. "),r("code",[e._v("(val1)(val2) => (valueToBool(val1) && valueToBool(val2))")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdOr")]),e._v(" - logical OR. "),r("code",[e._v("(val1)(val2) => (valueToBool(val1) || valueToBool(val2))")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdEqual")]),e._v(" - equality comparison, bool is returned. "),r("code",[e._v("(val1)(val2) => (val1 == val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdNotEq")]),e._v(" - inequality comparison, bool is returned. "),r("code",[e._v("(val1)(val2) => (val1 != val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdLess")]),e._v(" - less-than comparison, bool is returned. "),r("code",[e._v("(val1)(val2) => (val1 (val1 >= val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdGreat")]),e._v(" - greater-than comparison, bool is returned. "),r("code",[e._v("(val1)(val2) => (val1> val2)")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("cmdNotGreat")]),e._v(" - less-than-or-equal comparison, bool is returned. "),r("code",[e._v("(val1)(val2) => (val1 <= val2)")]),e._v(".")])]),e._v(" "),r("h3",{attrs:{id:"runtime-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#runtime-yapısı"}},[e._v("#")]),e._v(" Runtime Yapısı")]),e._v(" "),r("p",[e._v("Bayt kodlarının yürütülmesi sanal makineyi etkilemez. Örneğin, çeşitli işlevlerin ve sözleşmelerin tek bir sanal makinede aynı anda çalışmasına izin verir. Runtime yapısı, herhangi bir ifade ve bayt kodunun yanı sıra işlevleri ve sözleşmeleri çalıştırmak için kullanılır.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type RunTime struct {\n stack []interface{}\n blocks []*blockStack\n vars []interface{}\n extend *map[string]interface{}\n vm *VM\n cost int64\n err error\n}\n")])])]),r("ul",[r("li",[r("strong",[e._v("stack")]),e._v(" - bayt kodunu yürütmek için yığın;")]),e._v(" "),r("li",[r("strong",[e._v("blocks")]),e._v(" - calls yığınını engelle;")]),e._v(" "),r("li",[r("strong",[e._v("vars")]),e._v(" - değişken yığını. Blokta bayt kodu çağrıldığında, değişkeni değişken yığınına eklenecektir. Bloktan çıktıktan sonra, değişken yığınının boyutu önceki değere dönecektir;")]),e._v(" "),r("li",[r("strong",[e._v("extend")]),e._v(" - external değişkenlerin değerleriyle eşlenecek bir işaretçi ("),r("code",[e._v("$name")]),e._v(");")]),e._v(" "),r("li",[r("strong",[e._v("vm")]),e._v(" - bir sanal makine işaretçisi;")]),e._v(" "),r("li",[r("strong",[e._v("cost")]),e._v(" - ortaya çıkan yürütme maliyetinin yakıt birimi;")]),e._v(" "),r("li",[r("strong",[e._v("err")]),e._v(" - yürütme sırasında hata oluştu.")])]),e._v(" "),r("h4",{attrs:{id:"blockstack-yapısı"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#blockstack-yapısı"}},[e._v("#")]),e._v(" blockStack Yapısı")]),e._v(" "),r("p",[e._v("Runtime yapısında blockStack yapısı kullanılır.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type blockStack struct {\n Block *Block\n Offset int\n}\n")])])]),r("ul",[r("li",[r("strong",[e._v("Block")]),e._v(" - yürütülmekte olan bloğa bir işaretçi;")]),e._v(" "),r("li",[r("strong",[e._v("Offset")]),e._v(" – belirtilen bloğun bayt kodunda yürütülen son komutun ofseti.")])]),e._v(" "),r("h3",{attrs:{id:"runcode-fonksiyonu"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#runcode-fonksiyonu"}},[e._v("#")]),e._v(" RunCode Fonksiyonu")]),e._v(" "),r("p",[e._v("Bayt kodları "),r("strong",[e._v("RunCode")]),e._v(" işlevinde yürütülür. Her bayt kodu komutu için karşılık gelen işlemi gerçekleştiren bir döngü içerir. Bir bayt kodunu işlemeden önce, gerekli veriler başlatılmalıdır.")]),e._v(" "),r("p",[e._v("Diğer bloklara yeni bloklar eklenir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("rt.blocks = append(rt.blocks, &blockStack{block, len(rt.vars)})\n")])])]),r("p",[e._v("Ardından, kuyruk fonksiyonunun ilgili parametrelerinin bilgilerini alın. Bu parametreler yığının son elemanında bulunur.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("var namemap map[string][]interface{}\nif block.Type == ObjFunc && block.Info.(*FuncInfo).Names != nil {\n if rt.stack[len(rt.stack)-1] != nil {\n namemap = rt.stack[len(rt.stack)-1].(map[string][]interface{})\n }\n rt.stack = rt.stack[:len(rt.stack)-1]\n}\n")])])]),r("p",[e._v("Ardından, mevcut blokta tanımlanan tüm değişkenler, başlangıç ​​değerleri ile başlatılmalıdır.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("start := len(rt.stack)\nvaroff := len(rt.vars)\nfor vkey, vpar := range block.Vars {\n rt.cost--\n var value interface{}\n")])])]),r("p",[e._v("Fonksiyondaki değişkenler de değişken olduğundan, onları fonksiyonun tanımladığı sıraya göre yığının son elemanından almamız gerekir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" if block.Type == ObjFunc && vkey = len(params.Params)-1 {\n")])])]),r("p",[e._v("Geçirilen değişken parametreler değişken sayıda parametreye aitse, bu parametreler bir dizi değişkende birleştirilir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" off := varoff + params.Offset[len(params.Params)-1]\n rt.vars[off] = append(rt.vars[off].([]interface{}), value)\n } else {\n rt.vars[varoff+params.Offset[i]] = value\n }\n }\n }\n}\n")])])]),r("p",[e._v("Bundan sonra tek yapmamız gereken, yığının tepesinden fonksiyon parametreleri olarak geçen değerleri silmek ve böylece yığını taşımaktır. Değerlerini bir değişken dizisine kopyaladık.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("if block.Type == ObjFunc {\n start -= len(block.Info.(*FuncInfo).Params)\n}\n")])])]),r("p",[e._v("Bir bayt kodu komut döngüsü bittiğinde, yığını doğru şekilde temizlemeliyiz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("last := rt.blocks[len(rt.blocks)-1]\n")])])]),r("p",[e._v("Mevcut bloğu blok yığınından silin.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("rt.blocks = rt.blocks[:len(rt.blocks)-1]\nif status == statusReturn {\n")])])]),r("p",[e._v("Halihazırda yürütülen bir fonksiyondan başarıyla çıkılırsa, dönüş değerini önceki yığının sonuna ekleyeceğiz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" if last.Block.Type == ObjFunc {\n for count := len(last.Block.Info.(*FuncInfo).Results); count > 0; count-- {\n rt.stack[start] = rt.stack[len(rt.stack)-count]\n start++\n }\n status = statusNormal\n } else {\n")])])]),r("p",[e._v("Gördüğünüz gibi, fonksiyonu çalıştırmazsak, yığın durumunu geri yüklemeyeceğiz ve fonksiyondan olduğu gibi çıkmayacağız. Bunun nedeni, fonksiyonda yürütülen döngüler ve koşullu yapıların da bayt kodu blokları olmasıdır.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" return\n\n }\n}\n\nrt.stack = rt.stack[:start]\n")])])]),r("h3",{attrs:{id:"vm-ile-islemler-icin-diger-islevler"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#vm-ile-islemler-icin-diger-islevler"}},[e._v("#")]),e._v(" VM ile işlemler için diğer işlevler")]),e._v(" "),r("p",[r("strong",[e._v("NewVM")]),e._v(" işleviyle sanal bir makine oluşturabilirsiniz. Her sanal makine, "),r("strong",[e._v("Extend")]),e._v(" işlevi aracılığıyla "),r("strong",[e._v("ExecContract")]),e._v(", "),r("strong",[e._v("MemoryUsage")]),e._v(", "),r("strong",[e._v("CallContract")]),e._v(" ve "),r("strong",[e._v("Settings")]),e._v(" gibi dört işlevle eklenecektir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("for key, item := range ext.Objects {\n fobj := reflect.ValueOf(item).Type()\n")])])]),r("p",[e._v("Geçen tüm nesneleri dolaşıyoruz ve sadece işlevlere bakıyoruz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" switch fobj.Kind() {\n case reflect.Func:\n")])])]),r("p",[r("strong",[e._v("ExtFuncInfo")]),e._v(" yapısını fonksiyon hakkında aldığımız bilgilere göre dolduruyoruz ve yapısını üst seviye haritasına "),r("strong",[e._v("Objects")]),e._v(" ismiyle ekliyoruz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" data := ExtFuncInfo{key, make([]reflect.Type, fobj.NumIn()), make([]reflect.Type, fobj.NumOut()),\n make([]string, fobj.NumIn()), fobj.IsVariadic(), item}\n for i := 0; i 0 && ((*lexems)[i-1].Type == isComma || (*lexems)[i-1].Type == lexOper) {\n continue main\n }\n for k := len(buffer) - 1; k >= 0; k-- {\n if buffer[k].Cmd == cmdSys {\n continue main\n }\n}\nbreak main\n\n")])])]),r("p",[e._v("Genel olarak, algoritmanın kendisi, inverse Polish notasyonuna dönüştürmek için bir algoritmaya karşılık gelir. Gerekli sözleşmelerin, işlevlerin ve dizinlerin çağrılmasının yanı sıra ayrıştırma sırasında karşılaşılmayan diğer şeyler ve lexIdent tipi belirteçleri ayrıştırma seçenekleri göz önüne alındığında, bu adla değişkenler, işlevler veya sözleşmeler kontrol edilecektir. Hiçbir şey bulunamazsa ve bu bir işlev veya sözleşme çağrısı değilse, bir hata olduğunu gösterir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("objInfo, tobj := vm.findObj(lexem.Value.(string), block)\nif objInfo == nil && (!vm.Extern || i> *ind || i >= len(*lexems)-2 || (*lexems)[i+1].Type != isLPar) {\n return fmt.Errorf(`unknown identifier %s`, lexem.Value.(string))\n}\n")])])]),r("p",[e._v("Böyle bir durumla karşılaşabiliriz ve sözleşme görüşmesi daha sonra anlatılacaktır. Bu örnekte, aynı isimde herhangi bir fonksiyon veya değişken bulunamazsa, bir sözleşme çağırmanın gerekli olduğunu düşünüyoruz. Bu derlenmiş dilde, sözleşmeler ve işlev çağrıları arasında hiçbir fark yoktur. Ancak sözleşmeyi bytecode'da kullanılan "),r("strong",[e._v("ExecContract")]),e._v(" işlevi aracılığıyla çağırmamız gerekiyor.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("if objInfo.Type == ObjContract {\n if objInfo.Value != nil {\n objContract = objInfo.Value.(*Block)\n }\n objInfo, tobj = vm.findObj(`ExecContract`, block)\n isContract = true\n}\n")])])]),r("p",[e._v("Şimdiye kadarki değişkenlerin sayısını, fonksiyon parametrelerinin sayısı ile birlikte yığına da yazılacak olan "),r("code",[e._v("count")]),e._v(" içine kaydederiz. Parametrelerin sonraki her tespitinde, yığının son elemanında bu sayıyı yalnızca bir birim artırmamız gerekir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("count := 0\nif (*lexems)[i+2].Type != isRPar {\n count++\n}\n")])])]),r("p",[e._v("Kontratlar için kullanılan parametreleri içeren bir listemiz var, sonra kontratın çağrıldığı durumu işaretlememiz gerekiyor. Kontrat parametresiz çağrılırsa, en az iki parametre almak için "),r("strong",[e._v("ExecContract")]),e._v(" çağrısına iki boş parametre eklemeliyiz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v('if isContract {\n name := StateName((*block)[0].Info.(uint32), lexem.Value.(string))\n for j := len(*block) - 1; j >= 0; j-- {\n topblock := (*block)[j]\n if topblock.Type == ObjContract {\n if topblock.Info.(*ContractInfo).Used == nil {\n topblock.Info.(*ContractInfo).Used = make(map[string]bool)\n }\n topblock.Info.(*ContractInfo).Used[name] = true\n }\n }\n bytecode = append(bytecode, &ByteCode{cmdPush, name})\n if count == 0 {\n count = 2\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n }\n count++\n}\n')])])]),r("p",[e._v("Yanında bir braces olduğunu görürsek, indekse göre değeri almak için "),r("strong",[e._v("cmdIndex")]),e._v(" komutunu ekliyoruz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("if (*lexems)[i+1].Type == isLBrack {\n if objInfo == nil || objInfo.Type != ObjVar {\n return fmt.Errorf(`unknown variable %s`, lexem.Value.(string))\n }\n buffer = append(buffer, &ByteCode{cmdIndex, 0})\n}\n")])])]),r("p",[r("strong",[e._v("CompileBlock")]),e._v(" işlevi, nesne ağaçları ve ifadeden bağımsız bayt kodları oluşturabilir. Derleme işlemi, tıpkı bir sözlüksel çözümleyici gibi, ancak aşağıdaki farklılıklarla birlikte, sonlu durumlu bir makineye dayanmaktadır. İlk olarak, semboller değil tokenlar kullanıyoruz; ikinci olarak, tüm durumlar ve geçişlerdeki "),r("em",[e._v("durumlar")]),e._v(" değişkenlerini hemen tanımlayacağız. Belirteç türüne göre dizine alınmış bir dizi nesneyi temsil eder. Her simgenin bir "),r("em",[e._v("compileState")]),e._v(" yapısı vardır ve "),r("em",[e._v("NewState")]),e._v(" içinde yeni bir durum belirtilir. Hangi yapıyı çözdüğümüz açıksa, "),r("em",[e._v("Func")]),e._v(" alanında işleyicinin fonksiyonunu belirtebiliriz.")]),e._v(" "),r("p",[e._v("Örnek olarak ana durumu inceleyelim.")]),e._v(" "),r("p",[e._v("Bir satırsonu veya yorumla karşılaşırsak, aynı durumda kalırız. "),r("strong",[e._v("contract")]),e._v(" anahtar kelimesiyle karşılaşırsak, durumu "),r("em",[e._v("stateContract")]),e._v(" olarak değiştirir ve yapıyı ayrıştırmaya başlarız. "),r("strong",[e._v("func")]),e._v(" anahtar kelimesiyle karşılaşırsak, durumu "),r("em",[e._v("stateFunc")]),e._v(" olarak değiştiririz. Diğer belirteçler alınırsa, fonksiyon üreten hata çağrılır.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("{// stateRoot\n lexNewLine: {stateRoot, 0},\n lexKeyword | (keyContract << 8): {stateContract | statePush, 0},\n lexKeyword | (keyFunc << 8): {stateFunc | statePush, 0},\n lexComment: {stateRoot, 0},\n 0: {errUnknownCmd, cfError},\n},\n")])])]),r("p",[r("strong",[e._v("func")]),e._v(" anahtar sözcüğüyle karşılaştığımızı ve durumu "),r("em",[e._v("stateFunc")]),e._v(" olarak değiştirdiğimizi varsayalım. İşlev adının "),r("strong",[e._v("func")]),e._v(" anahtar sözcüğünü takip etmesi gerektiğinden, işlev adını değiştirirken aynı durumu koruyacağız. Diğer tüm belirteçler için ilgili hataları üreteceğiz. Belirteç tanımlayıcıda işlev adını alırsak, işlevin parametrelerini alabileceğimiz "),r("em",[e._v("stateFParams")]),e._v(" durumuna gideriz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("{// stateFunc\n lexNewLine: {stateFunc, 0},\n lexIdent: {stateFParams, cfNameBlock},\n 0: {errMustName, cfError},\n},\n")])])]),r("p",[e._v("Yukarıdaki işlemlerle aynı zamanda "),r("strong",[e._v("fNameBlock")]),e._v(" fonksiyonunu çağıracağız. Unutulmamalıdır ki Block yapısı, tampondan aldığımız ve ihtiyacımız olan verilerle doldurduğumuz statePush işareti ile oluşturulmaktadır. "),r("strong",[e._v("fNameBlock")]),e._v(" işlevi, sözleşmeler ve işlevler için uygundur (iç içe geçmiş olanlar dahil). "),r("em",[e._v("Bilgi")]),e._v(" alanını ilgili yapı ile doldurur ve kendisini üst bloğun "),r("em",[e._v("Nesnelerine")]),e._v(" yazar. Bu şekilde belirtilen isim ile fonksiyonu veya sözleşmeyi çağırabiliriz. Benzer şekilde, tüm durumlar ve değişkenler için karşılık gelen fonksiyonlar yaratırız. Bu işlevler genellikle çok küçüktür ve sanal makine ağacını oluştururken bazı görevleri yerine getirir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("func fNameBlock(buf *[]*Block, state int, lexem *Lexem) error {\n var itype int\n prev := (*buf)[len(*buf)-2]\n fblock := (*buf)[len(*buf)-1]\n name := lexem.Value.(string)\n switch state {\n case stateBlock:\n itype = ObjContract\n name = StateName((*buf)[0].Info.(uint32), name)\n fblock.Info = &ContractInfo{ID: uint32(len(prev.Children) - 1), Name: name,\n Owner: (*buf)[0].Owner}\n default:\n itype = ObjFunc\n fblock.Info = &FuncInfo{}\n }\n fblock.Type = itype\n prev.Objects[name] = &ObjInfo{Type: itype, Value: fblock}\n return nil\n}\n")])])]),r("p",[r("strong",[e._v("CompileBlock")]),e._v(" işlevi için, tüm belirteçler arasında geçiş yapar ve durumlarda açıklanan belirteçlere göre durumları değiştirir. Hemen hemen tüm ek belirteçler, ek program kodlarına karşılık gelir.")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("statePush")]),e._v(" – "),r("strong",[e._v("Blok")]),e._v(" nesnesini nesne ağacına ekler;")]),e._v(" "),r("li",[r("strong",[e._v("statePop")]),e._v(" - blok bir kapatma braces ile sona erdiğinde kullanılır;")]),e._v(" "),r("li",[r("strong",[e._v("stateStay")]),e._v(" - yeni bir duruma geçerken mevcut işareti korumanız gerekir;")]),e._v(" "),r("li",[r("strong",[e._v("stateToBlock")]),e._v(" - "),r("em",[e._v("while")]),e._v(" ve "),r("em",[e._v("if")]),e._v(" işlemek için "),r("strong",[e._v("stateBlock")]),e._v(" durumuna geçiş. İfadeleri işledikten sonra, parantez içindeki blokları işlemeniz gerekir;")]),e._v(" "),r("li",[r("strong",[e._v("stateToBody")]),e._v(" - "),r("strong",[e._v("stateBody")]),e._v(" durumuna geçiş;")]),e._v(" "),r("li",[r("strong",[e._v("stateFork")]),e._v(" - işaretli konumu kaydedin. İfade bir tanımlayıcı veya "),r("code",[e._v("$")]),e._v(" ile bir isim ile başladığında, fonksiyon çağrıları veya atamalar yapabiliriz;")]),e._v(" "),r("li",[r("strong",[e._v("stateToFork")]),e._v(" – işlem işlevine iletilecek olan "),r("strong",[e._v("stateFork")]),e._v(" içinde saklanan belirteci almak için kullanılır;")]),e._v(" "),r("li",[r("strong",[e._v("stateLabel")]),e._v(" – "),r("strong",[e._v("cmdLabel")]),e._v(" komutlarını eklemek için kullanılır. "),r("em",[e._v("while")]),e._v(" yapısı bu bayrağı gerektirir;")]),e._v(" "),r("li",[r("strong",[e._v("stateMustEval")]),e._v(" – "),r("em",[e._v("if")]),e._v(" ve "),r("em",[e._v("while")]),e._v(" yapılarının başında koşullu ifadelerin kullanılabilirliğini kontrol edin.")])]),e._v(" "),r("p",[r("strong",[e._v("CompileBlock")]),e._v(" işlevine ek olarak, "),r("strong",[e._v("FlushBlock")]),e._v(" işlevinden de bahsedilmelidir. Ancak sorun, blok ağacının mevcut sanal makinelerden bağımsız olarak oluşturulmasıdır. Daha doğrusu sanal bir makinede var olan işlevler ve sözleşmeler hakkında bilgi alıyoruz ancak derlenen blokları ayrı bir ağaçta topluyoruz. Aksi halde derleme sırasında bir hata oluşursa sanal makineyi bir önceki duruma döndürmemiz gerekir. Bu nedenle derleme ağacına ayrı ayrı gidiyoruz fakat derleme başarılı olduktan sonra "),r("strong",[e._v("FlushContract")]),e._v(" fonksiyonu çağrılmalıdır. Bu işlev, tamamlanmış blok ağacını mevcut sanal makineye ekler. Derleme aşaması artık tamamlanmıştır.")]),e._v(" "),r("h2",{attrs:{id:"lexical-analizor"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#lexical-analizor"}},[e._v("#")]),e._v(" Lexical analizör")]),e._v(" "),r("p",[e._v("Sözcüksel çözümleyici, gelen dizeleri işler ve aşağıdaki türlerde bir dizi belirteç oluşturur:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("lexSys")]),e._v(" - system token, örnek: "),r("code",[e._v("{}, [], (), ,, .")]),e._v(" etc;")]),e._v(" "),r("li",[r("strong",[e._v("lexOper")]),e._v(" - operation token, örnek: "),r("code",[e._v("+, -, /, \\, *")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("lexNumber")]),e._v(" - number;")]),e._v(" "),r("li",[r("strong",[e._v("lexident")]),e._v(" - identifier;")]),e._v(" "),r("li",[r("strong",[e._v("lexNewline")]),e._v(" - newline character;")]),e._v(" "),r("li",[r("strong",[e._v("lexString")]),e._v(" - string;")]),e._v(" "),r("li",[r("strong",[e._v("lexComment")]),e._v(" - comment;")]),e._v(" "),r("li",[r("strong",[e._v("lexKeyword")]),e._v(" - keyword;")]),e._v(" "),r("li",[r("strong",[e._v("lexType")]),e._v(" - type;")]),e._v(" "),r("li",[r("strong",[e._v("lexExtend")]),e._v(" - harici değişkenlere veya fonksiyonlara referans, örneğin: "),r("code",[e._v("$myname")]),e._v(".")])]),e._v(" "),r("p",[e._v("Mevcut sürümde, lex_table.go dosyasına yazılan belirteçleri ayrıştırmak için başlangıçta "),r("a",{attrs:{href:"#lextablelextablego"}},[e._v("script/lextable/lextable.go")]),e._v(" dosyası yardımıyla bir dönüşüm tablosu (sonlu durum makinesi) oluşturulur. Genel olarak, dosya tarafından başlangıçta oluşturulan dönüştürme tablosundan kurtulabilir ve başlangıçta hemen bellekte ("),r("code",[e._v("init()")]),e._v(") bir dönüştürme tablosu oluşturabilirsiniz. Sözcük analizinin kendisi "),r("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")]),e._v(" dosyasındaki lexParser işlevinde gerçekleşir.")]),e._v(" "),r("h3",{attrs:{id:"lextable-lextable-go"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#lextable-lextable-go"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),r("p",[e._v("Burada çalışacak alfabeyi tanımlıyoruz ve sonlu durum makinesinin bir sonraki alınan sembole göre bir durumdan diğerine nasıl değiştiğini açıklıyoruz.")]),e._v(" "),r("p",[r("em",[e._v("durumlar")]),e._v(", bir durum listesi içeren bir JSON nesnesidir.")]),e._v(" "),r("p",[e._v("Belirli semboller dışında, "),r("code",[e._v("d")]),e._v(", durumda belirtilmeyen tüm sembolleri ifade eder.\n"),r("code",[e._v("n")]),e._v(" 0x0a, "),r("code",[e._v("s")]),e._v(" boşluk, "),r("code",[e._v("q")]),e._v(" ters alıntı, "),r("code",[e._v("Q")]),e._v(" çift tırnak, "),r("code",[e._v("r")]),e._v(" >= 128, "),r("code",[e._v("a")]),e._v(" AZ ve az ve "),r("code",[e._v("1")]),e._v(" 1-9 anlamına gelir.")]),e._v(" "),r("p",[e._v("Bu durumların adı anahtarlardır ve olası değerler değer nesnesinde listelenir. Daha sonra her grup için geçiş yapılacak yeni bir durum vardır. Sonra jetonun adı var. İlk duruma geri dönmemiz gerekirse, üçüncü parametre, mevcut sembolün nasıl ele alınacağını gösteren hizmet simgesidir.")]),e._v(" "),r("p",[e._v("Örneğin, ana durumumuz ve gelen karakterler "),r("code",[e._v("/")]),e._v(", "),r("code",[e._v('"/": ["solidus", "", "push next"]')]),e._v(",")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("push")]),e._v(" - gayrı bir yığında olduğunu hatırlama komutunu verir;")]),e._v(" "),r("li",[r("strong",[e._v("next")]),e._v(" - sonraki karaktere gider ve aynı zamanda durumu "),r("strong",[e._v("solidus")]),e._v(" olarak değiştiririz. Bundan sonra, bir sonraki karakteri alır ve "),r("strong",[e._v("solidus")]),e._v("'un durumunu kontrol edin.")])]),e._v(" "),r("p",[e._v("Sonraki karakterde "),r("code",[e._v("/")]),e._v(" veya "),r("code",[e._v("/*")]),e._v(" varsa, o zaman "),r("code",[e._v("//")]),e._v(" veya "),r("code",[e._v("/*")]),e._v(" ile başladıkları için yorum "),r("strong",[e._v("yorum")]),e._v(" durumuna gideriz. Açıkçası, her yorumun daha sonra farklı bir durumu vardır, çünkü farklı bir sembolle biterler.")]),e._v(" "),r("p",[e._v("Sonraki karakter "),r("code",[e._v("/")]),e._v(" ve "),r("code",[e._v("*")]),e._v(" değilse, yığındaki her şeyi "),r("strong",[e._v("lexOper")]),e._v(" tipi etiketler olarak kaydeder, yığını temizler ve ana duruma döneriz.")]),e._v(" "),r("p",[e._v("Aşağıdaki modül, durum ağacını sayısal bir diziye dönüştürür ve onu "),r("em",[e._v("lex_table.go")]),e._v(" dosyasına yazar.")]),e._v(" "),r("p",[e._v("İlk döngüde:")]),e._v(" "),r("p",[e._v("Geçerli sembollerden oluşan bir alfabe oluşturuyoruz.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("for ind, ch := range alphabet {\n i := byte(ind)\n")])])]),r("p",[e._v("Ek olarak, "),r("strong",[e._v("state2int")]),e._v(" içinde her duruma kendi dizi tanımlayıcısını sağlarız.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" state2int := map[string]uint{`main`: 0}\n if err := json.Unmarshal([]byte(states), &data); err == nil {\n for key := range data {\n if key != `main` {\n state2int[key] = uint(len(state2int))\n")])])]),r("p",[e._v("Tüm durumları ve bir durumdaki her bir kümeyi ve bir kümedeki her bir sembolü geçtiğimizde, üç baytlık bir sayı yazarız [new state identifier (0 = main)] + [token type ( 0-no token)] + [token]. .\n"),r("em",[e._v("table")]),e._v(" dizisinin iki boyutluluğu, durumlara ve aynı sırada düzenlenmiş "),r("em",[e._v("alfabe")]),e._v(" dizisinden 34 giriş sembolüne bölünmüş olmasıdır.\n"),r("em",[e._v("Tablonun")]),e._v(" sıfır satırında "),r("em",[e._v("main")]),e._v(" durumundayız. İlk karakteri alın, "),r("em",[e._v("alphabet")]),e._v(" dizisinde dizinini bulun ve verilen dizine sahip sütundan değeri alın. Alınan değerden başlayarak jetonu düşük bayt olarak alıyoruz. Ayrıştırma tamamlandıysa, ikinci bayt, alınan belirtecin türünü gösterir. Üçüncü baytta, bir sonraki yeni durumun indeksini alırız.\nBunların tümü "),r("em",[e._v("lex.go")]),e._v(" içindeki "),r("strong",[e._v("lexParser")]),e._v(" işlevinde daha ayrıntılı olarak açıklanmıştır.\nBazı yeni karakterler eklemek istiyorsanız, bunları "),r("em",[e._v("alphabet")]),e._v(" dizisine eklemeniz ve "),r("em",[e._v("AlphaSize")]),e._v(" sabitinin miktarını artırmanız gerekir. Yeni bir sembol kombinasyonu eklemek isterseniz, mevcut seçeneklere benzer şekilde durum içinde açıklanmalıdır. Yukarıdaki işlemden sonra "),r("em",[e._v("lex_table.go")]),e._v(" dosyasını güncellemek için "),r("em",[e._v("lextable.go")]),e._v(" dosyasını çalıştırın.")]),e._v(" "),r("h3",{attrs:{id:"lex-go"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#lex-go"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"lex-go"}},[e._v("lex.go")])]),e._v(" "),r("p",[r("strong",[e._v("lexParser")]),e._v(" işlevi doğrudan sözcüksel analiz oluşturur ve gelen dizelere dayalı olarak bir dizi alınan etiket döndürür. Tokenların yapısını analiz edelim.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("type Lexem struct {\n Type uint32 // Type of the lexem\n Value interface{} // Value of lexem\n Line uint32 // Line of the lexem\n Column uint32 // Position inside the line\n}\n")])])]),r("ul",[r("li",[r("strong",[e._v("Type")]),e._v(" - belirteç türü. Aşağıdaki değerlerden birine sahiptir: "),r("code",[e._v("lexSys, lexOper, lexNumber, lexIdent, lexString, lexComment, lexKeyword, lexType, lexExtend")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Value")]),e._v(" – token değeri. Değerin türü, belirteç türüne bağlıdır, daha ayrıntılı olarak analiz edelim:\n"),r("ul",[r("li",[r("strong",[e._v("lexSys")]),e._v(" - parantez, virgül vb. içerir. Bu durumda, "),r("code",[e._v("Type = ch << 8 | lexSys")]),e._v(", lütfen "),r("code",[e._v("isLPar ... isRBrack")]),e._v(" sabitine bakın ve değeri uint32 bittir;")]),e._v(" "),r("li",[r("strong",[e._v("lexOper")]),e._v(" - değer, uint32 biçimindeki eşdeğer bir karakter dizisini temsil eder. 'isNot ... isOr' sabitlerine bakın;")]),e._v(" "),r("li",[r("strong",[e._v("lexNumber")]),e._v(" - sayılar int64 veya float64 olarak saklanır. Sayının ondalık noktası varsa, float64'tür;")]),e._v(" "),r("li",[r("strong",[e._v("lexIdent")]),e._v(" - tanımlayıcılar dize olarak saklanır;")]),e._v(" "),r("li",[r("strong",[e._v("lexNewLine")]),e._v(" - yeni satır karakteri. Ayrıca satır ve token konumunu hesaplamak için kullanılır;")]),e._v(" "),r("li",[r("strong",[e._v("lexString")]),e._v(" - satırlar dize olarak saklanır;")]),e._v(" "),r("li",[r("strong",[e._v("lexComment")]),e._v(" - yorumlar dize olarak saklanır;")]),e._v(" "),r("li",[r("strong",[e._v("lexKeyword")]),e._v(" - anahtar sözcükler için yalnızca ilgili dizinler saklanır, bkz. "),r("code",[e._v("keyContract ... keyTail' sabiti. Bu durumda")]),e._v('Tür = AnahtarKimliği << 8 | lexKeyword`. Ayrıca, "true, false, nil" anahtar sözcüklerinin hemen lexNumber tipi belirteçlere dönüştürüleceği ve ilgili "bool" ve "interface {}" türlerinin kullanılacağına dikkat edilmelidir;')]),e._v(" "),r("li",[r("strong",[e._v("lexType")]),e._v(' – bu değer, karşılık gelen "reflect.Type" tipi değerini içerir;')]),e._v(" "),r("li",[r("strong",[e._v("lexExtend")]),e._v(" – "),r("code",[e._v("$")]),e._v(" ile başlayan tanımlayıcılar. Bu değişkenler ve işlevler dışarıdan iletilir ve bu nedenle özel türdeki belirteçlere atanır. Bu değer, adı başında $ olmadan bir dize olarak içerir.")])])]),e._v(" "),r("li",[r("strong",[e._v("Line")]),e._v(" - tokenın bulunduğu satır;")]),e._v(" "),r("li",[r("strong",[e._v("Column")]),e._v(" - tokenın satır içi konumu.")])]),e._v(" "),r("p",[r("strong",[e._v("lexParser")]),e._v(" işlevini ayrıntılı olarak analiz edelim. "),r("strong",[e._v("todo")]),e._v(" işlevi, mevcut duruma ve gelen sembole göre alfabedeki sembol dizinini arar ve dönüşüm tablosundan yeni bir durum, belirteç tanımlayıcısı (varsa) ve diğer belirteçleri alır. Ayrıştırmanın kendisi, her bir sonraki karakter için sırayla "),r("strong",[e._v("todo")]),e._v(" işlevini çağırmayı ve yeni bir duruma geçmeyi içerir. Etiket alındıktan sonra çıktı kriterlerinde karşılık gelen jetonu oluşturup ayrıştırma işlemine devam ediyoruz. Ayrıştırma işlemi sırasında belirteç sembollerini ayrı bir yığın veya dizide biriktirmediğimize dikkat edilmelidir, çünkü yalnızca belirtecin başlangıcının ofsetini kaydederiz. Belirteci aldıktan sonra, bir sonraki belirtecin ofsetini mevcut ayrıştırma konumuna taşırız.")]),e._v(" "),r("p",[e._v("Geriye kalan tek şey, ayrıştırmada kullanılan sözcüksel durum belirteçlerini kontrol etmektir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("lexfPush")]),e._v(" - bu simge, yeni bir simgede simgeler biriktirmeye başladığımız anlamına gelir;")]),e._v(" "),r("li",[r("strong",[e._v("lexfNext")]),e._v(" - karakter, geçerli simgeye eklenmelidir;")]),e._v(" "),r("li",[r("strong",[e._v("lexfPop")]),e._v(" - tokenın alınması tamamlandı. Genellikle, bu bayrakla, ayrıştırılmış belirtecin tanımlayıcı türüne sahibiz;")]),e._v(" "),r("li",[r("strong",[e._v("lexfSkip")]),e._v(' - bu token, karakterleri ayrıştırmanın dışında tutmak için kullanılır. Örneğin, dizgedeki kontrol eğik çizgileri \\n \\r " şeklindedir. Sözcüksel analiz aşamasında bunlar otomatik olarak değiştirilecektir..')])]),e._v(" "),r("h2",{attrs:{id:"needle-dili"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#needle-dili"}},[e._v("#")]),e._v(" Needle dili")]),e._v(" "),r("h3",{attrs:{id:"lexemes"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#lexemes"}},[e._v("#")]),e._v(" Lexemes")]),e._v(" "),r("p",[e._v("Bir programın kaynak kodu UTF-8 kodlamasında olmalıdır.")]),e._v(" "),r("p",[e._v("Aşağıdaki sözcük türleri işlenir:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Keywords")]),e._v(" - "),r("code",[e._v("action, break, conditions, continue, contract, data, else, error, false, func, If, info, nil, return, settings, true, var, warning, while")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Number")]),e._v(" - sadece ondalık sayılar kabul edilir. İki temel tür vardır: "),r("strong",[e._v("int")]),e._v(" ve "),r("strong",[e._v("float")]),e._v(". Sayının ondalık noktası varsa, kayan nokta ** kayan nokta** olur. "),r("strong",[e._v("int")]),e._v(" türü, golang'da "),r("strong",[e._v("int64")]),e._v(" ile eşdeğerdir, "),r("strong",[e._v("float")]),e._v(" türü ise golang'da "),r("strong",[e._v("float64")]),e._v(" ile eşdeğerdir.")]),e._v(" "),r("li",[r("strong",[e._v("String")]),e._v(" - dize "),r("code",[e._v('("a dize")')]),e._v(" çift tırnak içine alınabilir veya "),r("code",[e._v("(\\`a dize\\`)")]),e._v(" ters tırnak içine alınabilir. Her iki dize türü de yeni satır karakterleri içerebilir. Çift tırnak içindeki dizeler, çift tırnak, yeni satır karakterleri ve eğik çizgilerle kaçan satır başları içerebilir. Örneğin, "),r("code",[e._v('"Bu bir \\"ilk dizedir\\".\\r\\nBu ikinci bir dizedir."')]),e._v(".")]),e._v(" "),r("li",[r("strong",[e._v("Comment")]),e._v(" - iki tür yorum vardır. Tek satırlı yorumlar iki eğik çizgi (//) kullanır. Örneğin, // Bu tek satırlık bir yorumdur. Çok satırlı yorumlar eğik çizgi ve yıldız sembollerini kullanır ve birden çok satıra yayılabilir. Örneğin, "),r("code",[e._v("/* Bu çok satırlı bir yorumdur */")]),e._v(".")]),e._v(" "),r("li",[r("strong",[e._v("Identifier")]),e._v(" - a-z ve A-Z harfleri, UTF-8 sembolleri, sayılar ve alt çizgilerden oluşan değişkenlerin ve fonksiyonların adları. Ad bir harf, alt çizgi, "),r("code",[e._v("@")]),e._v(" veya "),r("code",[e._v("$")]),e._v(" ile başlayabilir. "),r("code",[e._v("$")]),e._v(" ile başlayan ad, "),r("strong",[e._v("data")]),e._v(" tanımlanan değişkenin adıdır. "),r("code",[e._v("$")]),e._v(" ile başlayan ad, "),r("strong",[e._v("conditons")]),e._v(" ve "),r("strong",[e._v("actions")]),e._v(" kapsamındaki global değişkenleri tanımlamak için de kullanılabilir. Ekosistem sözleşmeleri "),r("code",[e._v("@")]),e._v(" sembolü kullanılarak çağrılabilir. Örneğin: "),r("code",[e._v("@1NewTable(...)")]),e._v(".")])]),e._v(" "),r("h3",{attrs:{id:"turler"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#turler"}},[e._v("#")]),e._v(" Türler")]),e._v(" "),r("p",[e._v("Karşılık gelen golang türleri, Needle türlerinin yanında belirtilir.")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("bool")]),e._v(" - bool, "),r("strong",[e._v("false")]),e._v(" by default;")]),e._v(" "),r("li",[r("strong",[e._v("bytes")]),e._v(" - []byte{}, an empty byte array by default;")]),e._v(" "),r("li",[r("strong",[e._v("int")]),e._v(" - int64, "),r("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),r("li",[r("strong",[e._v("address")]),e._v(" - uint64, "),r("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),r("li",[r("strong",[e._v("array")]),e._v(" - []interface{}, an empty array by default;")]),e._v(" "),r("li",[r("strong",[e._v("map")]),e._v(" - map[string]interface{}, an empty object array by default;")]),e._v(" "),r("li",[r("strong",[e._v("money")]),e._v(" - decimal. Decimal, "),r("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),r("li",[r("strong",[e._v("float")]),e._v(" - float64, "),r("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),r("li",[r("strong",[e._v("string")]),e._v(" - string,;")]),e._v(" "),r("li",[r("strong",[e._v("file")]),e._v(" - map[string]interface{}, varsayılan olarak boş bir nesne dizisi.")])]),e._v(" "),r("p",[e._v("Bu tür değişkenler "),r("code",[e._v("var")]),e._v(" anahtar kelimesi ile tanımlanır. Örneğin, "),r("code",[e._v("var var1, var2 int")]),e._v(". Bu şekilde tanımlandığında, türe göre varsayılan bir değere sahip bir değişken atanacaktır.")]),e._v(" "),r("p",[e._v("Tüm değişken değerleri interface{} türündedir ve ardından gerekli golang türlerine atanır. Bu nedenle, örneğin dizi ve harita türleri, []interface{} ve map[array]interface{} golang türleridir. Her iki dizi türü de herhangi bir türden öğe içerebilir.")]),e._v(" "),r("h3",{attrs:{id:"expressions"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#expressions"}},[e._v("#")]),e._v(" Expressions")]),e._v(" "),r("p",[e._v("Bir ifade aritmetik işlemleri, mantıksal işlemleri ve işlev çağrılarını içerebilir. Tüm ifadeler, operatörlerin önceliğine göre soldan sağa doğru değerlendirilir. Eşit önceliğe sahipse, operatörler soldan sağa doğru değerlendirilir.")]),e._v(" "),r("p",[e._v("Yüksekten düşüğe operasyonların önceliği:")]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Function call and parentheses")]),e._v(" - bir fonksiyon çağrıldığında, geçirilen parametreler soldan sağa doğru hesaplanır;")]),e._v(" "),r("li",[r("strong",[e._v("Unary Operation")]),e._v(" - logical negation "),r("code",[e._v("!")]),e._v(" and arithmetic sign change "),r("code",[e._v("-")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Multiplication and Division")]),e._v(" - arithmetic multiplication "),r("code",[e._v("*")]),e._v(" and division "),r("code",[e._v("/")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Addition and Subtraction")]),e._v(" - arithmetic addition "),r("code",[e._v("+")]),e._v(" and subtraction "),r("code",[e._v("-")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Logical comparison")]),e._v(" - "),r("code",[e._v(">=>> >=")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Logical equality and inequality")]),e._v(" - "),r("code",[e._v("== !=")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Logical AND")]),e._v(" - "),r("code",[e._v("&&")]),e._v(";")]),e._v(" "),r("li",[r("strong",[e._v("Logical OR")]),e._v(" - "),r("code",[e._v("||")]),e._v(".")])]),e._v(" "),r("p",[e._v("Mantıksal AND ve OR değerlendirilirken, her durumda ifadenin her iki tarafı da değerlendirilir.")]),e._v(" "),r("p",[e._v("Derleme sırasında iğnenin tip kontrolü yoktur. İşlenenleri değerlendirirken, türü daha karmaşık bir türe dönüştürmeye çalışılır. Karmaşıklık sırasının türü şu şekilde olabilir: "),r("code",[e._v("string, int, float, money")]),e._v(". Tür dönüşümlerinin yalnızca bir kısmı uygulanır. Dize türü, ekleme işlemlerini destekler ve sonuç, dize birleştirme olacaktır. Örneğin, "),r("code",[e._v("string + string = string, money-int = para, int * float = float")]),e._v(".")]),e._v(" "),r("p",[e._v("İşlevler için, yürütme sırasında "),r("code",[e._v("string")]),e._v(" ve "),r("code",[e._v("int")]),e._v(" türlerinde tip kontrolü yapılır.")]),e._v(" "),r("p",[r("strong",[e._v("array")]),e._v(" ve "),r("strong",[e._v("map")]),e._v(" türleri dizine göre ele alınabilir. "),r("strong",[e._v("array")]),e._v(" türü için "),r("strong",[e._v("int")]),e._v(" değeri dizin olarak belirtilmelidir. "),r("strong",[e._v("harita")]),e._v(" türü için bir değişken veya "),r("strong",[e._v("dize")]),e._v(" değeri belirtilmelidir. Dizini mevcut maksimum dizinden büyük olan bir "),r("strong",[e._v("array")]),e._v(" öğesine bir değer atarsanız, diziye boş bir öğe eklenir. Bu öğelerin başlangıç ​​değeri "),r("strong",[e._v("nil")]),e._v("'dir. Örneğin: .. code:")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v('var my array\nmy[5] = 0\nvar mymap map\nmymap["index"] = my[3]\n')])])]),r("p",[e._v("Koşullu mantıksal değerlerin ifadelerinde ("),r("code",[e._v("if, while, &&, ||, !")]),e._v(" gibi), tür otomatik olarak mantıksal bir değere dönüştürülür. Tür varsayılan değer değilse, doğrudur.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("var mymap map\nvar val string\nif mymap && val {\n...\n}\n")])])]),r("h3",{attrs:{id:"scope"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#scope"}},[e._v("#")]),e._v(" Scope")]),e._v(" "),r("p",[e._v("Parantezler, yerel kapsam değişkenlerini içerebilen bir blok belirtir. Varsayılan olarak, bir değişkenin kapsamı kendi bloklarına ve tüm iç içe bloklara uzanır. Bir blokta, mevcut bir değişkenin adını kullanarak yeni bir değişken tanımlayabilirsiniz. Ancak bu durumda aynı ada sahip harici değişkenler kullanılamaz hale gelir.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("var a int\na = 3\n{\n var a int\n a = 4\n Println(a) // 4\n}\nPrintln(a) // 3\n")])])]),r("h3",{attrs:{id:"kontrat-yurutme"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#kontrat-yurutme"}},[e._v("#")]),e._v(" Kontrat Yürütme")]),e._v(" "),r("p",[e._v("Bir kontratı çağırırken, "),r("strong",[e._v("data")]),e._v(" içinde tanımlanan parametreler ona iletilmelidir. Bir kontratı yürütmeden önce sanal makine bu parametreleri alır ve bunları karşılık gelen değişkenlere ($Param) atar. Ardından, önceden tanımlanmış "),r("strong",[e._v("conditons")]),e._v(" işlevi ve "),r("strong",[e._v("action")]),e._v(" işlevi çağrılır.")]),e._v(" "),r("p",[e._v("Kontratın yürütülmesi sırasında meydana gelen hatalar iki türe ayrılabilir: form hataları ve ortam hataları. Form hataları özel komutlar kullanılarak oluşturulur: "),r("code",[e._v("error, Warning, info")]),e._v(" ve yerleşik işlev "),r("code",[e._v("err")]),e._v(" döndürdüğünde "),r("em",[e._v("nil")]),e._v(" değerine eşit değildir.")]),e._v(" "),r("p",[e._v("Needle dili istisnaları işlemez. Herhangi bir hata, sözleşmelerin yürütülmesini sonlandıracaktır. Bir sözleşme yürütüldüğünde değişken değerleri kaydetmek için ayrı bir yığın ve yapı oluşturulduğundan, bir sözleşme yürütüldüğünde golang garbage collection tarafından bu verileri otomatik olarak siler.")]),e._v(" "),r("h3",{attrs:{id:"backus-naur-formu-bnf"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#backus-naur-formu-bnf"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"backus-naur-form-bnf"}},[e._v("Backus–Naur Formu (BNF)")])]),e._v(" "),r("p",[e._v("Bilgisayar biliminde BNF, bağlamdan bağımsız sözdizimi için bir gösterim tekniğidir ve genellikle hesaplamada kullanılan dilin sözdizimini tanımlamak için kullanılır.")]),e._v(" "),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" {}\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("''''''\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("['-'] ]\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("['-'] | \n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("' | '\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'A' |'B' | ... |'Z' |'a' |'b' | ... |'z' | 0x80 | 0x81 | ... | 0xFF\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'0x20'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'0x09'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'0x0D 0x0A'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'!' |'\"' |'$' |''' |'(' |')' |'\\*' |'+' |',' |'-' |'.' |'/ '|'<' |'=' |'>' |'[' |'\\\\' |']' |'_' |'|' |'}' | '{' | | | \n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" | | \n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("( |'_') { |'_' | }\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" | |'!' |'#' | ... |'[' |']' | ...\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("{ |'\\\"' |'\\n' |'\\r'}\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'\"' {}'\"' |'\\`' {}'\\`'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'='\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'-'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'==' |'!=' |'>' |'<' |'<=' |'>=' |'&&' |'||' |'\\*' |'/' |'+ '|'-'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" | | \n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" {','}\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'(' []')'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" [{'.' '(' []')'}]\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" {}\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'{''}'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("( | | | | | break | continue | return)\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'if [else ]'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'while '\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'contract '{'[] {} [] []'}''\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'data '{' {} '}''\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" '\"'{}'\"'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'optional | image | file | hidden | text | polymap | map | address | signature:'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'conditions '\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'action '\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'func '('[{','}]')'[{}] [] '\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v(" {',' } \n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'.''('[{','}]')'\n")])])]),r("ul",[r("li",[e._v("")])]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("'var {','}'\n")])])])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/129.5fdca64d.js b/assets/js/129.eeddd15b.js similarity index 99% rename from assets/js/129.5fdca64d.js rename to assets/js/129.eeddd15b.js index 46c6584..80fba31 100644 --- a/assets/js/129.5fdca64d.js +++ b/assets/js/129.eeddd15b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{510:function(a,e,i){"use strict";i.r(e);var t=i(51),r=Object(t.a)({},(function(){var a=this,e=a.$createElement,i=a._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[i("h1",{attrs:{id:"uygulama-gelistirme-egitimi"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#uygulama-gelistirme-egitimi"}},[a._v("#")]),a._v(" Uygulama geliştirme eğitimi")]),a._v(" "),i("p",[a._v("Bu bölümde size IBAX Ağı üzerinde basit bir uygulamanın nasıl geliştirileceğini göstereceğiz.")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Ama%C3%A7"}},[a._v("Hedef")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#B%C3%B6l%C3%BCm-1:-Environment"}},[a._v("Bölüm 1: Çevre")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#2.-B%C3%B6l%C3%BCm:-S%C3%B6zle%C5%9Fme"}},[a._v("Bölüm 2: Sözleşme")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Olu%C5%9Fturucu-hesab%C4%B1"}},[a._v("Oluşturucu hesabı")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Yeni-uygulama"}},[a._v("Yeni uygulama")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Yeni-veritaban%C4%B1-tablosu"}},[a._v("Yeni veritabanı tablosu")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Yeni-Kontrat"}},[a._v("Yeni Kontrat")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Kontrat-kodu"}},[a._v("Kontrat kodu")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Bir-kontrat-olu%C5%9Fturun"}},[a._v("Bir kontrat oluşturun")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Kontrat-ad%C4%B1"}},[a._v("Kontrat adı")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Data"}},[a._v("Data")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Conditions"}},[a._v("Conditions")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Action"}},[a._v("Action")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Tam-kontrat-kodu"}},[a._v("Tam kontrat kodu")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#kaydet-ve-%C3%A7al%C4%B1%C5%9Ft%C4%B1r"}},[a._v("Kaydet ve çalıştır")])])])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#B%C3%B6l%C3%BCm-3:-Sayfa"}},[a._v("Bölüm 3: Sayfa")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#New-field"}},[a._v("New-field")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Kontrat%C4%B1-g%C3%BCncelleyin"}},[a._v("Sözleşmeyi güncelleyin")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#sayfa"}},[a._v("Sayfa")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#tasar%C4%B1mc%C4%B1-g%C3%B6r%C3%BCn%C3%BCmleri"}},[a._v("Tasarımcı görünümleri")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#geli%C5%9Ftirici-g%C3%B6r%C3%BCn%C3%BCm%C3%BC"}},[a._v("Geliştirici görünümü")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Veritaban%C4%B1-tablosundan-veri-al%C4%B1n"}},[a._v("Veritabanı tablosundan veri getir")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Tam-sayfa-kodu"}},[a._v("Tam sayfa kodu")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Sayfay%C4%B1-kaydedin"}},[a._v("Sayfayı Kaydet")])])])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#B%C3%B6l%C3%BCm-4:-Uygulama"}},[a._v("Bölüm 4: Uygulama")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#men%C3%BC"}},[a._v("Menü")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Bir-men%C3%BC-%C3%B6%C4%9Fesi-ekleyin"}},[a._v("Bir menü öğesi ekleyin")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Yeni-men%C3%BC-%C3%B6%C4%9Fesini-test-edin"}},[a._v("Yeni menü öğesini test edin")])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Bir-mesaj-g%C3%B6ndermek"}},[a._v("Mesaj gönder")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#form"}},[a._v("Form")])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#formda-gezinme"}},[a._v("Formda gezinme")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"Y%C3%B6n-butonlar%C4%B1"}},[a._v("Gezinme butonları")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#de%C4%9Fi%C5%9Fkenler"}},[a._v("Değişkenler")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#giri%C5%9F-say%C4%B1s%C4%B1"}},[a._v("Giriş sayısı")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#tablo-ofseti"}},[a._v("Tablo ofseti")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#buton-kodu"}},[a._v("Buton kodu")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#sayfa-yenileme"}},[a._v("Sayfa yenileme")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Tam-sayfa-kodu"}},[a._v("Sayfa kodu")])])])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#sonu%C3%A7lar"}},[a._v("Sonuçlar")])])])])]),a._v(" "),i("h2",{attrs:{id:"amac"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#amac"}},[a._v("#")]),a._v(" Amaç")]),a._v(" "),i("p",[a._v("Uygulama basit işlevlerle başlar, ancak öğretici ilerledikçe karmaşıklığı artar.")]),a._v(" "),i("p",[a._v("Uygulamanın son sürümünde, bazı basit mesajlar (dizeler), gönderenlerin zaman damgalarını ve hesap tanımlayıcılarını içeren bir veritabanı tablosunda saklanır. Kullanıcılar, ekosistem menüsünden erişilebilen uygulama sayfasından mesaj listesini görüntüleyebilir ve yeni bir mesaj ekleyebilir.")]),a._v(" "),i("h2",{attrs:{id:"bolum-1-environment"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bolum-1-environment"}},[a._v("#")]),a._v(" Bölüm 1: Environment")]),a._v(" "),i("p",[i("strong",[a._v("Weaver")])]),a._v(" "),i("p",[a._v("IBAX'in tek müşterisi olan Weaver, tüm kullanıcılar ve ekosistem rolleri için işlevler sağlar. Bununla uygulama geliştiriciler uygulamalarını geliştirebilir ve test edebilir, ekosistem yöneticileri ekosistemlerini yönetebilir ve kullanıcılar ekosistemlerle etkileşime girebilir.")]),a._v(" "),i("p",[a._v("Bu eğitimde, Weaver'da sözleşmeleri, sayfa şablonlarını kodlayacak ve diğer tüm eylemleri gerçekleştireceksiniz. Weaver ayrıca sözleşme kodlarını geri yüklemek, kaydetmek ve yürütmek, veri yapılarını (veritabanı tabloları) yönetmek, erişim izinleri atamak ve uygulamalar oluşturmak için bir yol sağlar.")]),a._v(" "),i("p",[a._v("Her düğümün kendi Weaver örneği vardır.")]),a._v(" "),i("h2",{attrs:{id:"_2-bolum-sozlesme"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#_2-bolum-sozlesme"}},[a._v("#")]),a._v(" 2. Bölüm: Sözleşme")]),a._v(" "),i("p",[a._v('İlk basit uygulamanız "Merhaba Dünya!"')]),a._v(" "),i("blockquote",[i("p",[a._v("Not")])]),a._v(" "),i("blockquote",[i("p",[a._v("Bu uygulamada dizeler bir veritabanı tablosunda tutulacak ve bir kullanıcı sayfası yok.")])]),a._v(" "),i("h3",{attrs:{id:"olusturucu-hesabı"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#olusturucu-hesabı"}},[a._v("#")]),a._v(" Oluşturucu hesabı")]),a._v(" "),i("p",[a._v('Geliştirici rolüne sahip hesaplara ekosistemin "kök" ayrıcalıkları atanacaktır. Varsayılan olarak, bu rol tüm eylemlere erişebilir. Yeni bir ekosistemde, oluşturucu hesaba, ekosistemde yeni uygulamalar ve veritabanı tabloları oluşturmak gibi büyük değişiklikler yapmak için kullanmanız gereken Yönetici rolü atanacaktır.')]),a._v(" "),i("p",[a._v("İçerik oluşturucu hesabını kullanarak ekosisteme giriş yapın.")]),a._v(" "),i("h3",{attrs:{id:"yeni-uygulama"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#yeni-uygulama"}},[a._v("#")]),a._v(" Yeni uygulama")]),a._v(" "),i("p",[a._v("Ekosistem yaratıcısı olarak oturum açtıktan sonra yeni bir uygulama oluşturabilirsiniz.")]),a._v(" "),i("p",[a._v("Yeni bir Uygulama Yarat:")]),a._v(" "),i("ol",[i("li",[i("p",[a._v("Geliştirici sekmesine gidin;")])]),a._v(" "),i("li",[i("p",[a._v("Soldaki menüden Uygulama'yı seçin;")])]),a._v(" "),i("li",[i("p",[a._v("Uygulama sayfasında Yeni'yi seçin;")])]),a._v(" "),i("li",[i("p",[a._v("Ad alanında uygulama adını belirtin;")])]),a._v(" "),i("li",[i("p",[a._v('Koşullar\'ı "doğru" olarak ayarlayın;')])])]),a._v(" "),i("p",[a._v('"true", herkesin uygulamada değişiklik yapabileceği anlamına gelir;')]),a._v(" "),i("p",[a._v("Başka bir seçenek de "),i("code",[a._v('ContractConditions("MainCondition")')]),a._v(" olup, bu, yaratıcısı dışında hiç kimsenin uygulamada değişiklik yapamayacağı anlamına gelir.")]),a._v(" "),i("ol",{attrs:{start:"6"}},[i("li",[a._v("Uygulamanız uygulamalar listesinde görüntülenecektir, etkinleştirmek için belirli bir uygulamanın Ad alanına tıklayın.")])]),a._v(" "),i("blockquote",[i("p",[a._v("Not")])]),a._v(" "),i("blockquote",[i("p",[a._v("Geliştirici sekmesinde bir uygulamaya tıklayarak ilgili kaynaklara erişebilirsiniz, ekosistem üzerinde hiçbir etkisi yoktur. Hangisini seçerseniz seçin, tüm ekosistem uygulamaları hala mevcuttur.")])]),a._v(" "),i("h3",{attrs:{id:"yeni-veritabanı-tablosu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#yeni-veritabanı-tablosu"}},[a._v("#")]),a._v(" Yeni veritabanı tablosu")]),a._v(" "),i("p",[a._v("Verileri depolamak için Weaver'da uygulama için bir veritabanı tablosu oluşturun.")]),a._v(" "),i("p",[a._v("Bir veri tablosu oluşturun:")]),a._v(" "),i("ol",[i("li",[a._v("Geliştirici sekmesinde, Uygulama - Ad > Veritabanı tablosu'nu seçin;")])]),a._v(" "),i("p",[a._v("Seçilen uygulamaya ilişkin tüm veritabanı tabloları burada görüntülenecektir. Liste boşsa, uygulamanız için henüz hiçbir veritabanı tablosu oluşturulmamıştır.")]),a._v(" "),i("ol",{attrs:{start:"2"}},[i("li",[a._v("Yeni;'ye tıklayın")])]),a._v(" "),i("p",[a._v("Weaver, yeni bir veritabanı tablosu oluşturmanız için size sayfayı gösterecektir.")]),a._v(" "),i("ol",{attrs:{start:"3"}},[i("li",[a._v("Ad alanında adı belirtin;")])]),a._v(" "),i("p",[a._v("Bu öğreticide, veritabanı tablosunun adı 'apptable' olacaktır.")]),a._v(" "),i("ol",{attrs:{start:"4"}},[i("li",[a._v('"Mesaj" sütununu ekleyin, türünü "Metin" olarak ayarlayın;')])]),a._v(" "),i("p",[a._v('Bu tablonun iki sütunu olmalıdır: "id" (ön tanımlı) ve "message". Daha sonra daha fazla sütun ekleyeceksiniz.')]),a._v(" "),i("ol",{attrs:{start:"5"}},[i("li",[a._v("Okuma ve yazma izinleriyle ilgili olarak, her alanı 'true' olarak ayarlayın;")])]),a._v(" "),i("p",[a._v("Bu, herkesin veritabanı tablosuna giriş eklemesine, girişleri güncellemesine, sütun eklemesine ve giriş verilerini okumasına olanak tanır;")]),a._v(" "),i("p",[a._v("Bir seçenek olarak, yaratıcı hesabına okuma ve yazma izinlerini ayırabilirsiniz. Bu durumda, bu alanı "),i("code",[a._v('ContractConditions("MainCondition")')]),a._v(" olarak ayarlayın.")]),a._v(" "),i("h3",{attrs:{id:"yeni-kontrat"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#yeni-kontrat"}},[a._v("#")]),a._v(" Yeni Kontrat")]),a._v(" "),i("h4",{attrs:{id:"kontrat-kodu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#kontrat-kodu"}},[a._v("#")]),a._v(" Kontrat kodu")]),a._v(" "),i("p",[a._v("Her sözleşmenin üç bölümü vardır. Daha fazla ayrıntı için lütfen bakınız: "),i("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#contract-structure"}},[a._v("Sözleşme yapısı")]),a._v("。")],1),a._v(" "),i("h4",{attrs:{id:"bir-kontrat-olusturun"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bir-kontrat-olusturun"}},[a._v("#")]),a._v(" Bir kontrat oluşturun")]),a._v(" "),i("ol",[i("li",[a._v("Geliştirici sekmesinde, Uygulama - Ad > Kontratı seçin;")])]),a._v(" "),i("p",[a._v("Uygulama ile ilgili tüm sözleşmeler burada görüntülenecektir. Yeni uygulamalar için liste boştur.")]),a._v(" "),i("ol",{attrs:{start:"2"}},[i("li",[a._v("Yeni'yi tıklayın;")])]),a._v(" "),i("p",[a._v("Düzenleyicide yeni bir sözleşme şablonu görüntülenecektir.")]),a._v(" "),i("p",[a._v("Boş bir sözleşme şablonu aşağıdaki gibi gösterilir:")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v("contract ... {\n data {\n\n }\n conditions {\n\n }\n action {\n\n }\n}\n")])])]),i("h4",{attrs:{id:"kontrat-adı"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#kontrat-adı"}},[a._v("#")]),a._v(" Kontrat adı")]),a._v(" "),i("p",[a._v("İlk olarak, lütfen sözleşme adını belirtin.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(" contract AppContract {\n\n }\n")])])]),i("h4",{attrs:{id:"data"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[a._v("#")]),a._v(" Data")]),a._v(" "),i("p",[a._v("'data' bölümünü doldurun.")]),a._v(" "),i("p",[a._v('Aşağıdaki örnekte, "Mesaj" değişken adını belirtirken, "string" değişken türünü ifade eder.')]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(" data {\n Message string\n }\n")])])]),i("h4",{attrs:{id:"conditions"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#conditions"}},[a._v("#")]),a._v(" Conditions")]),a._v(" "),i("p",[a._v('"Koşullar" bölümünü doldurun. Basit bir doğrulama koşulu, boş dizelerden kaçınmaktır. '),i("code",[a._v("Message")]),a._v("ın uzunluğu "),i("code",[a._v("0")]),a._v(" ise, sözleşme uygulanırken önceden tanımlanmış bir uyarı mesajı tetiklenecektir.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n}\n')])])]),i("h4",{attrs:{id:"action"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#action"}},[a._v("#")]),a._v(" Action")]),a._v(" "),i("p",[a._v("'action' bölümünü doldurun. Basit bir işlem, veri tablosuna \"message\" yazmaktır.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(' action {\n DBInsert("apptable", {message: $Message})\n }\n')])])]),i("h4",{attrs:{id:"tam-kontrat-kodu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tam-kontrat-kodu"}},[a._v("#")]),a._v(" Tam kontrat kodu")]),a._v(" "),i("p",[a._v("Tam kontrat kodu aşağıda gösterilmiştir.")]),a._v(" "),i("p",[a._v('IBAX\'teki tüm kontratlar, "data", "conditons" ve "action" bölümleri dahil olmak üzere bu şekilde oluşturulacaktır.')]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('contract AppContract {\n data {\n Message string\n }\n conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n }\n action {\n DBInsert("apptable", {message: $Message})\n }\n}\n')])])]),i("h4",{attrs:{id:"kaydet-ve-calıstır"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#kaydet-ve-calıstır"}},[a._v("#")]),a._v(" Kaydet ve çalıştır")]),a._v(" "),i("p",[a._v("Şimdi, sözleşmeyi test etmeye hazırlanıyoruz:")]),a._v(" "),i("ol",[i("li",[a._v("Editörün menüsünde Kaydet'e tıklayın;")])]),a._v(" "),i("p",[a._v("Bu, sözleşme kodunu güncelleyecek ve güncellenmiş sürüm tüm ağ düğümleri için geçerli olacaktır.")]),a._v(" "),i("ol",{attrs:{start:"2"}},[i("li",[a._v("Editörün menüsünde Çalıştır'a tıklayın;")])]),a._v(" "),i("p",[a._v("Bu, Sözleşmeyi Çalıştır sayfasını görüntüler.")]),a._v(" "),i("ol",{attrs:{start:"3"}},[i("li",[a._v("Sözleşmeyi Çalıştır sayfasında, sözleşmenin giriş parametrelerini girin;")])]),a._v(" "),i("p",[a._v('Bu sözleşmenin bir "Message" parametresi olduğundan, Anahtar alanına "Message" ve Değer alanına "Merhaba, Dünya"yı ayarlayın.')]),a._v(" "),i("ol",{attrs:{start:"4"}},[i("li",[a._v("Çalıştır'a tıklayın.")])]),a._v(" "),i("p",[a._v("Sonuç sağda görüntülenecektir.")]),a._v(" "),i("p",[a._v("Bazı diziler başarıyla eklendiyse, sonuç, işlemlerin değişikliğini tanıtmak için blok kimliğini ve sonuç kodunu içerecektir.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('{\n "block": "31",\n "result": null\n}\n')])])]),i("h2",{attrs:{id:"bolum-3-sayfa"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bolum-3-sayfa"}},[a._v("#")]),a._v(" Bölüm 3: Sayfa")]),a._v(" "),i("p",[a._v("Sözleşme yürürlüğe girdiğinde, onu yararlı bir şeye genişletmenin zamanı geldi. Bu bölümde, UI ve diğer işlevleri uygulayacaksınız.")]),a._v(" "),i("p",[a._v("Not")]),a._v(" "),i("p",[a._v("Bu uygulamada, dizeler, bir günlükteki girişler gibi bir veritabanı tablosunda saklanacaktır. Her dizenin bir yazarı ve zaman damgası olacaktır.")]),a._v(" "),i("p",[a._v("Kullanıcılar, daha sonra basit bir form olarak gösterilen uygulama sayfasında saklanan dizelerin listesini görüntüleyebilir.")]),a._v(" "),i("h3",{attrs:{id:"new-field"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#new-field"}},[a._v("#")]),a._v(" New field")]),a._v(" "),i("p",[a._v("Öncekinde olduğu gibi, Geliştirici sekmesi > Uygulama - Ad > Veritabanı tablosu sayfasında veritabanı tablosunu düzenleyin;")]),a._v(" "),i("p",[i("code",[a._v("apptable")]),a._v(" içine aşağıdaki alanları ekleyin:")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("author")]),a._v(" , "),i("code",[a._v("Number")]),a._v(" alan türü, Değiştir'i "),i("code",[a._v("true")]),a._v(" olarak ayarlayın;")])]),a._v(" "),i("p",[a._v("Bu alan, author hesabının tanımlayıcısını saklayacaktır.")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("timestamp")]),a._v(" , "),i("code",[a._v("Date/Time")]),a._v(" alan türü, Change'i 'true' olarak ayarlayın.")])]),a._v(" "),i("h3",{attrs:{id:"kontratı-guncelleyin"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#kontratı-guncelleyin"}},[a._v("#")]),a._v(" Kontratı güncelleyin")]),a._v(" "),i("p",[a._v("AuthorID ve timestamp işlemek için kontrat kodunu güncelleyeceğiz.")]),a._v(" "),i("p",[a._v("Yazar kimliği, ekosistemin hesap kimliğidir. Timestamp, sözleşmenin Unix zaman biçiminde yürütüldüğü tarih ve saattir.")]),a._v(" "),i("p",[a._v("Her iki değer de "),i("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#variables"}},[a._v("Önceden tanımlanmış değişkenler")]),a._v(" tarafından sağlandığından ve önceden tanımlanmış değişkenlerin girilmesine veya doğrulanmasına gerek olmadığından, bunlar yalnızca işlem bölümünde güncellenebilir.")],1),a._v(" "),i("p",[a._v('AuthorID "$key_id", timestamp ise "$time" ile tanımlandığı bir mesaj eklerken veritabanı tablosuna AuthorID ve timestamp yazmak için sözleşmeyi güncelleyin.')]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('action {\n DBInsert("apptable", {message: $Message, author: $key_id, timestamp: $time})\n}\n')])])]),i("h3",{attrs:{id:"sayfa"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#sayfa"}},[a._v("#")]),a._v(" Sayfa")]),a._v(" "),i("p",[a._v("Uygulama sayfası için, veritabanı tablosunda saklanan mesajların görüntülendiği basit bir sayfadır.")]),a._v(" "),i("p",[a._v("Diğer tüm kaynaklar gibi, UI sayfasını Weaver'da oluşturabilirsiniz:")]),a._v(" "),i("p",[a._v("1.Geliştirici sekmesine gidin, Uygulama - Ad > Sayfa'yı tıklayın;")]),a._v(" "),i("ol",{attrs:{start:"2"}},[i("li",[a._v("Yeni'yi tıklayın;\nGörsel tasarımcı yeni bir sekmede açılacaktır.")])]),a._v(" "),i("h4",{attrs:{id:"tasarımcı-gorunumleri"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tasarımcı-gorunumleri"}},[a._v("#")]),a._v(" Tasarımcı görünümleri")]),a._v(" "),i("p",[a._v("Varsayılan sayfa boş. Sayfayı hızlı bir şekilde doldurmak için önceden tanımlanmış yapıyı kullanabilirsiniz.")]),a._v(" "),i("p",[a._v("Temel bir tablo oluşturun:")]),a._v(" "),i("ol",[i("li",[i("p",[a._v("Sağdaki görünüm seçicide Tasarımcı'yı tıklayın;\nGörünüm, görsel tasarımcıya geçecektir.")])]),a._v(" "),i("li",[i("p",[a._v("Soldaki menüde Başlıklı Tablo'yu seçin ve sayfaya sürükleyin.\nSayfada birden çok öğeye sahip bir tablo görüntülenecektir.")])])]),a._v(" "),i("h4",{attrs:{id:"gelistirici-gorunumu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#gelistirici-gorunumu"}},[a._v("#")]),a._v(" Geliştirici görünümü")]),a._v(" "),i("p",[a._v("IBAX'in kullanıcı sayfası bir "),i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html"}},[a._v("Şablon Dili")]),a._v(" ile kodlandığından, sayfa kodunu yazarken lütfen Geliştirici görünümüne geçin.")],1),a._v(" "),i("p",[a._v("Geliştirici görünümüne geçin.")]),a._v(" "),i("ol",[i("li",[a._v("Sağdaki görünüm seçicide Geliştirici'ye tıklayın.")])]),a._v(" "),i("p",[a._v("Görünüm, sayfa kodunu tutan bir sekme ile düzenleyiciye geçecektir.")]),a._v(" "),i("h4",{attrs:{id:"veritabanı-tablosundan-veri-alın"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#veritabanı-tablosundan-veri-alın"}},[a._v("#")]),a._v(" Veritabanı tablosundan veri alın")]),a._v(" "),i("p",[a._v("Şimdiye kadar, sayfa şablonuyla hiçbir şey yapılmadı. Bir sonraki adımda, sayfanın "),i("code",[a._v("apptable")]),a._v("dan veri görüntülemesine izin vermek için kodu güncelleyeceğiz.")]),a._v(" "),i("ol",[i("li",[i("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbfind"}},[a._v("DBFind")]),a._v(" işleviyle veritabanı tablosundan veri istemek için;")],1)]),a._v(" "),i("p",[a._v("Aşağıdaki örnekte, bu işlev çağrısı "),i("code",[a._v("apptable")]),a._v("dan veri almak için kullanılır. Veriler, kaynak "),i("code",[a._v("src_table")]),a._v(" içine yerleştirilecek ve zaman damgası alanına göre sıralanacaktır. "),i("code",[a._v("src_table")]),a._v(" daha sonra tablo görünümündeki sayfa için veri kaynağı olarak kullanılacaktır.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(' DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n')])])]),i("ol",{attrs:{start:"2"}},[i("li",[i("code",[a._v("src_table")]),a._v("dan gelen verileri görüntülemek için, bunu "),i("code",[a._v("Table")]),a._v(" işlevinde veri kaynağı ve başlık olarak belirtin.")])]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(' Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n')])])]),i("ol",{attrs:{start:"3"}},[i("li",[a._v("Sağdaki görüntü seçmede, verileri doğru görüntüleyip kontrol etme için önizleme'ye tıklayın.")])]),a._v(" "),i("h4",{attrs:{id:"tam-sayfa-kodu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tam-sayfa-kodu"}},[a._v("#")]),a._v(" Tam sayfa kodu")]),a._v(" "),i("p",[a._v("Bu bölümün tam sayfa kodu aşağıdadır. Bu temel sayfa daha sonra genişletilecektir.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n\nDiv(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n Button(Class: btn btn-primary, Contract: ContractName, Body: More)\n }\n}\n\n')])])]),i("h4",{attrs:{id:"sayfayı-kaydedin"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#sayfayı-kaydedin"}},[a._v("#")]),a._v(" Sayfayı kaydedin")]),a._v(" "),i("p",[a._v("Sayfayı kaydetmek için Kaydet'e tıklayın:")]),a._v(" "),i("ol",[i("li",[i("p",[a._v("Sayfa Adı alanında "),i("code",[a._v("AppPage")]),a._v(" veya sayfa için başka bir ad belirtin;")])]),a._v(" "),i("li",[i("p",[a._v("Menüde "),i("code",[a._v("default_menu")]),a._v(" öğesini seçin;")])]),a._v(" "),i("li",[i("p",[a._v("Koşullar'ı "),i("code",[a._v("true")]),a._v(" olarak ayarlayın;")])]),a._v(" "),i("li",[i("p",[a._v("Tamam'a tıklayın.")])])]),a._v(" "),i("h2",{attrs:{id:"bolum-4-uygulama"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bolum-4-uygulama"}},[a._v("#")]),a._v(" Bölüm 4: Uygulama")]),a._v(" "),i("p",[a._v("Önceki bölümlerde bir sözleşme, verileri depolamak için bir tablo ve bu verileri görüntülemek için temel bir kullanıcı arayüzü sayfası oluşturdunuz.")]),a._v(" "),i("p",[a._v("Bu bölümde, görünüşünü ve eylemlerinin gerçek olana benzer olmasını sağlamak için uygulamayı sonlandıracaksınız.")]),a._v(" "),i("h3",{attrs:{id:"menu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#menu"}},[a._v("#")]),a._v(" Menü")]),a._v(" "),i("p",[a._v("Sayfanın bir menüye bağlanması gerekir; örneğin, Ana Sayfa sekmesinde görüntülenen "),i("code",[a._v("default_page")]),a._v(", varsayılan ekosistem menüsü "),i("code",[a._v("default_menu")]),a._v(" ile bağlantılıdır.")]),a._v(" "),i("p",[a._v("Bu uygulama öğreticisi çok basit olduğundan (yalnızca bir sayfaya sahip olduğundan), bunun için ayrı bir menü oluşturmaya gerek yoktur. Varsayılan menüdeki yeni menü öğesi yeterlidir.")]),a._v(" "),i("blockquote",[i("p",[a._v("Not")])]),a._v(" "),i("blockquote",[i("p",[a._v("Geliştirici sekmesi > Uygulama - Ad > Sayfa'da sayfa özelliklerini düzenleyerek sayfa menüsünü tanımlayabilirsiniz. Örneğin, uygulamanızın birden fazla sayfası varsa, bu sayfalar arasında gezinmek için bir menü oluşturmanız ve bunu uygulamanın tüm sayfalarına atamanız gerekebilir.")])]),a._v(" "),i("h4",{attrs:{id:"bir-menu-ogesi-ekleyin"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bir-menu-ogesi-ekleyin"}},[a._v("#")]),a._v(" Bir menü öğesi ekleyin")]),a._v(" "),i("p",[a._v("Diğer tüm kaynaklar gibi, menüler de Weaver'da oluşturulabilir ve düzenlenebilir:")]),a._v(" "),i("ol",[i("li",[i("p",[a._v("Geliştirici sekmesi > Menü'ye gidin;")])]),a._v(" "),i("li",[i("p",[i("code",[a._v("default_menu")]),a._v(" girişinin Adını tıklayın;")])])]),a._v(" "),i("p",[a._v("Editörde yeni bir sekme açılacaktır.")]),a._v(" "),i("ol",{attrs:{start:"3"}},[i("li",[a._v("Şablonun sonuna, uygulama sayfasını açmak için bağlanacak yeni bir menü öğesi ekleyin ve simgesi "),i("a",{attrs:{href:"https://fontawesome.com/icons",target:"_blank",rel:"noopener noreferrer"}},[a._v("FontAwesome"),i("OutboundLink")],1),a._v(" simge setinden gelir.")])]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(' MenuItem(Title:Messages, Page:AppPage, Icon:"fa fa-envelope")\n')])])]),i("ol",{attrs:{start:"4"}},[i("li",[a._v("Kaydet'e tıklayın.")])]),a._v(" "),i("h4",{attrs:{id:"yeni-menu-ogesini-test-edin"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#yeni-menu-ogesini-test-edin"}},[a._v("#")]),a._v(" Yeni menü öğesini test edin")]),a._v(" "),i("p",[a._v("Yeni menü öğesinin geçerli olup olmadığını kontrol edin:")]),a._v(" "),i("ol",[i("li",[i("p",[a._v("Giriş sekmesini açın;")])]),a._v(" "),i("li",[i("p",[a._v("Menüde Yenile'ye tıklayın;")]),a._v(" "),i("p",[a._v("Mesaj başlığına sahip bir giriş görünecektir;")])]),a._v(" "),i("li",[i("p",[a._v("Mesajlar'a tıklayın.")]),a._v(" "),i("p",[a._v("Başvuru sayfası açılacaktır.")])])]),a._v(" "),i("h3",{attrs:{id:"bir-mesaj-gondermek"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bir-mesaj-gondermek"}},[a._v("#")]),a._v(" Bir mesaj göndermek")]),a._v(" "),i("p",[a._v("Logicor'daki düğmeler, parametrelere bağlı olarak sözleşmeleri uygulamak ve sayfaları açmak için kullanılabilir.")]),a._v(" "),i("p",[i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#button"}},[a._v("Button")]),a._v(" işlevinin iki sözleşme parametresi vardır:")],1),a._v(" "),i("ul",[i("li",[i("p",[i("code",[a._v("Contract")])]),a._v(" "),i("p",[a._v("Etkinleştirilen sözleşmenin adı.")])]),a._v(" "),i("li",[i("p",[i("code",[a._v("Params")])]),a._v(" "),i("p",[a._v("Sözleşmenin giriş parametreleri.")])])]),a._v(" "),i("h4",{attrs:{id:"form"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[a._v("#")]),a._v(" Form")]),a._v(" "),i("p",[a._v("Sözleşmeye veri göndermek için, başvuru sayfasına bir mesaj için bir giriş alanına ve sözleşmeyi AppContract'ı etkinleştirmek için bir düğmeye sahip olması gereken bir form ekleyin.")]),a._v(" "),i("p",[a._v("Aşağıda bu tür bir formun bir örneği verilmiştir. Kendi "),i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#div"}},[a._v("Div")]),a._v(" içinde yuvalanmıştır. "),i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#input"}},[a._v("Girdi")]),a._v(' alanının önceden tanımlanmış bir "message_input" ada sahip olduğunu tanımlayan form görünümünü içeren Div öğesinin arkasına koymak. Düğme, sözleşmeye '),i("code",[a._v("Mesaj")]),a._v(" değerini göndermek için bu ismi kullanır. Son olarak, giriş alanının değerini almak için "),i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#calling-contracts"}},[a._v("Val")]),a._v(" işlevi kullanılır.")],1),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)")\n }\n}\n')])])]),i("p",[a._v("Bu yeni özelliği mesaj göndererek test ederken formun yenilenmediğini fark edebilirsiniz. Bu, "),i("a",{attrs:{href:"#page-refreshing"}},[a._v("sayfa yenilemede")]),a._v(" tanıtılacaktır.")]),a._v(" "),i("h3",{attrs:{id:"formda-gezinme"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#formda-gezinme"}},[a._v("#")]),a._v(" Formda gezinme")]),a._v(" "),i("p",[a._v("Varsayılan görünümde, sayfadaki form ilk sayfada yalnızca 25 girdi görüntüleyebilir. Bu nedenle, kullanıcıları tüm form girişlerine yönlendirmek için bazı basit düğmeler ekleyebilirsiniz.")]),a._v(" "),i("h4",{attrs:{id:"yon-butonları"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#yon-butonları"}},[a._v("#")]),a._v(" Yön butonları")]),a._v(" "),i("p",[a._v("İki gezinme butonu olacak ve her biri uygulama sayfasını yeniden yükleyebilir ve parametreleri ona iletebilir.")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Önceki buton ilk 25 girişi görüntüleyecektir. Başka giriş yoksa buton görüntülenmez;")])]),a._v(" "),i("li",[i("p",[a._v("Sonraki butonunda sonraki 25 girişi görüntüleyecektir. Başka giriş yoksa, buton görüntülenmez.")])])]),a._v(" "),i("h4",{attrs:{id:"degiskenler"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#degiskenler"}},[a._v("#")]),a._v(" Değişkenler")]),a._v(" "),i("p",[a._v("Gezinme düğmeleri, tablo görünümü durumlarını depolamak için iki değişken gerektirir:")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("#table_view_offset#")])])]),a._v(" "),i("p",[a._v("Bu değişken, mevcut tablo görünümünün ofsetini saklar.")]),a._v(" "),i("p",[a._v("Sayfa yeniden yüklendiğinde gezinme düğmeleri bunu bir parametre olarak iletecektir.")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("#record_count#")])])]),a._v(" "),i("p",[a._v("Bu değişken, tablodaki toplam giriş sayısını saklar.")]),a._v(" "),i("p",[a._v("Değer hesaplanacaktır.")]),a._v(" "),i("h4",{attrs:{id:"giris-sayısı"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#giris-sayısı"}},[a._v("#")]),a._v(" Giriş sayısı")]),a._v(" "),i("p",[i("code",[a._v("#record_count#")]),a._v(" saymak için lütfen mevcut "),i("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbfind"}},[a._v("DBFind")]),a._v(" işlev çağrısını değiştirin. "),i("code",[a._v(".count()")]),a._v(" çağrısında belirtilen değişken, giriş sayısını saklayacaktır.")],1),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count)\n')])])]),i("h4",{attrs:{id:"tablo-ofseti"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tablo-ofseti"}},[a._v("#")]),a._v(" Tablo ofseti")]),a._v(" "),i("p",[a._v("Sayfa açıldığında tablo görünümü ofseti sayfaya geçirilmelidir. "),i("code",[a._v("#table_view_offset#")]),a._v(" bir değer almazsa 0 olarak ayarlayın.")]),a._v(" "),i("p",[a._v("Aşağıdaki kodu sayfanın en üstüne ekleyin.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v("If(GetVar(table_view_offset)){\n\n}.Else{\n SetVar(table_view_offset, 0)\n}\n")])])]),i("p",[i("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbfind"}},[a._v("DBFind")]),a._v(" işlev çağrısını yeniden değiştirin. Bu sefer yeni tablo görünümü ofsetini kullanmalıdır.")],1),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n')])])]),i("h4",{attrs:{id:"buton-kodu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#buton-kodu"}},[a._v("#")]),a._v(" Buton kodu")]),a._v(" "),i("p",[a._v("Find the "),i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#div"}},[a._v("Div")]),a._v(" function call that defines the footer: "),i("code",[a._v("Div(Class:panel-footer text-right)")]),a._v(". Add the button code into it.")],1),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v("Div(Class: panel-footer text-right) {\n}\n")])])]),i("p",[i("em",[a._v("Previous")]),a._v(" düğmesi yalnızca geri dönülecek en az bir Sonraki varsa görünür. Bir düğme eklerken, sayfanın yeni tablo görünümü ofset 'offset_previous' hesaplanacaktır. Parametreler, yeniden açılan sayfanın 'PageParams'ına iletilir.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n}\n')])])]),i("p",[a._v("Sonraki düğmesi, yalnızca toplam kayıt sayısı sayfada görüntülenen sayıdan fazla olduğunda görüntülenecektir. Bir düğme eklendiğinde, sayfanın yeni tablo görünümü ofset 'offset_next' hesaplanacaktır. Parametreler, yeniden açılan sayfanın 'PageParams'ına iletilir.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n}\n')])])]),i("p",[a._v("Bu düğmeleri ekledikten sonra sayfayı kaydedin ve Ana Sayfa > Mesajlar menü öğesinden test edin.")]),a._v(" "),i("h4",{attrs:{id:"sayfa-yenileme"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#sayfa-yenileme"}},[a._v("#")]),a._v(" Sayfa yenileme")]),a._v(" "),i("p",[a._v("Uygulanacak son işlev, sayfadaki tabloyu otomatik olarak güncellemektir. Kullanıcılar yeni bir mesaj gönderdiğinde, tabloda görüntülenmelidir.")]),a._v(" "),i("p",[a._v("Sözleşmeyi uygulamaya ek olarak, aynısını elde etmek için mevcut sayfayı yeniden açmak için Gönder düğmesini de kullanabilirsiniz. "),i("code",[a._v("#table_view_offset#")]),a._v(" sayfaya herhangi bir değişiklik yapılmadan geçirilmelidir.")]),a._v(" "),i("p",[a._v("Gönder düğmesine "),i("code",[a._v("Page")]),a._v(" ve "),i("code",[a._v("PageParams")]),a._v(" ekleyin, kod aşağıdaki gibidir:")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n')])])]),i("h3",{attrs:{id:"tam-sayfa-kodu-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tam-sayfa-kodu-2"}},[a._v("#")]),a._v(" Tam sayfa kodu")]),a._v(" "),i("p",[a._v("Bu bölüm, uygulama sayfasındaki birçok değişikliği açıklar. Uygulama sayfasının tam kodu aşağıdadır.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('If(GetVar(table_view_offset)){\n}.Else{\n SetVar(table_view_offset, 0)\n}\nDBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n Div(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n }\n If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n }\n }\n }\n Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n }\n}\n')])])]),i("h2",{attrs:{id:"sonuclar"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#sonuclar"}},[a._v("#")]),a._v(" Sonuçlar")]),a._v(" "),i("p",[a._v("Uygulama geliştiriciler için yerleşim stilleri, erişim izinleri yönetimi ve uygulamalar ve kaynaklar arasındaki etkileşim gibi diğer önemli konuları açıklamak yerine, bu öğretici bir ekosistem için temel bir uygulamanın nasıl oluşturulacağını anlatır. Bu ileri düzey konular hakkında daha fazla bilgi için diğer ilgili belgelere bakın.")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{508:function(a,e,i){"use strict";i.r(e);var t=i(51),r=Object(t.a)({},(function(){var a=this,e=a.$createElement,i=a._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[i("h1",{attrs:{id:"uygulama-gelistirme-egitimi"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#uygulama-gelistirme-egitimi"}},[a._v("#")]),a._v(" Uygulama geliştirme eğitimi")]),a._v(" "),i("p",[a._v("Bu bölümde size IBAX Ağı üzerinde basit bir uygulamanın nasıl geliştirileceğini göstereceğiz.")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Ama%C3%A7"}},[a._v("Hedef")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#B%C3%B6l%C3%BCm-1:-Environment"}},[a._v("Bölüm 1: Çevre")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#2.-B%C3%B6l%C3%BCm:-S%C3%B6zle%C5%9Fme"}},[a._v("Bölüm 2: Sözleşme")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Olu%C5%9Fturucu-hesab%C4%B1"}},[a._v("Oluşturucu hesabı")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Yeni-uygulama"}},[a._v("Yeni uygulama")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Yeni-veritaban%C4%B1-tablosu"}},[a._v("Yeni veritabanı tablosu")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Yeni-Kontrat"}},[a._v("Yeni Kontrat")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Kontrat-kodu"}},[a._v("Kontrat kodu")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Bir-kontrat-olu%C5%9Fturun"}},[a._v("Bir kontrat oluşturun")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Kontrat-ad%C4%B1"}},[a._v("Kontrat adı")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Data"}},[a._v("Data")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Conditions"}},[a._v("Conditions")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Action"}},[a._v("Action")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Tam-kontrat-kodu"}},[a._v("Tam kontrat kodu")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#kaydet-ve-%C3%A7al%C4%B1%C5%9Ft%C4%B1r"}},[a._v("Kaydet ve çalıştır")])])])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#B%C3%B6l%C3%BCm-3:-Sayfa"}},[a._v("Bölüm 3: Sayfa")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#New-field"}},[a._v("New-field")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Kontrat%C4%B1-g%C3%BCncelleyin"}},[a._v("Sözleşmeyi güncelleyin")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#sayfa"}},[a._v("Sayfa")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#tasar%C4%B1mc%C4%B1-g%C3%B6r%C3%BCn%C3%BCmleri"}},[a._v("Tasarımcı görünümleri")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#geli%C5%9Ftirici-g%C3%B6r%C3%BCn%C3%BCm%C3%BC"}},[a._v("Geliştirici görünümü")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Veritaban%C4%B1-tablosundan-veri-al%C4%B1n"}},[a._v("Veritabanı tablosundan veri getir")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Tam-sayfa-kodu"}},[a._v("Tam sayfa kodu")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Sayfay%C4%B1-kaydedin"}},[a._v("Sayfayı Kaydet")])])])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#B%C3%B6l%C3%BCm-4:-Uygulama"}},[a._v("Bölüm 4: Uygulama")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#men%C3%BC"}},[a._v("Menü")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#Bir-men%C3%BC-%C3%B6%C4%9Fesi-ekleyin"}},[a._v("Bir menü öğesi ekleyin")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Yeni-men%C3%BC-%C3%B6%C4%9Fesini-test-edin"}},[a._v("Yeni menü öğesini test edin")])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Bir-mesaj-g%C3%B6ndermek"}},[a._v("Mesaj gönder")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"#form"}},[a._v("Form")])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#formda-gezinme"}},[a._v("Formda gezinme")]),a._v(" "),i("ul",[i("li",[i("a",{attrs:{href:"Y%C3%B6n-butonlar%C4%B1"}},[a._v("Gezinme butonları")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#de%C4%9Fi%C5%9Fkenler"}},[a._v("Değişkenler")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#giri%C5%9F-say%C4%B1s%C4%B1"}},[a._v("Giriş sayısı")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#tablo-ofseti"}},[a._v("Tablo ofseti")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#buton-kodu"}},[a._v("Buton kodu")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#sayfa-yenileme"}},[a._v("Sayfa yenileme")])]),a._v(" "),i("li",[i("a",{attrs:{href:"#Tam-sayfa-kodu"}},[a._v("Sayfa kodu")])])])])])]),a._v(" "),i("li",[i("a",{attrs:{href:"#sonu%C3%A7lar"}},[a._v("Sonuçlar")])])])])]),a._v(" "),i("h2",{attrs:{id:"amac"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#amac"}},[a._v("#")]),a._v(" Amaç")]),a._v(" "),i("p",[a._v("Uygulama basit işlevlerle başlar, ancak öğretici ilerledikçe karmaşıklığı artar.")]),a._v(" "),i("p",[a._v("Uygulamanın son sürümünde, bazı basit mesajlar (dizeler), gönderenlerin zaman damgalarını ve hesap tanımlayıcılarını içeren bir veritabanı tablosunda saklanır. Kullanıcılar, ekosistem menüsünden erişilebilen uygulama sayfasından mesaj listesini görüntüleyebilir ve yeni bir mesaj ekleyebilir.")]),a._v(" "),i("h2",{attrs:{id:"bolum-1-environment"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bolum-1-environment"}},[a._v("#")]),a._v(" Bölüm 1: Environment")]),a._v(" "),i("p",[i("strong",[a._v("Weaver")])]),a._v(" "),i("p",[a._v("IBAX'in tek müşterisi olan Weaver, tüm kullanıcılar ve ekosistem rolleri için işlevler sağlar. Bununla uygulama geliştiriciler uygulamalarını geliştirebilir ve test edebilir, ekosistem yöneticileri ekosistemlerini yönetebilir ve kullanıcılar ekosistemlerle etkileşime girebilir.")]),a._v(" "),i("p",[a._v("Bu eğitimde, Weaver'da sözleşmeleri, sayfa şablonlarını kodlayacak ve diğer tüm eylemleri gerçekleştireceksiniz. Weaver ayrıca sözleşme kodlarını geri yüklemek, kaydetmek ve yürütmek, veri yapılarını (veritabanı tabloları) yönetmek, erişim izinleri atamak ve uygulamalar oluşturmak için bir yol sağlar.")]),a._v(" "),i("p",[a._v("Her düğümün kendi Weaver örneği vardır.")]),a._v(" "),i("h2",{attrs:{id:"_2-bolum-sozlesme"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#_2-bolum-sozlesme"}},[a._v("#")]),a._v(" 2. Bölüm: Sözleşme")]),a._v(" "),i("p",[a._v('İlk basit uygulamanız "Merhaba Dünya!"')]),a._v(" "),i("blockquote",[i("p",[a._v("Not")])]),a._v(" "),i("blockquote",[i("p",[a._v("Bu uygulamada dizeler bir veritabanı tablosunda tutulacak ve bir kullanıcı sayfası yok.")])]),a._v(" "),i("h3",{attrs:{id:"olusturucu-hesabı"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#olusturucu-hesabı"}},[a._v("#")]),a._v(" Oluşturucu hesabı")]),a._v(" "),i("p",[a._v('Geliştirici rolüne sahip hesaplara ekosistemin "kök" ayrıcalıkları atanacaktır. Varsayılan olarak, bu rol tüm eylemlere erişebilir. Yeni bir ekosistemde, oluşturucu hesaba, ekosistemde yeni uygulamalar ve veritabanı tabloları oluşturmak gibi büyük değişiklikler yapmak için kullanmanız gereken Yönetici rolü atanacaktır.')]),a._v(" "),i("p",[a._v("İçerik oluşturucu hesabını kullanarak ekosisteme giriş yapın.")]),a._v(" "),i("h3",{attrs:{id:"yeni-uygulama"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#yeni-uygulama"}},[a._v("#")]),a._v(" Yeni uygulama")]),a._v(" "),i("p",[a._v("Ekosistem yaratıcısı olarak oturum açtıktan sonra yeni bir uygulama oluşturabilirsiniz.")]),a._v(" "),i("p",[a._v("Yeni bir Uygulama Yarat:")]),a._v(" "),i("ol",[i("li",[i("p",[a._v("Geliştirici sekmesine gidin;")])]),a._v(" "),i("li",[i("p",[a._v("Soldaki menüden Uygulama'yı seçin;")])]),a._v(" "),i("li",[i("p",[a._v("Uygulama sayfasında Yeni'yi seçin;")])]),a._v(" "),i("li",[i("p",[a._v("Ad alanında uygulama adını belirtin;")])]),a._v(" "),i("li",[i("p",[a._v('Koşullar\'ı "doğru" olarak ayarlayın;')])])]),a._v(" "),i("p",[a._v('"true", herkesin uygulamada değişiklik yapabileceği anlamına gelir;')]),a._v(" "),i("p",[a._v("Başka bir seçenek de "),i("code",[a._v('ContractConditions("MainCondition")')]),a._v(" olup, bu, yaratıcısı dışında hiç kimsenin uygulamada değişiklik yapamayacağı anlamına gelir.")]),a._v(" "),i("ol",{attrs:{start:"6"}},[i("li",[a._v("Uygulamanız uygulamalar listesinde görüntülenecektir, etkinleştirmek için belirli bir uygulamanın Ad alanına tıklayın.")])]),a._v(" "),i("blockquote",[i("p",[a._v("Not")])]),a._v(" "),i("blockquote",[i("p",[a._v("Geliştirici sekmesinde bir uygulamaya tıklayarak ilgili kaynaklara erişebilirsiniz, ekosistem üzerinde hiçbir etkisi yoktur. Hangisini seçerseniz seçin, tüm ekosistem uygulamaları hala mevcuttur.")])]),a._v(" "),i("h3",{attrs:{id:"yeni-veritabanı-tablosu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#yeni-veritabanı-tablosu"}},[a._v("#")]),a._v(" Yeni veritabanı tablosu")]),a._v(" "),i("p",[a._v("Verileri depolamak için Weaver'da uygulama için bir veritabanı tablosu oluşturun.")]),a._v(" "),i("p",[a._v("Bir veri tablosu oluşturun:")]),a._v(" "),i("ol",[i("li",[a._v("Geliştirici sekmesinde, Uygulama - Ad > Veritabanı tablosu'nu seçin;")])]),a._v(" "),i("p",[a._v("Seçilen uygulamaya ilişkin tüm veritabanı tabloları burada görüntülenecektir. Liste boşsa, uygulamanız için henüz hiçbir veritabanı tablosu oluşturulmamıştır.")]),a._v(" "),i("ol",{attrs:{start:"2"}},[i("li",[a._v("Yeni;'ye tıklayın")])]),a._v(" "),i("p",[a._v("Weaver, yeni bir veritabanı tablosu oluşturmanız için size sayfayı gösterecektir.")]),a._v(" "),i("ol",{attrs:{start:"3"}},[i("li",[a._v("Ad alanında adı belirtin;")])]),a._v(" "),i("p",[a._v("Bu öğreticide, veritabanı tablosunun adı 'apptable' olacaktır.")]),a._v(" "),i("ol",{attrs:{start:"4"}},[i("li",[a._v('"Mesaj" sütununu ekleyin, türünü "Metin" olarak ayarlayın;')])]),a._v(" "),i("p",[a._v('Bu tablonun iki sütunu olmalıdır: "id" (ön tanımlı) ve "message". Daha sonra daha fazla sütun ekleyeceksiniz.')]),a._v(" "),i("ol",{attrs:{start:"5"}},[i("li",[a._v("Okuma ve yazma izinleriyle ilgili olarak, her alanı 'true' olarak ayarlayın;")])]),a._v(" "),i("p",[a._v("Bu, herkesin veritabanı tablosuna giriş eklemesine, girişleri güncellemesine, sütun eklemesine ve giriş verilerini okumasına olanak tanır;")]),a._v(" "),i("p",[a._v("Bir seçenek olarak, yaratıcı hesabına okuma ve yazma izinlerini ayırabilirsiniz. Bu durumda, bu alanı "),i("code",[a._v('ContractConditions("MainCondition")')]),a._v(" olarak ayarlayın.")]),a._v(" "),i("h3",{attrs:{id:"yeni-kontrat"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#yeni-kontrat"}},[a._v("#")]),a._v(" Yeni Kontrat")]),a._v(" "),i("h4",{attrs:{id:"kontrat-kodu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#kontrat-kodu"}},[a._v("#")]),a._v(" Kontrat kodu")]),a._v(" "),i("p",[a._v("Her sözleşmenin üç bölümü vardır. Daha fazla ayrıntı için lütfen bakınız: "),i("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#contract-structure"}},[a._v("Sözleşme yapısı")]),a._v("。")],1),a._v(" "),i("h4",{attrs:{id:"bir-kontrat-olusturun"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bir-kontrat-olusturun"}},[a._v("#")]),a._v(" Bir kontrat oluşturun")]),a._v(" "),i("ol",[i("li",[a._v("Geliştirici sekmesinde, Uygulama - Ad > Kontratı seçin;")])]),a._v(" "),i("p",[a._v("Uygulama ile ilgili tüm sözleşmeler burada görüntülenecektir. Yeni uygulamalar için liste boştur.")]),a._v(" "),i("ol",{attrs:{start:"2"}},[i("li",[a._v("Yeni'yi tıklayın;")])]),a._v(" "),i("p",[a._v("Düzenleyicide yeni bir sözleşme şablonu görüntülenecektir.")]),a._v(" "),i("p",[a._v("Boş bir sözleşme şablonu aşağıdaki gibi gösterilir:")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v("contract ... {\n data {\n\n }\n conditions {\n\n }\n action {\n\n }\n}\n")])])]),i("h4",{attrs:{id:"kontrat-adı"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#kontrat-adı"}},[a._v("#")]),a._v(" Kontrat adı")]),a._v(" "),i("p",[a._v("İlk olarak, lütfen sözleşme adını belirtin.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(" contract AppContract {\n\n }\n")])])]),i("h4",{attrs:{id:"data"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[a._v("#")]),a._v(" Data")]),a._v(" "),i("p",[a._v("'data' bölümünü doldurun.")]),a._v(" "),i("p",[a._v('Aşağıdaki örnekte, "Mesaj" değişken adını belirtirken, "string" değişken türünü ifade eder.')]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(" data {\n Message string\n }\n")])])]),i("h4",{attrs:{id:"conditions"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#conditions"}},[a._v("#")]),a._v(" Conditions")]),a._v(" "),i("p",[a._v('"Koşullar" bölümünü doldurun. Basit bir doğrulama koşulu, boş dizelerden kaçınmaktır. '),i("code",[a._v("Message")]),a._v("ın uzunluğu "),i("code",[a._v("0")]),a._v(" ise, sözleşme uygulanırken önceden tanımlanmış bir uyarı mesajı tetiklenecektir.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n}\n')])])]),i("h4",{attrs:{id:"action"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#action"}},[a._v("#")]),a._v(" Action")]),a._v(" "),i("p",[a._v("'action' bölümünü doldurun. Basit bir işlem, veri tablosuna \"message\" yazmaktır.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(' action {\n DBInsert("apptable", {message: $Message})\n }\n')])])]),i("h4",{attrs:{id:"tam-kontrat-kodu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tam-kontrat-kodu"}},[a._v("#")]),a._v(" Tam kontrat kodu")]),a._v(" "),i("p",[a._v("Tam kontrat kodu aşağıda gösterilmiştir.")]),a._v(" "),i("p",[a._v('IBAX\'teki tüm kontratlar, "data", "conditons" ve "action" bölümleri dahil olmak üzere bu şekilde oluşturulacaktır.')]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('contract AppContract {\n data {\n Message string\n }\n conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n }\n action {\n DBInsert("apptable", {message: $Message})\n }\n}\n')])])]),i("h4",{attrs:{id:"kaydet-ve-calıstır"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#kaydet-ve-calıstır"}},[a._v("#")]),a._v(" Kaydet ve çalıştır")]),a._v(" "),i("p",[a._v("Şimdi, sözleşmeyi test etmeye hazırlanıyoruz:")]),a._v(" "),i("ol",[i("li",[a._v("Editörün menüsünde Kaydet'e tıklayın;")])]),a._v(" "),i("p",[a._v("Bu, sözleşme kodunu güncelleyecek ve güncellenmiş sürüm tüm ağ düğümleri için geçerli olacaktır.")]),a._v(" "),i("ol",{attrs:{start:"2"}},[i("li",[a._v("Editörün menüsünde Çalıştır'a tıklayın;")])]),a._v(" "),i("p",[a._v("Bu, Sözleşmeyi Çalıştır sayfasını görüntüler.")]),a._v(" "),i("ol",{attrs:{start:"3"}},[i("li",[a._v("Sözleşmeyi Çalıştır sayfasında, sözleşmenin giriş parametrelerini girin;")])]),a._v(" "),i("p",[a._v('Bu sözleşmenin bir "Message" parametresi olduğundan, Anahtar alanına "Message" ve Değer alanına "Merhaba, Dünya"yı ayarlayın.')]),a._v(" "),i("ol",{attrs:{start:"4"}},[i("li",[a._v("Çalıştır'a tıklayın.")])]),a._v(" "),i("p",[a._v("Sonuç sağda görüntülenecektir.")]),a._v(" "),i("p",[a._v("Bazı diziler başarıyla eklendiyse, sonuç, işlemlerin değişikliğini tanıtmak için blok kimliğini ve sonuç kodunu içerecektir.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('{\n "block": "31",\n "result": null\n}\n')])])]),i("h2",{attrs:{id:"bolum-3-sayfa"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bolum-3-sayfa"}},[a._v("#")]),a._v(" Bölüm 3: Sayfa")]),a._v(" "),i("p",[a._v("Sözleşme yürürlüğe girdiğinde, onu yararlı bir şeye genişletmenin zamanı geldi. Bu bölümde, UI ve diğer işlevleri uygulayacaksınız.")]),a._v(" "),i("p",[a._v("Not")]),a._v(" "),i("p",[a._v("Bu uygulamada, dizeler, bir günlükteki girişler gibi bir veritabanı tablosunda saklanacaktır. Her dizenin bir yazarı ve zaman damgası olacaktır.")]),a._v(" "),i("p",[a._v("Kullanıcılar, daha sonra basit bir form olarak gösterilen uygulama sayfasında saklanan dizelerin listesini görüntüleyebilir.")]),a._v(" "),i("h3",{attrs:{id:"new-field"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#new-field"}},[a._v("#")]),a._v(" New field")]),a._v(" "),i("p",[a._v("Öncekinde olduğu gibi, Geliştirici sekmesi > Uygulama - Ad > Veritabanı tablosu sayfasında veritabanı tablosunu düzenleyin;")]),a._v(" "),i("p",[i("code",[a._v("apptable")]),a._v(" içine aşağıdaki alanları ekleyin:")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("author")]),a._v(" , "),i("code",[a._v("Number")]),a._v(" alan türü, Değiştir'i "),i("code",[a._v("true")]),a._v(" olarak ayarlayın;")])]),a._v(" "),i("p",[a._v("Bu alan, author hesabının tanımlayıcısını saklayacaktır.")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("timestamp")]),a._v(" , "),i("code",[a._v("Date/Time")]),a._v(" alan türü, Change'i 'true' olarak ayarlayın.")])]),a._v(" "),i("h3",{attrs:{id:"kontratı-guncelleyin"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#kontratı-guncelleyin"}},[a._v("#")]),a._v(" Kontratı güncelleyin")]),a._v(" "),i("p",[a._v("AuthorID ve timestamp işlemek için kontrat kodunu güncelleyeceğiz.")]),a._v(" "),i("p",[a._v("Yazar kimliği, ekosistemin hesap kimliğidir. Timestamp, sözleşmenin Unix zaman biçiminde yürütüldüğü tarih ve saattir.")]),a._v(" "),i("p",[a._v("Her iki değer de "),i("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#variables"}},[a._v("Önceden tanımlanmış değişkenler")]),a._v(" tarafından sağlandığından ve önceden tanımlanmış değişkenlerin girilmesine veya doğrulanmasına gerek olmadığından, bunlar yalnızca işlem bölümünde güncellenebilir.")],1),a._v(" "),i("p",[a._v('AuthorID "$key_id", timestamp ise "$time" ile tanımlandığı bir mesaj eklerken veritabanı tablosuna AuthorID ve timestamp yazmak için sözleşmeyi güncelleyin.')]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('action {\n DBInsert("apptable", {message: $Message, author: $key_id, timestamp: $time})\n}\n')])])]),i("h3",{attrs:{id:"sayfa"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#sayfa"}},[a._v("#")]),a._v(" Sayfa")]),a._v(" "),i("p",[a._v("Uygulama sayfası için, veritabanı tablosunda saklanan mesajların görüntülendiği basit bir sayfadır.")]),a._v(" "),i("p",[a._v("Diğer tüm kaynaklar gibi, UI sayfasını Weaver'da oluşturabilirsiniz:")]),a._v(" "),i("p",[a._v("1.Geliştirici sekmesine gidin, Uygulama - Ad > Sayfa'yı tıklayın;")]),a._v(" "),i("ol",{attrs:{start:"2"}},[i("li",[a._v("Yeni'yi tıklayın;\nGörsel tasarımcı yeni bir sekmede açılacaktır.")])]),a._v(" "),i("h4",{attrs:{id:"tasarımcı-gorunumleri"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tasarımcı-gorunumleri"}},[a._v("#")]),a._v(" Tasarımcı görünümleri")]),a._v(" "),i("p",[a._v("Varsayılan sayfa boş. Sayfayı hızlı bir şekilde doldurmak için önceden tanımlanmış yapıyı kullanabilirsiniz.")]),a._v(" "),i("p",[a._v("Temel bir tablo oluşturun:")]),a._v(" "),i("ol",[i("li",[i("p",[a._v("Sağdaki görünüm seçicide Tasarımcı'yı tıklayın;\nGörünüm, görsel tasarımcıya geçecektir.")])]),a._v(" "),i("li",[i("p",[a._v("Soldaki menüde Başlıklı Tablo'yu seçin ve sayfaya sürükleyin.\nSayfada birden çok öğeye sahip bir tablo görüntülenecektir.")])])]),a._v(" "),i("h4",{attrs:{id:"gelistirici-gorunumu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#gelistirici-gorunumu"}},[a._v("#")]),a._v(" Geliştirici görünümü")]),a._v(" "),i("p",[a._v("IBAX'in kullanıcı sayfası bir "),i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html"}},[a._v("Şablon Dili")]),a._v(" ile kodlandığından, sayfa kodunu yazarken lütfen Geliştirici görünümüne geçin.")],1),a._v(" "),i("p",[a._v("Geliştirici görünümüne geçin.")]),a._v(" "),i("ol",[i("li",[a._v("Sağdaki görünüm seçicide Geliştirici'ye tıklayın.")])]),a._v(" "),i("p",[a._v("Görünüm, sayfa kodunu tutan bir sekme ile düzenleyiciye geçecektir.")]),a._v(" "),i("h4",{attrs:{id:"veritabanı-tablosundan-veri-alın"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#veritabanı-tablosundan-veri-alın"}},[a._v("#")]),a._v(" Veritabanı tablosundan veri alın")]),a._v(" "),i("p",[a._v("Şimdiye kadar, sayfa şablonuyla hiçbir şey yapılmadı. Bir sonraki adımda, sayfanın "),i("code",[a._v("apptable")]),a._v("dan veri görüntülemesine izin vermek için kodu güncelleyeceğiz.")]),a._v(" "),i("ol",[i("li",[i("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbfind"}},[a._v("DBFind")]),a._v(" işleviyle veritabanı tablosundan veri istemek için;")],1)]),a._v(" "),i("p",[a._v("Aşağıdaki örnekte, bu işlev çağrısı "),i("code",[a._v("apptable")]),a._v("dan veri almak için kullanılır. Veriler, kaynak "),i("code",[a._v("src_table")]),a._v(" içine yerleştirilecek ve zaman damgası alanına göre sıralanacaktır. "),i("code",[a._v("src_table")]),a._v(" daha sonra tablo görünümündeki sayfa için veri kaynağı olarak kullanılacaktır.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(' DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n')])])]),i("ol",{attrs:{start:"2"}},[i("li",[i("code",[a._v("src_table")]),a._v("dan gelen verileri görüntülemek için, bunu "),i("code",[a._v("Table")]),a._v(" işlevinde veri kaynağı ve başlık olarak belirtin.")])]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(' Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n')])])]),i("ol",{attrs:{start:"3"}},[i("li",[a._v("Sağdaki görüntü seçmede, verileri doğru görüntüleyip kontrol etme için önizleme'ye tıklayın.")])]),a._v(" "),i("h4",{attrs:{id:"tam-sayfa-kodu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tam-sayfa-kodu"}},[a._v("#")]),a._v(" Tam sayfa kodu")]),a._v(" "),i("p",[a._v("Bu bölümün tam sayfa kodu aşağıdadır. Bu temel sayfa daha sonra genişletilecektir.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n\nDiv(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n Button(Class: btn btn-primary, Contract: ContractName, Body: More)\n }\n}\n\n')])])]),i("h4",{attrs:{id:"sayfayı-kaydedin"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#sayfayı-kaydedin"}},[a._v("#")]),a._v(" Sayfayı kaydedin")]),a._v(" "),i("p",[a._v("Sayfayı kaydetmek için Kaydet'e tıklayın:")]),a._v(" "),i("ol",[i("li",[i("p",[a._v("Sayfa Adı alanında "),i("code",[a._v("AppPage")]),a._v(" veya sayfa için başka bir ad belirtin;")])]),a._v(" "),i("li",[i("p",[a._v("Menüde "),i("code",[a._v("default_menu")]),a._v(" öğesini seçin;")])]),a._v(" "),i("li",[i("p",[a._v("Koşullar'ı "),i("code",[a._v("true")]),a._v(" olarak ayarlayın;")])]),a._v(" "),i("li",[i("p",[a._v("Tamam'a tıklayın.")])])]),a._v(" "),i("h2",{attrs:{id:"bolum-4-uygulama"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bolum-4-uygulama"}},[a._v("#")]),a._v(" Bölüm 4: Uygulama")]),a._v(" "),i("p",[a._v("Önceki bölümlerde bir sözleşme, verileri depolamak için bir tablo ve bu verileri görüntülemek için temel bir kullanıcı arayüzü sayfası oluşturdunuz.")]),a._v(" "),i("p",[a._v("Bu bölümde, görünüşünü ve eylemlerinin gerçek olana benzer olmasını sağlamak için uygulamayı sonlandıracaksınız.")]),a._v(" "),i("h3",{attrs:{id:"menu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#menu"}},[a._v("#")]),a._v(" Menü")]),a._v(" "),i("p",[a._v("Sayfanın bir menüye bağlanması gerekir; örneğin, Ana Sayfa sekmesinde görüntülenen "),i("code",[a._v("default_page")]),a._v(", varsayılan ekosistem menüsü "),i("code",[a._v("default_menu")]),a._v(" ile bağlantılıdır.")]),a._v(" "),i("p",[a._v("Bu uygulama öğreticisi çok basit olduğundan (yalnızca bir sayfaya sahip olduğundan), bunun için ayrı bir menü oluşturmaya gerek yoktur. Varsayılan menüdeki yeni menü öğesi yeterlidir.")]),a._v(" "),i("blockquote",[i("p",[a._v("Not")])]),a._v(" "),i("blockquote",[i("p",[a._v("Geliştirici sekmesi > Uygulama - Ad > Sayfa'da sayfa özelliklerini düzenleyerek sayfa menüsünü tanımlayabilirsiniz. Örneğin, uygulamanızın birden fazla sayfası varsa, bu sayfalar arasında gezinmek için bir menü oluşturmanız ve bunu uygulamanın tüm sayfalarına atamanız gerekebilir.")])]),a._v(" "),i("h4",{attrs:{id:"bir-menu-ogesi-ekleyin"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bir-menu-ogesi-ekleyin"}},[a._v("#")]),a._v(" Bir menü öğesi ekleyin")]),a._v(" "),i("p",[a._v("Diğer tüm kaynaklar gibi, menüler de Weaver'da oluşturulabilir ve düzenlenebilir:")]),a._v(" "),i("ol",[i("li",[i("p",[a._v("Geliştirici sekmesi > Menü'ye gidin;")])]),a._v(" "),i("li",[i("p",[i("code",[a._v("default_menu")]),a._v(" girişinin Adını tıklayın;")])])]),a._v(" "),i("p",[a._v("Editörde yeni bir sekme açılacaktır.")]),a._v(" "),i("ol",{attrs:{start:"3"}},[i("li",[a._v("Şablonun sonuna, uygulama sayfasını açmak için bağlanacak yeni bir menü öğesi ekleyin ve simgesi "),i("a",{attrs:{href:"https://fontawesome.com/icons",target:"_blank",rel:"noopener noreferrer"}},[a._v("FontAwesome"),i("OutboundLink")],1),a._v(" simge setinden gelir.")])]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v(' MenuItem(Title:Messages, Page:AppPage, Icon:"fa fa-envelope")\n')])])]),i("ol",{attrs:{start:"4"}},[i("li",[a._v("Kaydet'e tıklayın.")])]),a._v(" "),i("h4",{attrs:{id:"yeni-menu-ogesini-test-edin"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#yeni-menu-ogesini-test-edin"}},[a._v("#")]),a._v(" Yeni menü öğesini test edin")]),a._v(" "),i("p",[a._v("Yeni menü öğesinin geçerli olup olmadığını kontrol edin:")]),a._v(" "),i("ol",[i("li",[i("p",[a._v("Giriş sekmesini açın;")])]),a._v(" "),i("li",[i("p",[a._v("Menüde Yenile'ye tıklayın;")]),a._v(" "),i("p",[a._v("Mesaj başlığına sahip bir giriş görünecektir;")])]),a._v(" "),i("li",[i("p",[a._v("Mesajlar'a tıklayın.")]),a._v(" "),i("p",[a._v("Başvuru sayfası açılacaktır.")])])]),a._v(" "),i("h3",{attrs:{id:"bir-mesaj-gondermek"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#bir-mesaj-gondermek"}},[a._v("#")]),a._v(" Bir mesaj göndermek")]),a._v(" "),i("p",[a._v("Logicor'daki düğmeler, parametrelere bağlı olarak sözleşmeleri uygulamak ve sayfaları açmak için kullanılabilir.")]),a._v(" "),i("p",[i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#button"}},[a._v("Button")]),a._v(" işlevinin iki sözleşme parametresi vardır:")],1),a._v(" "),i("ul",[i("li",[i("p",[i("code",[a._v("Contract")])]),a._v(" "),i("p",[a._v("Etkinleştirilen sözleşmenin adı.")])]),a._v(" "),i("li",[i("p",[i("code",[a._v("Params")])]),a._v(" "),i("p",[a._v("Sözleşmenin giriş parametreleri.")])])]),a._v(" "),i("h4",{attrs:{id:"form"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[a._v("#")]),a._v(" Form")]),a._v(" "),i("p",[a._v("Sözleşmeye veri göndermek için, başvuru sayfasına bir mesaj için bir giriş alanına ve sözleşmeyi AppContract'ı etkinleştirmek için bir düğmeye sahip olması gereken bir form ekleyin.")]),a._v(" "),i("p",[a._v("Aşağıda bu tür bir formun bir örneği verilmiştir. Kendi "),i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#div"}},[a._v("Div")]),a._v(" içinde yuvalanmıştır. "),i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#input"}},[a._v("Girdi")]),a._v(' alanının önceden tanımlanmış bir "message_input" ada sahip olduğunu tanımlayan form görünümünü içeren Div öğesinin arkasına koymak. Düğme, sözleşmeye '),i("code",[a._v("Mesaj")]),a._v(" değerini göndermek için bu ismi kullanır. Son olarak, giriş alanının değerini almak için "),i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#calling-contracts"}},[a._v("Val")]),a._v(" işlevi kullanılır.")],1),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)")\n }\n}\n')])])]),i("p",[a._v("Bu yeni özelliği mesaj göndererek test ederken formun yenilenmediğini fark edebilirsiniz. Bu, "),i("a",{attrs:{href:"#page-refreshing"}},[a._v("sayfa yenilemede")]),a._v(" tanıtılacaktır.")]),a._v(" "),i("h3",{attrs:{id:"formda-gezinme"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#formda-gezinme"}},[a._v("#")]),a._v(" Formda gezinme")]),a._v(" "),i("p",[a._v("Varsayılan görünümde, sayfadaki form ilk sayfada yalnızca 25 girdi görüntüleyebilir. Bu nedenle, kullanıcıları tüm form girişlerine yönlendirmek için bazı basit düğmeler ekleyebilirsiniz.")]),a._v(" "),i("h4",{attrs:{id:"yon-butonları"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#yon-butonları"}},[a._v("#")]),a._v(" Yön butonları")]),a._v(" "),i("p",[a._v("İki gezinme butonu olacak ve her biri uygulama sayfasını yeniden yükleyebilir ve parametreleri ona iletebilir.")]),a._v(" "),i("ul",[i("li",[i("p",[a._v("Önceki buton ilk 25 girişi görüntüleyecektir. Başka giriş yoksa buton görüntülenmez;")])]),a._v(" "),i("li",[i("p",[a._v("Sonraki butonunda sonraki 25 girişi görüntüleyecektir. Başka giriş yoksa, buton görüntülenmez.")])])]),a._v(" "),i("h4",{attrs:{id:"degiskenler"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#degiskenler"}},[a._v("#")]),a._v(" Değişkenler")]),a._v(" "),i("p",[a._v("Gezinme düğmeleri, tablo görünümü durumlarını depolamak için iki değişken gerektirir:")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("#table_view_offset#")])])]),a._v(" "),i("p",[a._v("Bu değişken, mevcut tablo görünümünün ofsetini saklar.")]),a._v(" "),i("p",[a._v("Sayfa yeniden yüklendiğinde gezinme düğmeleri bunu bir parametre olarak iletecektir.")]),a._v(" "),i("ul",[i("li",[i("code",[a._v("#record_count#")])])]),a._v(" "),i("p",[a._v("Bu değişken, tablodaki toplam giriş sayısını saklar.")]),a._v(" "),i("p",[a._v("Değer hesaplanacaktır.")]),a._v(" "),i("h4",{attrs:{id:"giris-sayısı"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#giris-sayısı"}},[a._v("#")]),a._v(" Giriş sayısı")]),a._v(" "),i("p",[i("code",[a._v("#record_count#")]),a._v(" saymak için lütfen mevcut "),i("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbfind"}},[a._v("DBFind")]),a._v(" işlev çağrısını değiştirin. "),i("code",[a._v(".count()")]),a._v(" çağrısında belirtilen değişken, giriş sayısını saklayacaktır.")],1),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count)\n')])])]),i("h4",{attrs:{id:"tablo-ofseti"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tablo-ofseti"}},[a._v("#")]),a._v(" Tablo ofseti")]),a._v(" "),i("p",[a._v("Sayfa açıldığında tablo görünümü ofseti sayfaya geçirilmelidir. "),i("code",[a._v("#table_view_offset#")]),a._v(" bir değer almazsa 0 olarak ayarlayın.")]),a._v(" "),i("p",[a._v("Aşağıdaki kodu sayfanın en üstüne ekleyin.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v("If(GetVar(table_view_offset)){\n\n}.Else{\n SetVar(table_view_offset, 0)\n}\n")])])]),i("p",[i("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbfind"}},[a._v("DBFind")]),a._v(" işlev çağrısını yeniden değiştirin. Bu sefer yeni tablo görünümü ofsetini kullanmalıdır.")],1),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n')])])]),i("h4",{attrs:{id:"buton-kodu"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#buton-kodu"}},[a._v("#")]),a._v(" Buton kodu")]),a._v(" "),i("p",[a._v("Find the "),i("RouterLink",{attrs:{to:"/tr-TR/topics/templates2.html#div"}},[a._v("Div")]),a._v(" function call that defines the footer: "),i("code",[a._v("Div(Class:panel-footer text-right)")]),a._v(". Add the button code into it.")],1),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v("Div(Class: panel-footer text-right) {\n}\n")])])]),i("p",[i("em",[a._v("Previous")]),a._v(" düğmesi yalnızca geri dönülecek en az bir Sonraki varsa görünür. Bir düğme eklerken, sayfanın yeni tablo görünümü ofset 'offset_previous' hesaplanacaktır. Parametreler, yeniden açılan sayfanın 'PageParams'ına iletilir.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n}\n')])])]),i("p",[a._v("Sonraki düğmesi, yalnızca toplam kayıt sayısı sayfada görüntülenen sayıdan fazla olduğunda görüntülenecektir. Bir düğme eklendiğinde, sayfanın yeni tablo görünümü ofset 'offset_next' hesaplanacaktır. Parametreler, yeniden açılan sayfanın 'PageParams'ına iletilir.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n}\n')])])]),i("p",[a._v("Bu düğmeleri ekledikten sonra sayfayı kaydedin ve Ana Sayfa > Mesajlar menü öğesinden test edin.")]),a._v(" "),i("h4",{attrs:{id:"sayfa-yenileme"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#sayfa-yenileme"}},[a._v("#")]),a._v(" Sayfa yenileme")]),a._v(" "),i("p",[a._v("Uygulanacak son işlev, sayfadaki tabloyu otomatik olarak güncellemektir. Kullanıcılar yeni bir mesaj gönderdiğinde, tabloda görüntülenmelidir.")]),a._v(" "),i("p",[a._v("Sözleşmeyi uygulamaya ek olarak, aynısını elde etmek için mevcut sayfayı yeniden açmak için Gönder düğmesini de kullanabilirsiniz. "),i("code",[a._v("#table_view_offset#")]),a._v(" sayfaya herhangi bir değişiklik yapılmadan geçirilmelidir.")]),a._v(" "),i("p",[a._v("Gönder düğmesine "),i("code",[a._v("Page")]),a._v(" ve "),i("code",[a._v("PageParams")]),a._v(" ekleyin, kod aşağıdaki gibidir:")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n')])])]),i("h3",{attrs:{id:"tam-sayfa-kodu-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#tam-sayfa-kodu-2"}},[a._v("#")]),a._v(" Tam sayfa kodu")]),a._v(" "),i("p",[a._v("Bu bölüm, uygulama sayfasındaki birçok değişikliği açıklar. Uygulama sayfasının tam kodu aşağıdadır.")]),a._v(" "),i("div",{staticClass:"language- extra-class"},[i("pre",{pre:!0,attrs:{class:"language-text"}},[i("code",[a._v('If(GetVar(table_view_offset)){\n}.Else{\n SetVar(table_view_offset, 0)\n}\nDBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n Div(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n }\n If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n }\n }\n }\n Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n }\n}\n')])])]),i("h2",{attrs:{id:"sonuclar"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#sonuclar"}},[a._v("#")]),a._v(" Sonuçlar")]),a._v(" "),i("p",[a._v("Uygulama geliştiriciler için yerleşim stilleri, erişim izinleri yönetimi ve uygulamalar ve kaynaklar arasındaki etkileşim gibi diğer önemli konuları açıklamak yerine, bu öğretici bir ekosistem için temel bir uygulamanın nasıl oluşturulacağını anlatır. Bu ileri düzey konular hakkında daha fazla bilgi için diğer ilgili belgelere bakın.")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/13.845b3ac4.js b/assets/js/13.32bb9e8c.js similarity index 97% rename from assets/js/13.845b3ac4.js rename to assets/js/13.32bb9e8c.js index d96ab8d..c09bbf2 100644 --- a/assets/js/13.845b3ac4.js +++ b/assets/js/13.32bb9e8c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{393:function(t,e,r){"use strict";r.r(e);var a=r(51),n=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"ibax-dokumentation"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#ibax-dokumentation"}},[t._v("#")]),t._v(" IBAX Dokumentation")]),t._v(" "),r("h2",{attrs:{id:"konzept"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#konzept"}},[t._v("#")]),t._v(" Konzept")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html"}},[t._v("IBAX Überblick")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/concepts/blockchain-layers.html"}},[t._v("The IBAX Netzwerk")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/concepts/consensus.html"}},[t._v("Konsens zum Nachweis der Autorität")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/concepts/thesaurus.html"}},[t._v("Begriffe und Definitionen")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/concepts/faq.html"}},[t._v("FAQ")])],1)]),t._v(" "),r("h2",{attrs:{id:"lernprogramm"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#lernprogramm"}},[t._v("#")]),t._v(" Lernprogramm")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/de/tutorials/app_tutorial.html"}},[t._v("Tutorial für die Anwendungsentwicklung")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),r("h2",{attrs:{id:"handbuch"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#handbuch"}},[t._v("#")]),t._v(" Handbuch")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/de/topics/script.html"}},[t._v("Intelligente Verträge")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/topics/templates2.html"}},[t._v("Vorlagensprache")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/topics/vm.html"}},[t._v("Compiler und virtuelle Maschine")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/topics/daemons.html"}},[t._v("Dämon")])],1)]),t._v(" "),r("h2",{attrs:{id:"referenz"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#referenz"}},[t._v("#")]),t._v(" Referenz")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/de/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/reference/platform-parameters.html"}},[t._v("Plattformparameter")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/reference/backend-config.html"}},[t._v("Server-Konfigurationsdatei")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/reference/desync_monitor.html"}},[t._v("Synchronisiertes Überwachungstool")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),r("h2",{attrs:{id:"einsatz"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#einsatz"}},[t._v("#")]),t._v(" Einsatz")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/de/howtos/deployment.html"}},[t._v("Bereitstellung von A IBAX Netzwerk")])],1)])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{389:function(t,e,r){"use strict";r.r(e);var a=r(51),n=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"ibax-dokumentation"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#ibax-dokumentation"}},[t._v("#")]),t._v(" IBAX Dokumentation")]),t._v(" "),r("h2",{attrs:{id:"konzept"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#konzept"}},[t._v("#")]),t._v(" Konzept")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html"}},[t._v("IBAX Überblick")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/concepts/blockchain-layers.html"}},[t._v("The IBAX Netzwerk")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/concepts/consensus.html"}},[t._v("Konsens zum Nachweis der Autorität")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/concepts/thesaurus.html"}},[t._v("Begriffe und Definitionen")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/concepts/faq.html"}},[t._v("FAQ")])],1)]),t._v(" "),r("h2",{attrs:{id:"lernprogramm"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#lernprogramm"}},[t._v("#")]),t._v(" Lernprogramm")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/de/tutorials/app_tutorial.html"}},[t._v("Tutorial für die Anwendungsentwicklung")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),r("h2",{attrs:{id:"handbuch"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#handbuch"}},[t._v("#")]),t._v(" Handbuch")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/de/topics/script.html"}},[t._v("Intelligente Verträge")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/topics/templates2.html"}},[t._v("Vorlagensprache")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/topics/vm.html"}},[t._v("Compiler und virtuelle Maschine")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/topics/daemons.html"}},[t._v("Dämon")])],1)]),t._v(" "),r("h2",{attrs:{id:"referenz"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#referenz"}},[t._v("#")]),t._v(" Referenz")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/de/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/reference/platform-parameters.html"}},[t._v("Plattformparameter")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/reference/backend-config.html"}},[t._v("Server-Konfigurationsdatei")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/reference/desync_monitor.html"}},[t._v("Synchronisiertes Überwachungstool")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/de/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),r("h2",{attrs:{id:"einsatz"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#einsatz"}},[t._v("#")]),t._v(" Einsatz")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/de/howtos/deployment.html"}},[t._v("Bereitstellung von A IBAX Netzwerk")])],1)])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/130.aacd2cdb.js b/assets/js/130.dcc3b606.js similarity index 99% rename from assets/js/130.aacd2cdb.js rename to assets/js/130.dcc3b606.js index 7b8ffa9..50b1d23 100644 --- a/assets/js/130.aacd2cdb.js +++ b/assets/js/130.dcc3b606.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[130],{511:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/tr-TR/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/tr-TR/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[130],{510:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/tr-TR/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/tr-TR/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/tr-TR/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/tr-TR/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/tr-TR/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/131.174c03f0.js b/assets/js/131.0ce33a04.js similarity index 99% rename from assets/js/131.174c03f0.js rename to assets/js/131.0ce33a04.js index 70f5943..bbbdd9c 100644 --- a/assets/js/131.174c03f0.js +++ b/assets/js/131.0ce33a04.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{509:function(e,t,a){"use strict";a.r(t);var s=a(51),n=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"tutorial-for-application-development"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tutorial-for-application-development"}},[e._v("#")]),e._v(" Tutorial for application development")]),e._v(" "),a("p",[e._v("In this section, we will show you how to develop a simple application on the IBAX Network.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-goal"}},[e._v("The Goal")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-1-the-environment"}},[e._v("Part 1: The Environment")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-2-contract"}},[e._v("Part 2: Contract")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#creator-account"}},[e._v("Creator account")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-application"}},[e._v("New application")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-database-table"}},[e._v("New database table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-contract"}},[e._v("New contract")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contract-code"}},[e._v("Contract code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#create-a-contract"}},[e._v("Create a contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("Contract name")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#conditions"}},[e._v("Conditions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#action"}},[e._v("Action")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#full-contract-code"}},[e._v("Full contract code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#save-and-run"}},[e._v("Save and run")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-3-page"}},[e._v("Part 3: Page")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#new-field"}},[e._v("New field")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#update-the-contract"}},[e._v("Update the contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page"}},[e._v("Page")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#designer-views"}},[e._v("Designer views")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#developer-view"}},[e._v("Developer view")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fetch-data-from-the-database-table"}},[e._v("Fetch data from the database table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#save-the-page"}},[e._v("Save the page")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-4-application"}},[e._v("Part 4: Application")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#menu"}},[e._v("Menu")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#add-a-menu-item"}},[e._v("Add a menu item")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#test-the-new-menu-item"}},[e._v("Test the new menu item")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#send-a-message"}},[e._v("Send a message")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#form"}},[e._v("Form")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#form-navigation"}},[e._v("Form navigation")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#navigation-buttons"}},[e._v("Navigation buttons")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#variables"}},[e._v("Variables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#entry-count"}},[e._v("Entry count")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-offset"}},[e._v("Table offset")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#button-code"}},[e._v("Button code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-refreshing"}},[e._v("Page refreshing")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#conclusions"}},[e._v("Conclusions")])])]),e._v(" "),a("h2",{attrs:{id:"the-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-goal"}},[e._v("#")]),e._v(" The Goal")]),e._v(" "),a("p",[e._v("The application begins with simple functions but grows in complexity as the tutorial progresses.")]),e._v(" "),a("p",[e._v("In the final version of the application, some simple messages (strings) are stored in a database table, which contains the timestamps and account identifiers of senders. Users can view the messages list and add a new message from the application page which can be accessed from the menu of the ecosystem.")]),e._v(" "),a("h2",{attrs:{id:"part-1-the-environment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-1-the-environment"}},[e._v("#")]),e._v(" Part 1: The Environment")]),e._v(" "),a("p",[a("strong",[e._v("Weaver")])]),e._v(" "),a("p",[e._v("As the only client of IBAX, Weaver provides functions for all users and ecosystem roles. With it, application developers can develop and test their applications, ecosystem administrators can manage their ecosystems, while users can interact with the ecosystems.")]),e._v(" "),a("p",[e._v("In this tutorial, you are going to code contracts, page templates and perform all other actions in Weaver. Weaver also provides a way to restore, save and execute contract codes, manage data structures (database tables), assign access permissions and create applications.")]),e._v(" "),a("p",[e._v("Each node has its own Weaver instance.")]),e._v(" "),a("h2",{attrs:{id:"part-2-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-2-contract"}},[e._v("#")]),e._v(" Part 2: Contract")]),e._v(" "),a("p",[e._v('Your first simple application is "Hello, World!".')]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("In this application, strings will be stored in a database table, and there is not a user page.")])]),e._v(" "),a("h3",{attrs:{id:"creator-account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creator-account"}},[e._v("#")]),e._v(" Creator account")]),e._v(" "),a("p",[e._v('Accounts with the Developer role will be assigned the "root" privileges of the ecosystem. By default, this role can access all actions. In a new ecosystem, the creator account will be assigned the Admin role, which you must use it to introduce major changes to the ecosystem, such as creating new applications and database tables.')]),e._v(" "),a("p",[e._v("Log in to the ecosystem using the creator account.")]),e._v(" "),a("h3",{attrs:{id:"new-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-application"}},[e._v("#")]),e._v(" New application")]),e._v(" "),a("p",[e._v("Once you logged in as the ecosystem creator, you can create a new application.")]),e._v(" "),a("p",[e._v("Create a new application:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Go to the Developer tab;")])]),e._v(" "),a("li",[a("p",[e._v("Select Application in the menu at the left;")])]),e._v(" "),a("li",[a("p",[e._v("Select New at the application page;")])]),e._v(" "),a("li",[a("p",[e._v("Specify the application name in the Name field;")])]),e._v(" "),a("li",[a("p",[e._v("Set Conditions to "),a("code",[e._v("true")]),e._v(";")])])]),e._v(" "),a("p",[a("code",[e._v("true")]),e._v(" means anyone can make changes to the application;")]),e._v(" "),a("p",[e._v("Another option is "),a("code",[e._v('ContractConditions("MainCondition")')]),e._v(", which means no one can make changes to the application except for the creator.")]),e._v(" "),a("ol",{attrs:{start:"6"}},[a("li",[e._v("Your application will be displayed in the applications list, click the Name field of a specific application to activate it.")])]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("You can access relevant resources by clicking an application in the Developer tab, no impact on the ecosystem. No matter which one you choose, all ecosystem applications are still available.")])]),e._v(" "),a("h3",{attrs:{id:"new-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-database-table"}},[e._v("#")]),e._v(" New database table")]),e._v(" "),a("p",[e._v("To store the data, create a database table for the application in Weaver.")]),e._v(" "),a("p",[e._v("Create a data table:")]),e._v(" "),a("ol",[a("li",[e._v("In the Developer tab, select Application - Name > Database table;")])]),e._v(" "),a("p",[e._v("All database tables in relation to the application selected will be displayed here. If the list is empty, then, no database tables have been created for your application yet.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click New;")])]),e._v(" "),a("p",[e._v("Weaver will show you the page to create a new database table.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Specify the name in the Name field;")])]),e._v(" "),a("p",[e._v("In this tutorial, the name of the database table will be "),a("code",[e._v("apptable")]),e._v(".")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Add the "),a("code",[e._v("message")]),e._v(" column, set its type as "),a("code",[e._v("Text")]),e._v(";")])]),e._v(" "),a("p",[e._v("This table must have two columns: "),a("code",[e._v("id")]),e._v(" (predefine) and "),a("code",[e._v("message")]),e._v(". You are going to add more columns later.")]),e._v(" "),a("ol",{attrs:{start:"5"}},[a("li",[e._v("With respect to the read and write permissions, set each field to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("p",[e._v("This will allow anyone to insert, update entries, add columns and read entry data on the database table;")]),e._v(" "),a("p",[e._v("As an option, you may reserve the read and write permissions to the creator account. In this case, set this field to "),a("code",[e._v('ContractConditions("MainCondition")')]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"new-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-contract"}},[e._v("#")]),e._v(" New contract")]),e._v(" "),a("h4",{attrs:{id:"contract-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-code"}},[e._v("#")]),e._v(" Contract code")]),e._v(" "),a("p",[e._v("Each contract has three parts. For more details, please see: "),a("RouterLink",{attrs:{to:"/topics/script.html#contract-structure"}},[e._v("Contract structure")]),e._v("。")],1),e._v(" "),a("h4",{attrs:{id:"create-a-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-contract"}},[e._v("#")]),e._v(" Create a contract")]),e._v(" "),a("ol",[a("li",[e._v("In the Developer tab, select Application - Name > Contract;")])]),e._v(" "),a("p",[e._v("All contracts in relation to the application will be displayed here. The list is empty for new applications.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click New;")])]),e._v(" "),a("p",[e._v("A new contract template will be displayed in the editor.")]),e._v(" "),a("p",[e._v("An empty contract template is shown as below:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("contract ... {\n data {\n\n }\n conditions {\n\n }\n action {\n\n }\n}\n")])])]),a("h4",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" Contract name")]),e._v(" "),a("p",[e._v("First, please specify the contract name.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" contract AppContract {\n\n }\n")])])]),a("h4",{attrs:{id:"data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[e._v("#")]),e._v(" Data")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("data")]),e._v(" section.")]),e._v(" "),a("p",[e._v("In the following example, "),a("code",[e._v("Message")]),e._v(" refers to the variable name, while "),a("code",[e._v("string")]),e._v(" the variable type.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" data {\n Message string\n }\n")])])]),a("h4",{attrs:{id:"conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conditions"}},[e._v("#")]),e._v(" Conditions")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("conditions")]),e._v(" section. A simple verification condition is to avoid empty strings. If the length of "),a("code",[e._v("Message")]),e._v(" is "),a("code",[e._v("0")]),e._v(", a predefined warning message will be triggered when implementing the contract.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n}\n')])])]),a("h4",{attrs:{id:"action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#action"}},[e._v("#")]),e._v(" Action")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("action")]),e._v(" section. A simple action is to write "),a("code",[e._v("Message")]),e._v(" into the data table.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' action {\n DBInsert("apptable", {message: $Message})\n }\n')])])]),a("h4",{attrs:{id:"full-contract-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-contract-code"}},[e._v("#")]),e._v(" Full contract code")]),e._v(" "),a("p",[e._v("The full contract code is shown below.")]),e._v(" "),a("p",[e._v("All contracts in IBAX will be constructed like this, including the "),a("code",[e._v("data")]),e._v(", "),a("code",[e._v("conditions")]),e._v(" and "),a("code",[e._v("action")]),e._v(" sections.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('contract AppContract {\n data {\n Message string\n }\n conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n }\n action {\n DBInsert("apptable", {message: $Message})\n }\n}\n')])])]),a("h4",{attrs:{id:"save-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-and-run"}},[e._v("#")]),e._v(" Save and run")]),e._v(" "),a("p",[e._v("Now, we are preparing to test the contract:")]),e._v(" "),a("ol",[a("li",[e._v("Click Save in the editor's menu;")])]),e._v(" "),a("p",[e._v("This will update the contract code, and the updated version will be available to all network nodes.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click Run in the editor's menu;")])]),e._v(" "),a("p",[e._v("This will display the Run the Contract page.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("In the Run the Contract page, fill in the input parameters of the contract;")])]),e._v(" "),a("p",[e._v("As this contract has one parameter "),a("code",[e._v("Message")]),e._v(", set "),a("code",[e._v("Message")]),e._v(" at the Key field and "),a("code",[e._v("Hello, World")]),e._v(" at the Value field.")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Click Run.")])]),e._v(" "),a("p",[e._v("The result will be displayed at the right.")]),e._v(" "),a("p",[e._v("If successfully added some strings, then, the result will contain the block ID and result code to introduce the change of transactions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "block": "31",\n "result": null\n}\n')])])]),a("h2",{attrs:{id:"part-3-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-3-page"}},[e._v("#")]),e._v(" Part 3: Page")]),e._v(" "),a("p",[e._v("When the contract becomes effective, it is time to extend it to something useful. In this part, you are going to implement the UI and other functions.")]),e._v(" "),a("p",[e._v("Note")]),e._v(" "),a("p",[e._v("In this application, strings will be stored in a database table, like entries in a log. Each string will have an author and timestamp.")]),e._v(" "),a("p",[e._v("Users can view the list of strings stored at the application page, which is shown as a simple form then.")]),e._v(" "),a("h3",{attrs:{id:"new-field"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-field"}},[e._v("#")]),e._v(" New field")]),e._v(" "),a("p",[e._v("As with the previous, edit the database table at the Developer tab > Application - Name > Database table page;")]),e._v(" "),a("p",[e._v("Add the following fields into "),a("code",[e._v("apptable")]),e._v(":")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("author")]),e._v(" , field type "),a("code",[e._v("Number")]),e._v(", set Change to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("p",[e._v("This field will store the identifier of the author account.")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("timestamp")]),e._v(" , field type "),a("code",[e._v("Date/Time")]),e._v(", set Change to "),a("code",[e._v("true")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"update-the-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-the-contract"}},[e._v("#")]),e._v(" Update the contract")]),e._v(" "),a("p",[e._v("We will update the contract code to handle the author ID and timestamp.")]),e._v(" "),a("p",[e._v("The author ID is the account ID of the ecosystem. The timestamp is the date and time executing the contract in Unix time format.")]),e._v(" "),a("p",[e._v("As both values are provided by the "),a("RouterLink",{attrs:{to:"/topics/script.html#variables"}},[e._v("Predefined variables")]),e._v(" and no need to input or verify the predefined variables, they can only be updated in the action part.")],1),e._v(" "),a("p",[e._v("Update the contract to write the author ID and timestamp into the database table when adding a message, among which the author ID is defined by "),a("code",[e._v("$key_id")]),e._v(", while the timestamp by "),a("code",[e._v("$time")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('action {\n DBInsert("apptable", {message: $Message, author: $key_id, timestamp: $time})\n}\n')])])]),a("h3",{attrs:{id:"page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page"}},[e._v("#")]),e._v(" Page")]),e._v(" "),a("p",[e._v("For the application page, it is a simple page where displays the messages stored in the database table.")]),e._v(" "),a("p",[e._v("Like all other resources, you can create the UI page in Weaver:")]),e._v(" "),a("p",[e._v("1.Navigate to the Developer tab, click Application - Name > Page;")]),e._v(" "),a("p",[e._v("2.Click New;\nThe visual designer will be opened in a new tab.")]),e._v(" "),a("h4",{attrs:{id:"designer-views"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#designer-views"}},[e._v("#")]),e._v(" Designer views")]),e._v(" "),a("p",[e._v("The default page is empty. You can use the predefine structure to quickly fill in the page.")]),e._v(" "),a("p",[e._v("Create a basic table:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("In the view selector at the right, click Designer;\nThe view will be switched to the visual designer.")])]),e._v(" "),a("li",[a("p",[e._v("In the menu at the left, select Table With Header and drag it on to the page.\nA table with multiple elements will be displayed on the page.")])])]),e._v(" "),a("h4",{attrs:{id:"developer-view"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#developer-view"}},[e._v("#")]),e._v(" Developer view")]),e._v(" "),a("p",[e._v("As the user page of IBAX is coded with a "),a("RouterLink",{attrs:{to:"/topics/templates2.html"}},[e._v("Template Language")]),e._v(", please switch to the Developer view when writing the page code.")],1),e._v(" "),a("p",[e._v("Switch to the Developer view.")]),e._v(" "),a("ol",[a("li",[e._v("In the view selector at the right, click Developer.")])]),e._v(" "),a("p",[e._v("The view will be switched to the editor with a tab holding the page code.")]),e._v(" "),a("h4",{attrs:{id:"fetch-data-from-the-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-data-from-the-database-table"}},[e._v("#")]),e._v(" Fetch data from the database table")]),e._v(" "),a("p",[e._v("So far, nothing done with the page template. In the next, we will update the code to allow the page to display data from "),a("code",[e._v("apptable")]),e._v(".")]),e._v(" "),a("ol",[a("li",[e._v("To request data from the database table with the "),a("RouterLink",{attrs:{to:"/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function;")],1)]),e._v(" "),a("p",[e._v("In the following example, this function call is used to fetch data from "),a("code",[e._v("apptable")]),e._v(". The data will be put it in the source "),a("code",[e._v("src_table")]),e._v(" and sorted by the timestamp field. "),a("code",[e._v("src_table")]),e._v(" will be later used as the data source for the page in table view.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n')])])]),a("ol",{attrs:{start:"2"}},[a("li",[e._v("To display the data from "),a("code",[e._v("src_table")]),e._v(", specify it as the data source and the header in the "),a("code",[e._v("Table")]),e._v(" function.")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n')])])]),a("ol",{attrs:{start:"3"}},[a("li",[e._v("In the view selector at the right, click Preview to check whether the data is displayed correctly.")])]),e._v(" "),a("h4",{attrs:{id:"full-page-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-page-code"}},[e._v("#")]),e._v(" Full page code")]),e._v(" "),a("p",[e._v("The following is the full page code for this part. This basic page will be expanded later.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n\nDiv(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n Button(Class: btn btn-primary, Contract: ContractName, Body: More)\n }\n}\n\n')])])]),a("h4",{attrs:{id:"save-the-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-the-page"}},[e._v("#")]),e._v(" Save the page")]),e._v(" "),a("p",[e._v("Click Save to save the page:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Specify "),a("code",[e._v("AppPage")]),e._v(" or any other name for the page in the Page Name field;")])]),e._v(" "),a("li",[a("p",[e._v("Select "),a("code",[e._v("default_menu")]),e._v(" in the Menu;")])]),e._v(" "),a("li",[a("p",[e._v("Set Conditions to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Click OK.")])])]),e._v(" "),a("h2",{attrs:{id:"part-4-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-4-application"}},[e._v("#")]),e._v(" Part 4: Application")]),e._v(" "),a("p",[e._v("In the previous sections, you created a contract, a table to store data, and a basic UI page to display that data.")]),e._v(" "),a("p",[e._v("In this part, you are going to finalize the application to make its appearance and actions are similar to an actual one.")]),e._v(" "),a("h3",{attrs:{id:"menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#menu"}},[e._v("#")]),e._v(" Menu")]),e._v(" "),a("p",[e._v("The page needs to be linked to a menu, for example, "),a("code",[e._v("default_page")]),e._v(" displayed on the Home tab is linked to the default ecosystem menu "),a("code",[e._v("default_menu")]),e._v(".")]),e._v(" "),a("p",[e._v("As this application tutorial is very simple (only having one page), there is no need to create a separate menu for it. The new menu item in the default menu is sufficient.")]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("You can define the page menu by editing the page properties at the Developer tab > Application - Name > Page. For example, if your app has multiple pages, you may need to create a menu to navigate between these pages and assign it to all pages of the app.")])]),e._v(" "),a("h4",{attrs:{id:"add-a-menu-item"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-a-menu-item"}},[e._v("#")]),e._v(" Add a menu item")]),e._v(" "),a("p",[e._v("Like all other resources, menus can be created and edited in Weaver:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Navigate to the Developer tab > Menu;")])]),e._v(" "),a("li",[a("p",[e._v("Click the Name of the "),a("code",[e._v("default_menu")]),e._v(" entry;")])])]),e._v(" "),a("p",[e._v("A new tab will be opened in the editor.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Add a new menu item to the end of the template, which will be linked to open the application page and its icon comes from the "),a("a",{attrs:{href:"https://fontawesome.com/icons",target:"_blank",rel:"noopener noreferrer"}},[e._v("FontAwesome"),a("OutboundLink")],1),e._v(" icon set.")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' MenuItem(Title:Messages, Page:AppPage, Icon:"fa fa-envelope")\n')])])]),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Click Save.")])]),e._v(" "),a("h4",{attrs:{id:"test-the-new-menu-item"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#test-the-new-menu-item"}},[e._v("#")]),e._v(" Test the new menu item")]),e._v(" "),a("p",[e._v("Check whether the new menu item is valid:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Open the Home tab;")])]),e._v(" "),a("li",[a("p",[e._v("Click Refresh in the menu;")]),e._v(" "),a("p",[e._v("An entry with a header of Messages will appear;")])]),e._v(" "),a("li",[a("p",[e._v("Click Messages.")]),e._v(" "),a("p",[e._v("The application page will be opened.")])])]),e._v(" "),a("h3",{attrs:{id:"send-a-message"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-a-message"}},[e._v("#")]),e._v(" Send a message")]),e._v(" "),a("p",[e._v("The buttons in Logicor can be used to implement contracts and open pages, depending on the parameters.")]),e._v(" "),a("p",[e._v("The "),a("RouterLink",{attrs:{to:"/topics/templates2.html#button"}},[e._v("Button")]),e._v(" function has two contract parameters:")],1),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("Contract")])]),e._v(" "),a("p",[e._v("Name of the contract activated.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("Params")])]),e._v(" "),a("p",[e._v("Input parameters of the contract.")])])]),e._v(" "),a("h4",{attrs:{id:"form"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),a("p",[e._v("To send data to the contract, add a form on the application page, which must have an input field for a message and a button to activate the contract AppContract.")]),e._v(" "),a("p",[e._v("The following is an example of this type of form. It is nested in its own "),a("RouterLink",{attrs:{to:"/topics/templates2.html#div"}},[e._v("Div")]),e._v(". Putting it after the Div element that contains the form view, which defines that the "),a("RouterLink",{attrs:{to:"/topics/templates2.html#input"}},[e._v("Input")]),e._v(" field has a predefine name "),a("code",[e._v("message_input")]),e._v(". The button uses this name to send the value of "),a("code",[e._v("Message")]),e._v(" to the contract. Finally, the "),a("RouterLink",{attrs:{to:"/topics/templates2.html#calling-contracts"}},[e._v("Val")]),e._v(" function is used to get the value of the input field.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)")\n }\n}\n')])])]),a("p",[e._v("You may notice that when testing this new feature by sending a message, the form does not refresh. This will be introduced in "),a("a",{attrs:{href:"#page-refreshing"}},[e._v("page refresh")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"form-navigation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#form-navigation"}},[e._v("#")]),e._v(" Form navigation")]),e._v(" "),a("p",[e._v("Under the default view, the form on the page can only display 25 entries on the first page. Hence, you can add some simple buttons to navigate users to all form entries.")]),e._v(" "),a("h4",{attrs:{id:"navigation-buttons"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#navigation-buttons"}},[e._v("#")]),e._v(" Navigation buttons")]),e._v(" "),a("p",[e._v("There will be two navigation buttons, and each of them could reload the application page and pass the parameters to it.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The Previous button will display the first 25 entries. If there are no other entries, the button will not be displayed;")])]),e._v(" "),a("li",[a("p",[e._v("The Next button will display the next 25 entries. If there are no other entries, the button will not be displayed.")])])]),e._v(" "),a("h4",{attrs:{id:"variables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#variables"}},[e._v("#")]),e._v(" Variables")]),e._v(" "),a("p",[e._v("The navigation buttons require two variables to store the table view states:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("#table_view_offset#")])])]),e._v(" "),a("p",[e._v("This variable stores the offset of current table view.")]),e._v(" "),a("p",[e._v("The navigation buttons will pass it as a parameter when the page is reloaded.")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("#record_count#")])])]),e._v(" "),a("p",[e._v("This variable stores the total number of entries in the table.")]),e._v(" "),a("p",[e._v("The value will be calculated.")]),e._v(" "),a("h4",{attrs:{id:"entry-count"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#entry-count"}},[e._v("#")]),e._v(" Entry count")]),e._v(" "),a("p",[e._v("To count "),a("code",[e._v("#record_count#")]),e._v(", please modify the existing "),a("RouterLink",{attrs:{to:"/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function call. The variable specified in the "),a("code",[e._v(".count()")]),e._v(" call will store the entry count.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count)\n')])])]),a("h4",{attrs:{id:"table-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-offset"}},[e._v("#")]),e._v(" Table offset")]),e._v(" "),a("p",[e._v("The table view offset must be passed to the page when the page is opened. If "),a("code",[e._v("#table_view_offset#")]),e._v(" does not get a value, set it to 0.")]),e._v(" "),a("p",[e._v("Add the following code to the top of the page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("If(GetVar(table_view_offset)){\n\n}.Else{\n SetVar(table_view_offset, 0)\n}\n")])])]),a("p",[e._v("Modify the "),a("RouterLink",{attrs:{to:"/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function call again. This time it must use the new table view offset.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n')])])]),a("h4",{attrs:{id:"button-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#button-code"}},[e._v("#")]),e._v(" Button code")]),e._v(" "),a("p",[e._v("Find the "),a("RouterLink",{attrs:{to:"/topics/templates2.html#div"}},[e._v("Div")]),e._v(" function call that defines the footer: "),a("code",[e._v("Div(Class:panel-footer text-right)")]),e._v(". Add the button code into it.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Div(Class: panel-footer text-right) {\n}\n")])])]),a("p",[e._v("The "),a("em",[e._v("Previous")]),e._v(" button will only appear if there is at least one Next to return. When adding a button, the new table view offset "),a("code",[e._v("offset_previous")]),e._v(" of the page will be calculated. The parameters are passed to "),a("code",[e._v("PageParams")]),e._v(" of the reopened page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n}\n')])])]),a("p",[e._v("The Next button will only be displayed when the total number of records is greater than the number displayed on the page. When a button is added, the new table view offset "),a("code",[e._v("offset_next")]),e._v(" of the page will be calculated. The parameters are passed to "),a("code",[e._v("PageParams")]),e._v(" of the reopened page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n}\n')])])]),a("p",[e._v("After adding these buttons, save the page and test it from the Home > Messages menu item.")]),e._v(" "),a("h4",{attrs:{id:"page-refreshing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-refreshing"}},[e._v("#")]),e._v(" Page refreshing")]),e._v(" "),a("p",[e._v("The last function to be implemented is to automatically update the table on the page. When users send a new message, it must be displayed in the table.")]),e._v(" "),a("p",[e._v("In addition to implementing the contract, you may also use the Send button to reopen the current page to achieve the same. "),a("code",[e._v("#table_view_offset#")]),e._v(" must be passed to the page without any change.")]),e._v(" "),a("p",[e._v("Add "),a("code",[e._v("Page")]),e._v(" and "),a("code",[e._v("PageParams")]),e._v(" to the Send button, the code is as follows:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n')])])]),a("h3",{attrs:{id:"full-page-code-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-page-code-2"}},[e._v("#")]),e._v(" Full page code")]),e._v(" "),a("p",[e._v("This part describes many changes to the application page. The following is the full code of the application page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(GetVar(table_view_offset)){\n}.Else{\n SetVar(table_view_offset, 0)\n}\nDBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n Div(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n }\n If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n }\n }\n }\n Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n }\n}\n')])])]),a("h2",{attrs:{id:"conclusions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conclusions"}},[e._v("#")]),e._v(" Conclusions")]),e._v(" "),a("p",[e._v("Instead of expounding other important topics for application developers, such as layout styles, access permissions management and interaction between applications and resources, this tutorial introduces how to create a basic application for an ecosystem. For more information on these advanced topics, see other relevant documents.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{511:function(e,t,a){"use strict";a.r(t);var s=a(51),n=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"tutorial-for-application-development"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tutorial-for-application-development"}},[e._v("#")]),e._v(" Tutorial for application development")]),e._v(" "),a("p",[e._v("In this section, we will show you how to develop a simple application on the IBAX Network.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-goal"}},[e._v("The Goal")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-1-the-environment"}},[e._v("Part 1: The Environment")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-2-contract"}},[e._v("Part 2: Contract")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#creator-account"}},[e._v("Creator account")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-application"}},[e._v("New application")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-database-table"}},[e._v("New database table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#new-contract"}},[e._v("New contract")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contract-code"}},[e._v("Contract code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#create-a-contract"}},[e._v("Create a contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("Contract name")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#conditions"}},[e._v("Conditions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#action"}},[e._v("Action")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#full-contract-code"}},[e._v("Full contract code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#save-and-run"}},[e._v("Save and run")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-3-page"}},[e._v("Part 3: Page")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#new-field"}},[e._v("New field")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#update-the-contract"}},[e._v("Update the contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page"}},[e._v("Page")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#designer-views"}},[e._v("Designer views")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#developer-view"}},[e._v("Developer view")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fetch-data-from-the-database-table"}},[e._v("Fetch data from the database table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#save-the-page"}},[e._v("Save the page")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#part-4-application"}},[e._v("Part 4: Application")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#menu"}},[e._v("Menu")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#add-a-menu-item"}},[e._v("Add a menu item")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#test-the-new-menu-item"}},[e._v("Test the new menu item")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#send-a-message"}},[e._v("Send a message")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#form"}},[e._v("Form")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#form-navigation"}},[e._v("Form navigation")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#navigation-buttons"}},[e._v("Navigation buttons")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#variables"}},[e._v("Variables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#entry-count"}},[e._v("Entry count")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-offset"}},[e._v("Table offset")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#button-code"}},[e._v("Button code")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-refreshing"}},[e._v("Page refreshing")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#conclusions"}},[e._v("Conclusions")])])]),e._v(" "),a("h2",{attrs:{id:"the-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-goal"}},[e._v("#")]),e._v(" The Goal")]),e._v(" "),a("p",[e._v("The application begins with simple functions but grows in complexity as the tutorial progresses.")]),e._v(" "),a("p",[e._v("In the final version of the application, some simple messages (strings) are stored in a database table, which contains the timestamps and account identifiers of senders. Users can view the messages list and add a new message from the application page which can be accessed from the menu of the ecosystem.")]),e._v(" "),a("h2",{attrs:{id:"part-1-the-environment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-1-the-environment"}},[e._v("#")]),e._v(" Part 1: The Environment")]),e._v(" "),a("p",[a("strong",[e._v("Weaver")])]),e._v(" "),a("p",[e._v("As the only client of IBAX, Weaver provides functions for all users and ecosystem roles. With it, application developers can develop and test their applications, ecosystem administrators can manage their ecosystems, while users can interact with the ecosystems.")]),e._v(" "),a("p",[e._v("In this tutorial, you are going to code contracts, page templates and perform all other actions in Weaver. Weaver also provides a way to restore, save and execute contract codes, manage data structures (database tables), assign access permissions and create applications.")]),e._v(" "),a("p",[e._v("Each node has its own Weaver instance.")]),e._v(" "),a("h2",{attrs:{id:"part-2-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-2-contract"}},[e._v("#")]),e._v(" Part 2: Contract")]),e._v(" "),a("p",[e._v('Your first simple application is "Hello, World!".')]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("In this application, strings will be stored in a database table, and there is not a user page.")])]),e._v(" "),a("h3",{attrs:{id:"creator-account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creator-account"}},[e._v("#")]),e._v(" Creator account")]),e._v(" "),a("p",[e._v('Accounts with the Developer role will be assigned the "root" privileges of the ecosystem. By default, this role can access all actions. In a new ecosystem, the creator account will be assigned the Admin role, which you must use it to introduce major changes to the ecosystem, such as creating new applications and database tables.')]),e._v(" "),a("p",[e._v("Log in to the ecosystem using the creator account.")]),e._v(" "),a("h3",{attrs:{id:"new-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-application"}},[e._v("#")]),e._v(" New application")]),e._v(" "),a("p",[e._v("Once you logged in as the ecosystem creator, you can create a new application.")]),e._v(" "),a("p",[e._v("Create a new application:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Go to the Developer tab;")])]),e._v(" "),a("li",[a("p",[e._v("Select Application in the menu at the left;")])]),e._v(" "),a("li",[a("p",[e._v("Select New at the application page;")])]),e._v(" "),a("li",[a("p",[e._v("Specify the application name in the Name field;")])]),e._v(" "),a("li",[a("p",[e._v("Set Conditions to "),a("code",[e._v("true")]),e._v(";")])])]),e._v(" "),a("p",[a("code",[e._v("true")]),e._v(" means anyone can make changes to the application;")]),e._v(" "),a("p",[e._v("Another option is "),a("code",[e._v('ContractConditions("MainCondition")')]),e._v(", which means no one can make changes to the application except for the creator.")]),e._v(" "),a("ol",{attrs:{start:"6"}},[a("li",[e._v("Your application will be displayed in the applications list, click the Name field of a specific application to activate it.")])]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("You can access relevant resources by clicking an application in the Developer tab, no impact on the ecosystem. No matter which one you choose, all ecosystem applications are still available.")])]),e._v(" "),a("h3",{attrs:{id:"new-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-database-table"}},[e._v("#")]),e._v(" New database table")]),e._v(" "),a("p",[e._v("To store the data, create a database table for the application in Weaver.")]),e._v(" "),a("p",[e._v("Create a data table:")]),e._v(" "),a("ol",[a("li",[e._v("In the Developer tab, select Application - Name > Database table;")])]),e._v(" "),a("p",[e._v("All database tables in relation to the application selected will be displayed here. If the list is empty, then, no database tables have been created for your application yet.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click New;")])]),e._v(" "),a("p",[e._v("Weaver will show you the page to create a new database table.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Specify the name in the Name field;")])]),e._v(" "),a("p",[e._v("In this tutorial, the name of the database table will be "),a("code",[e._v("apptable")]),e._v(".")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Add the "),a("code",[e._v("message")]),e._v(" column, set its type as "),a("code",[e._v("Text")]),e._v(";")])]),e._v(" "),a("p",[e._v("This table must have two columns: "),a("code",[e._v("id")]),e._v(" (predefine) and "),a("code",[e._v("message")]),e._v(". You are going to add more columns later.")]),e._v(" "),a("ol",{attrs:{start:"5"}},[a("li",[e._v("With respect to the read and write permissions, set each field to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("p",[e._v("This will allow anyone to insert, update entries, add columns and read entry data on the database table;")]),e._v(" "),a("p",[e._v("As an option, you may reserve the read and write permissions to the creator account. In this case, set this field to "),a("code",[e._v('ContractConditions("MainCondition")')]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"new-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-contract"}},[e._v("#")]),e._v(" New contract")]),e._v(" "),a("h4",{attrs:{id:"contract-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-code"}},[e._v("#")]),e._v(" Contract code")]),e._v(" "),a("p",[e._v("Each contract has three parts. For more details, please see: "),a("RouterLink",{attrs:{to:"/topics/script.html#contract-structure"}},[e._v("Contract structure")]),e._v("。")],1),e._v(" "),a("h4",{attrs:{id:"create-a-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-contract"}},[e._v("#")]),e._v(" Create a contract")]),e._v(" "),a("ol",[a("li",[e._v("In the Developer tab, select Application - Name > Contract;")])]),e._v(" "),a("p",[e._v("All contracts in relation to the application will be displayed here. The list is empty for new applications.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click New;")])]),e._v(" "),a("p",[e._v("A new contract template will be displayed in the editor.")]),e._v(" "),a("p",[e._v("An empty contract template is shown as below:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("contract ... {\n data {\n\n }\n conditions {\n\n }\n action {\n\n }\n}\n")])])]),a("h4",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" Contract name")]),e._v(" "),a("p",[e._v("First, please specify the contract name.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" contract AppContract {\n\n }\n")])])]),a("h4",{attrs:{id:"data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[e._v("#")]),e._v(" Data")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("data")]),e._v(" section.")]),e._v(" "),a("p",[e._v("In the following example, "),a("code",[e._v("Message")]),e._v(" refers to the variable name, while "),a("code",[e._v("string")]),e._v(" the variable type.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" data {\n Message string\n }\n")])])]),a("h4",{attrs:{id:"conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conditions"}},[e._v("#")]),e._v(" Conditions")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("conditions")]),e._v(" section. A simple verification condition is to avoid empty strings. If the length of "),a("code",[e._v("Message")]),e._v(" is "),a("code",[e._v("0")]),e._v(", a predefined warning message will be triggered when implementing the contract.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n}\n')])])]),a("h4",{attrs:{id:"action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#action"}},[e._v("#")]),e._v(" Action")]),e._v(" "),a("p",[e._v("Fill in the "),a("code",[e._v("action")]),e._v(" section. A simple action is to write "),a("code",[e._v("Message")]),e._v(" into the data table.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' action {\n DBInsert("apptable", {message: $Message})\n }\n')])])]),a("h4",{attrs:{id:"full-contract-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-contract-code"}},[e._v("#")]),e._v(" Full contract code")]),e._v(" "),a("p",[e._v("The full contract code is shown below.")]),e._v(" "),a("p",[e._v("All contracts in IBAX will be constructed like this, including the "),a("code",[e._v("data")]),e._v(", "),a("code",[e._v("conditions")]),e._v(" and "),a("code",[e._v("action")]),e._v(" sections.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('contract AppContract {\n data {\n Message string\n }\n conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n }\n action {\n DBInsert("apptable", {message: $Message})\n }\n}\n')])])]),a("h4",{attrs:{id:"save-and-run"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-and-run"}},[e._v("#")]),e._v(" Save and run")]),e._v(" "),a("p",[e._v("Now, we are preparing to test the contract:")]),e._v(" "),a("ol",[a("li",[e._v("Click Save in the editor's menu;")])]),e._v(" "),a("p",[e._v("This will update the contract code, and the updated version will be available to all network nodes.")]),e._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[e._v("Click Run in the editor's menu;")])]),e._v(" "),a("p",[e._v("This will display the Run the Contract page.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("In the Run the Contract page, fill in the input parameters of the contract;")])]),e._v(" "),a("p",[e._v("As this contract has one parameter "),a("code",[e._v("Message")]),e._v(", set "),a("code",[e._v("Message")]),e._v(" at the Key field and "),a("code",[e._v("Hello, World")]),e._v(" at the Value field.")]),e._v(" "),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Click Run.")])]),e._v(" "),a("p",[e._v("The result will be displayed at the right.")]),e._v(" "),a("p",[e._v("If successfully added some strings, then, the result will contain the block ID and result code to introduce the change of transactions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "block": "31",\n "result": null\n}\n')])])]),a("h2",{attrs:{id:"part-3-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-3-page"}},[e._v("#")]),e._v(" Part 3: Page")]),e._v(" "),a("p",[e._v("When the contract becomes effective, it is time to extend it to something useful. In this part, you are going to implement the UI and other functions.")]),e._v(" "),a("p",[e._v("Note")]),e._v(" "),a("p",[e._v("In this application, strings will be stored in a database table, like entries in a log. Each string will have an author and timestamp.")]),e._v(" "),a("p",[e._v("Users can view the list of strings stored at the application page, which is shown as a simple form then.")]),e._v(" "),a("h3",{attrs:{id:"new-field"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#new-field"}},[e._v("#")]),e._v(" New field")]),e._v(" "),a("p",[e._v("As with the previous, edit the database table at the Developer tab > Application - Name > Database table page;")]),e._v(" "),a("p",[e._v("Add the following fields into "),a("code",[e._v("apptable")]),e._v(":")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("author")]),e._v(" , field type "),a("code",[e._v("Number")]),e._v(", set Change to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("p",[e._v("This field will store the identifier of the author account.")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("timestamp")]),e._v(" , field type "),a("code",[e._v("Date/Time")]),e._v(", set Change to "),a("code",[e._v("true")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"update-the-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-the-contract"}},[e._v("#")]),e._v(" Update the contract")]),e._v(" "),a("p",[e._v("We will update the contract code to handle the author ID and timestamp.")]),e._v(" "),a("p",[e._v("The author ID is the account ID of the ecosystem. The timestamp is the date and time executing the contract in Unix time format.")]),e._v(" "),a("p",[e._v("As both values are provided by the "),a("RouterLink",{attrs:{to:"/topics/script.html#variables"}},[e._v("Predefined variables")]),e._v(" and no need to input or verify the predefined variables, they can only be updated in the action part.")],1),e._v(" "),a("p",[e._v("Update the contract to write the author ID and timestamp into the database table when adding a message, among which the author ID is defined by "),a("code",[e._v("$key_id")]),e._v(", while the timestamp by "),a("code",[e._v("$time")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('action {\n DBInsert("apptable", {message: $Message, author: $key_id, timestamp: $time})\n}\n')])])]),a("h3",{attrs:{id:"page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page"}},[e._v("#")]),e._v(" Page")]),e._v(" "),a("p",[e._v("For the application page, it is a simple page where displays the messages stored in the database table.")]),e._v(" "),a("p",[e._v("Like all other resources, you can create the UI page in Weaver:")]),e._v(" "),a("p",[e._v("1.Navigate to the Developer tab, click Application - Name > Page;")]),e._v(" "),a("p",[e._v("2.Click New;\nThe visual designer will be opened in a new tab.")]),e._v(" "),a("h4",{attrs:{id:"designer-views"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#designer-views"}},[e._v("#")]),e._v(" Designer views")]),e._v(" "),a("p",[e._v("The default page is empty. You can use the predefine structure to quickly fill in the page.")]),e._v(" "),a("p",[e._v("Create a basic table:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("In the view selector at the right, click Designer;\nThe view will be switched to the visual designer.")])]),e._v(" "),a("li",[a("p",[e._v("In the menu at the left, select Table With Header and drag it on to the page.\nA table with multiple elements will be displayed on the page.")])])]),e._v(" "),a("h4",{attrs:{id:"developer-view"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#developer-view"}},[e._v("#")]),e._v(" Developer view")]),e._v(" "),a("p",[e._v("As the user page of IBAX is coded with a "),a("RouterLink",{attrs:{to:"/topics/templates2.html"}},[e._v("Template Language")]),e._v(", please switch to the Developer view when writing the page code.")],1),e._v(" "),a("p",[e._v("Switch to the Developer view.")]),e._v(" "),a("ol",[a("li",[e._v("In the view selector at the right, click Developer.")])]),e._v(" "),a("p",[e._v("The view will be switched to the editor with a tab holding the page code.")]),e._v(" "),a("h4",{attrs:{id:"fetch-data-from-the-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-data-from-the-database-table"}},[e._v("#")]),e._v(" Fetch data from the database table")]),e._v(" "),a("p",[e._v("So far, nothing done with the page template. In the next, we will update the code to allow the page to display data from "),a("code",[e._v("apptable")]),e._v(".")]),e._v(" "),a("ol",[a("li",[e._v("To request data from the database table with the "),a("RouterLink",{attrs:{to:"/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function;")],1)]),e._v(" "),a("p",[e._v("In the following example, this function call is used to fetch data from "),a("code",[e._v("apptable")]),e._v(". The data will be put it in the source "),a("code",[e._v("src_table")]),e._v(" and sorted by the timestamp field. "),a("code",[e._v("src_table")]),e._v(" will be later used as the data source for the page in table view.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n')])])]),a("ol",{attrs:{start:"2"}},[a("li",[e._v("To display the data from "),a("code",[e._v("src_table")]),e._v(", specify it as the data source and the header in the "),a("code",[e._v("Table")]),e._v(" function.")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n')])])]),a("ol",{attrs:{start:"3"}},[a("li",[e._v("In the view selector at the right, click Preview to check whether the data is displayed correctly.")])]),e._v(" "),a("h4",{attrs:{id:"full-page-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-page-code"}},[e._v("#")]),e._v(" Full page code")]),e._v(" "),a("p",[e._v("The following is the full page code for this part. This basic page will be expanded later.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n\nDiv(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n Button(Class: btn btn-primary, Contract: ContractName, Body: More)\n }\n}\n\n')])])]),a("h4",{attrs:{id:"save-the-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-the-page"}},[e._v("#")]),e._v(" Save the page")]),e._v(" "),a("p",[e._v("Click Save to save the page:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Specify "),a("code",[e._v("AppPage")]),e._v(" or any other name for the page in the Page Name field;")])]),e._v(" "),a("li",[a("p",[e._v("Select "),a("code",[e._v("default_menu")]),e._v(" in the Menu;")])]),e._v(" "),a("li",[a("p",[e._v("Set Conditions to "),a("code",[e._v("true")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Click OK.")])])]),e._v(" "),a("h2",{attrs:{id:"part-4-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#part-4-application"}},[e._v("#")]),e._v(" Part 4: Application")]),e._v(" "),a("p",[e._v("In the previous sections, you created a contract, a table to store data, and a basic UI page to display that data.")]),e._v(" "),a("p",[e._v("In this part, you are going to finalize the application to make its appearance and actions are similar to an actual one.")]),e._v(" "),a("h3",{attrs:{id:"menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#menu"}},[e._v("#")]),e._v(" Menu")]),e._v(" "),a("p",[e._v("The page needs to be linked to a menu, for example, "),a("code",[e._v("default_page")]),e._v(" displayed on the Home tab is linked to the default ecosystem menu "),a("code",[e._v("default_menu")]),e._v(".")]),e._v(" "),a("p",[e._v("As this application tutorial is very simple (only having one page), there is no need to create a separate menu for it. The new menu item in the default menu is sufficient.")]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("You can define the page menu by editing the page properties at the Developer tab > Application - Name > Page. For example, if your app has multiple pages, you may need to create a menu to navigate between these pages and assign it to all pages of the app.")])]),e._v(" "),a("h4",{attrs:{id:"add-a-menu-item"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-a-menu-item"}},[e._v("#")]),e._v(" Add a menu item")]),e._v(" "),a("p",[e._v("Like all other resources, menus can be created and edited in Weaver:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Navigate to the Developer tab > Menu;")])]),e._v(" "),a("li",[a("p",[e._v("Click the Name of the "),a("code",[e._v("default_menu")]),e._v(" entry;")])])]),e._v(" "),a("p",[e._v("A new tab will be opened in the editor.")]),e._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[e._v("Add a new menu item to the end of the template, which will be linked to open the application page and its icon comes from the "),a("a",{attrs:{href:"https://fontawesome.com/icons",target:"_blank",rel:"noopener noreferrer"}},[e._v("FontAwesome"),a("OutboundLink")],1),e._v(" icon set.")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' MenuItem(Title:Messages, Page:AppPage, Icon:"fa fa-envelope")\n')])])]),a("ol",{attrs:{start:"4"}},[a("li",[e._v("Click Save.")])]),e._v(" "),a("h4",{attrs:{id:"test-the-new-menu-item"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#test-the-new-menu-item"}},[e._v("#")]),e._v(" Test the new menu item")]),e._v(" "),a("p",[e._v("Check whether the new menu item is valid:")]),e._v(" "),a("ol",[a("li",[a("p",[e._v("Open the Home tab;")])]),e._v(" "),a("li",[a("p",[e._v("Click Refresh in the menu;")]),e._v(" "),a("p",[e._v("An entry with a header of Messages will appear;")])]),e._v(" "),a("li",[a("p",[e._v("Click Messages.")]),e._v(" "),a("p",[e._v("The application page will be opened.")])])]),e._v(" "),a("h3",{attrs:{id:"send-a-message"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-a-message"}},[e._v("#")]),e._v(" Send a message")]),e._v(" "),a("p",[e._v("The buttons in Logicor can be used to implement contracts and open pages, depending on the parameters.")]),e._v(" "),a("p",[e._v("The "),a("RouterLink",{attrs:{to:"/topics/templates2.html#button"}},[e._v("Button")]),e._v(" function has two contract parameters:")],1),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("Contract")])]),e._v(" "),a("p",[e._v("Name of the contract activated.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("Params")])]),e._v(" "),a("p",[e._v("Input parameters of the contract.")])])]),e._v(" "),a("h4",{attrs:{id:"form"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),a("p",[e._v("To send data to the contract, add a form on the application page, which must have an input field for a message and a button to activate the contract AppContract.")]),e._v(" "),a("p",[e._v("The following is an example of this type of form. It is nested in its own "),a("RouterLink",{attrs:{to:"/topics/templates2.html#div"}},[e._v("Div")]),e._v(". Putting it after the Div element that contains the form view, which defines that the "),a("RouterLink",{attrs:{to:"/topics/templates2.html#input"}},[e._v("Input")]),e._v(" field has a predefine name "),a("code",[e._v("message_input")]),e._v(". The button uses this name to send the value of "),a("code",[e._v("Message")]),e._v(" to the contract. Finally, the "),a("RouterLink",{attrs:{to:"/topics/templates2.html#calling-contracts"}},[e._v("Val")]),e._v(" function is used to get the value of the input field.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)")\n }\n}\n')])])]),a("p",[e._v("You may notice that when testing this new feature by sending a message, the form does not refresh. This will be introduced in "),a("a",{attrs:{href:"#page-refreshing"}},[e._v("page refresh")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"form-navigation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#form-navigation"}},[e._v("#")]),e._v(" Form navigation")]),e._v(" "),a("p",[e._v("Under the default view, the form on the page can only display 25 entries on the first page. Hence, you can add some simple buttons to navigate users to all form entries.")]),e._v(" "),a("h4",{attrs:{id:"navigation-buttons"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#navigation-buttons"}},[e._v("#")]),e._v(" Navigation buttons")]),e._v(" "),a("p",[e._v("There will be two navigation buttons, and each of them could reload the application page and pass the parameters to it.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The Previous button will display the first 25 entries. If there are no other entries, the button will not be displayed;")])]),e._v(" "),a("li",[a("p",[e._v("The Next button will display the next 25 entries. If there are no other entries, the button will not be displayed.")])])]),e._v(" "),a("h4",{attrs:{id:"variables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#variables"}},[e._v("#")]),e._v(" Variables")]),e._v(" "),a("p",[e._v("The navigation buttons require two variables to store the table view states:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("#table_view_offset#")])])]),e._v(" "),a("p",[e._v("This variable stores the offset of current table view.")]),e._v(" "),a("p",[e._v("The navigation buttons will pass it as a parameter when the page is reloaded.")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("#record_count#")])])]),e._v(" "),a("p",[e._v("This variable stores the total number of entries in the table.")]),e._v(" "),a("p",[e._v("The value will be calculated.")]),e._v(" "),a("h4",{attrs:{id:"entry-count"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#entry-count"}},[e._v("#")]),e._v(" Entry count")]),e._v(" "),a("p",[e._v("To count "),a("code",[e._v("#record_count#")]),e._v(", please modify the existing "),a("RouterLink",{attrs:{to:"/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function call. The variable specified in the "),a("code",[e._v(".count()")]),e._v(" call will store the entry count.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count)\n')])])]),a("h4",{attrs:{id:"table-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-offset"}},[e._v("#")]),e._v(" Table offset")]),e._v(" "),a("p",[e._v("The table view offset must be passed to the page when the page is opened. If "),a("code",[e._v("#table_view_offset#")]),e._v(" does not get a value, set it to 0.")]),e._v(" "),a("p",[e._v("Add the following code to the top of the page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("If(GetVar(table_view_offset)){\n\n}.Else{\n SetVar(table_view_offset, 0)\n}\n")])])]),a("p",[e._v("Modify the "),a("RouterLink",{attrs:{to:"/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" function call again. This time it must use the new table view offset.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n')])])]),a("h4",{attrs:{id:"button-code"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#button-code"}},[e._v("#")]),e._v(" Button code")]),e._v(" "),a("p",[e._v("Find the "),a("RouterLink",{attrs:{to:"/topics/templates2.html#div"}},[e._v("Div")]),e._v(" function call that defines the footer: "),a("code",[e._v("Div(Class:panel-footer text-right)")]),e._v(". Add the button code into it.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Div(Class: panel-footer text-right) {\n}\n")])])]),a("p",[e._v("The "),a("em",[e._v("Previous")]),e._v(" button will only appear if there is at least one Next to return. When adding a button, the new table view offset "),a("code",[e._v("offset_previous")]),e._v(" of the page will be calculated. The parameters are passed to "),a("code",[e._v("PageParams")]),e._v(" of the reopened page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n}\n')])])]),a("p",[e._v("The Next button will only be displayed when the total number of records is greater than the number displayed on the page. When a button is added, the new table view offset "),a("code",[e._v("offset_next")]),e._v(" of the page will be calculated. The parameters are passed to "),a("code",[e._v("PageParams")]),e._v(" of the reopened page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n}\n')])])]),a("p",[e._v("After adding these buttons, save the page and test it from the Home > Messages menu item.")]),e._v(" "),a("h4",{attrs:{id:"page-refreshing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-refreshing"}},[e._v("#")]),e._v(" Page refreshing")]),e._v(" "),a("p",[e._v("The last function to be implemented is to automatically update the table on the page. When users send a new message, it must be displayed in the table.")]),e._v(" "),a("p",[e._v("In addition to implementing the contract, you may also use the Send button to reopen the current page to achieve the same. "),a("code",[e._v("#table_view_offset#")]),e._v(" must be passed to the page without any change.")]),e._v(" "),a("p",[e._v("Add "),a("code",[e._v("Page")]),e._v(" and "),a("code",[e._v("PageParams")]),e._v(" to the Send button, the code is as follows:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n')])])]),a("h3",{attrs:{id:"full-page-code-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-page-code-2"}},[e._v("#")]),e._v(" Full page code")]),e._v(" "),a("p",[e._v("This part describes many changes to the application page. The following is the full code of the application page.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('If(GetVar(table_view_offset)){\n}.Else{\n SetVar(table_view_offset, 0)\n}\nDBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n Div(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n }\n If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n }\n }\n }\n Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n }\n}\n')])])]),a("h2",{attrs:{id:"conclusions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#conclusions"}},[e._v("#")]),e._v(" Conclusions")]),e._v(" "),a("p",[e._v("Instead of expounding other important topics for application developers, such as layout styles, access permissions management and interaction between applications and resources, this tutorial introduces how to create a basic application for an ecosystem. For more information on these advanced topics, see other relevant documents.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/132.dc402607.js b/assets/js/132.db5ef214.js similarity index 99% rename from assets/js/132.dc402607.js rename to assets/js/132.db5ef214.js index d6ede66..296997b 100644 --- a/assets/js/132.dc402607.js +++ b/assets/js/132.db5ef214.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{512:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{513:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/133.71b40ea8.js b/assets/js/133.33afab4d.js similarity index 97% rename from assets/js/133.71b40ea8.js rename to assets/js/133.33afab4d.js index 7dcc608..90d2052 100644 --- a/assets/js/133.71b40ea8.js +++ b/assets/js/133.33afab4d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{513:function(t,r,e){"use strict";e.r(r);var a=e(51),o=Object(a.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-文档"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-文档"}},[t._v("#")]),t._v(" IBAX 文档")]),t._v(" "),e("h2",{attrs:{id:"概念"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#概念"}},[t._v("#")]),t._v(" 概念")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/zh-CN/concepts/about-the-platform.html"}},[t._v("IBAX Overview")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/concepts/blockchain-layers.html"}},[t._v("The IBAX Network")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/concepts/consensus.html"}},[t._v("Proof-of-Authority Consensus")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/concepts/thesaurus.html"}},[t._v("Terms and Definitions")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/concepts/faq.html"}},[t._v("FAQ")])],1)]),t._v(" "),e("h2",{attrs:{id:"教程"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#教程"}},[t._v("#")]),t._v(" 教程")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/zh-CN/tutorials/app_tutorial.html"}},[t._v("Tutorial for application development")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),e("h2",{attrs:{id:"指南"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#指南"}},[t._v("#")]),t._v(" 指南")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/zh-CN/topics/script.html"}},[t._v("Smart Contracts")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/topics/templates2.html"}},[t._v("Template Language")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/topics/vm.html"}},[t._v("Compiler and Virtual Machine")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/topics/daemons.html"}},[t._v("Daemon")])],1)]),t._v(" "),e("h2",{attrs:{id:"参考"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#参考"}},[t._v("#")]),t._v(" 参考")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/zh-CN/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/reference/platform-parameters.html"}},[t._v("Platform Parameters")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/reference/backend-config.html"}},[t._v("Server Configuration File")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/reference/desync_monitor.html"}},[t._v("Synchronized Monitoring Tool")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),e("h2",{attrs:{id:"部署"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#部署"}},[t._v("#")]),t._v(" 部署")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/zh-CN/howtos/deployment.html"}},[t._v("Deployment of A IBAX Network")])],1)])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{512:function(t,r,e){"use strict";e.r(r);var a=e(51),o=Object(a.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-文档"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-文档"}},[t._v("#")]),t._v(" IBAX 文档")]),t._v(" "),e("h2",{attrs:{id:"概念"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#概念"}},[t._v("#")]),t._v(" 概念")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/zh-CN/concepts/about-the-platform.html"}},[t._v("IBAX Overview")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/concepts/blockchain-layers.html"}},[t._v("The IBAX Network")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/concepts/consensus.html"}},[t._v("Proof-of-Authority Consensus")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/concepts/thesaurus.html"}},[t._v("Terms and Definitions")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/concepts/faq.html"}},[t._v("FAQ")])],1)]),t._v(" "),e("h2",{attrs:{id:"教程"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#教程"}},[t._v("#")]),t._v(" 教程")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/zh-CN/tutorials/app_tutorial.html"}},[t._v("Tutorial for application development")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),e("h2",{attrs:{id:"指南"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#指南"}},[t._v("#")]),t._v(" 指南")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/zh-CN/topics/script.html"}},[t._v("Smart Contracts")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/topics/templates2.html"}},[t._v("Template Language")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/topics/vm.html"}},[t._v("Compiler and Virtual Machine")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/topics/daemons.html"}},[t._v("Daemon")])],1)]),t._v(" "),e("h2",{attrs:{id:"参考"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#参考"}},[t._v("#")]),t._v(" 参考")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/zh-CN/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/reference/platform-parameters.html"}},[t._v("Platform Parameters")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/reference/backend-config.html"}},[t._v("Server Configuration File")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/reference/desync_monitor.html"}},[t._v("Synchronized Monitoring Tool")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/zh-CN/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),e("h2",{attrs:{id:"部署"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#部署"}},[t._v("#")]),t._v(" 部署")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/zh-CN/howtos/deployment.html"}},[t._v("Deployment of A IBAX Network")])],1)])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/134.d6af2ba1.js b/assets/js/134.84f28a6f.js similarity index 99% rename from assets/js/134.d6af2ba1.js rename to assets/js/134.84f28a6f.js index fc4de9e..e74a534 100644 --- a/assets/js/134.d6af2ba1.js +++ b/assets/js/134.84f28a6f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{515:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ibax-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-overview"}},[e._v("#")]),e._v(" IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-overview"}},[e._v("IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#features"}},[e._v("Features")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#architecture"}},[e._v("Architecture")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#network"}},[e._v("Network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[e._v("Honor Node")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#transactions"}},[e._v("Transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#network-protocol"}},[e._v("Network protocol")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-and-transaction-verification"}},[e._v("Block and transaction verification")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#database"}},[e._v("Database")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[e._v("ECOLIB")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ide"}},[e._v("IDE")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#applications"}},[e._v("Applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables"}},[e._v("Tables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-parameters"}},[e._v("Ecosystem Parameters")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#access-rights-control-mechanism"}},[e._v("Access rights control mechanism")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#access-rights-management"}},[e._v("Access rights management")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exclusive-rights"}},[e._v("Exclusive rights")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecosystem"}},[e._v("Virtual private ecosystem")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#requests-to-web-resources"}},[e._v("Requests to web resources")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rights-to-read-data"}},[e._v("Rights to read data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-creation"}},[e._v("CLB creation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-usage"}},[e._v("CLB usage")])])])])])])]),e._v(" "),a("h2",{attrs:{id:"features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[e._v("#")]),e._v(" Features")]),e._v(" "),a("p",[e._v("The IBAX Network (IBAX) has an integrated application development environment (IDE). It is a multi-level access control system for data, user pages and smart contracts.")]),e._v(" "),a("p",[e._v("In terms of its structure and functions, IBAX is quite different from most existing blockchain platforms:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The development and use of IBAX applications are in an autonomous software environment called "),a("strong",[e._v("ecosystem")]),e._v(". Each ecosystem has its own membership rules that are initially established by the creator;")])]),e._v(" "),a("li",[a("p",[e._v("Ecosystem activities, such as the data involved in "),a("font",{attrs:{color:"Red"}},[e._v("database table")]),e._v(" records or updates, are based on "),a("strong",[e._v("registers")]),e._v(" created with "),a("strong",[e._v("smart contracts")]),e._v(". In most other blockchain platforms, activities are based on transaction exchange between accounts;")],1)]),e._v(" "),a("li",[a("p",[e._v("The access to "),a("strong",[e._v("registers")]),e._v(" and the control of relationships between ecosystem members are managed by a set of rules called "),a("strong",[e._v("smart laws")]),e._v(".")])])]),e._v(" "),a("h2",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("h3",{attrs:{id:"network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network"}},[e._v("#")]),e._v(" Network")]),e._v(" "),a("p",[e._v("IBAX is built on a peer-to-peer (P2P) network.")]),e._v(" "),a("p",[e._v("Guardian nodes in the network store the latest version of the blockchain database, which records the latest status of IBAX's blockchain.")]),e._v(" "),a("p",[e._v("Network users can receive data by sending requests from the guardian node database via "),a("strong",[e._v("Weaver")]),e._v(" or REST API commands. After signing by users, new requests are sent to the network as transactions in binary format. Essentially, these transactions are commands to modify relevant database records. Transactions are aggregated in blocks, and such blocks are sent to the blockchains of all network nodes. Each guardian node will process the transactions in the block, thereby updating the corresponding data in the database.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor Node")]),e._v(" "),a("p",[e._v("A guardian node which is privileged to generate new blocks in the network is called a honor node. The maximum number of honor nodes is defined by "),a("RouterLink",{attrs:{to:"/zh-CN/reference/platform-parameters.html#number-of-nodes"}},[e._v("number_of_nodes")]),e._v(" in the platform parameters table, showing that the number of honor nodes is limited.")],1),e._v(" "),a("p",[e._v("An Honor Node is one of the key components of IBAX Public Network. It executes and validates transactions, collects transaction information from other nodes, adds transactions to the queue, and verifies the correctness and validity of new blocks using the confirmation mechanism. Generally, it has two states: packaging and on-packaging.")]),e._v(" "),a("p",[e._v("An Honor Node in the packaging state delivers the highest performance. It obtains transaction requests to be executed from the transaction queue and verifies the ignature validity and correctness of transactions, e.g. transfer amount, permission for transaction operations, and accurate execution of transactions. All ransactional operations, correct or wrong (wrong transactions will be rolled back), will be written into the block. Wrong transactions will incur a punitive gas fee. Executed transactions are notified to other Honor Nodes along with the block through broadcasting.")]),e._v(" "),a("p",[e._v("An Honor Node in the non-packaging state is mainly responsible for block verification to ensure in-block transactions generated by a packaging node are executed orrectly. In case of an anomaly, it will trigger the exception handling mechanism and IBAX Network will roll back and re-verify the block.")]),e._v(" "),a("p",[e._v("In order to ensure transaction execution efficiency, Honor Nodes collect transaction information constantly.")]),e._v(" "),a("h3",{attrs:{id:"transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transactions"}},[e._v("#")]),e._v(" Transactions")]),e._v(" "),a("p",[e._v("Transactions, including data used to implement "),a("strong",[e._v("smart contracts")]),e._v(", are generated by Weaver.")]),e._v(" "),a("p",[e._v("Transactions are signed by users with a private key. The private key and Weaver's signature function can be stored in browsers, software clients, SIM cards or dedicated physical devices. In the current implementation, the private key is encrypted with the ECDSA algorithm and stored at the Weaver side. All transactions are signed with the ECDSA algorithm.")]),e._v(" "),a("p",[e._v("The structure of a transaction complies with the following format:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("ID - ID of the contract implemented;")])]),e._v(" "),a("li",[a("p",[e._v("Params - parameters sent to the contract;")])]),e._v(" "),a("li",[a("p",[e._v("KeyID - ID of the user sending the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("PublicKey - public key of the honor node;")])]),e._v(" "),a("li",[a("p",[e._v("Time - timestamp generated by the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("EcosystemID - ID of the ecosystem where the transaction is made;")])]),e._v(" "),a("li",[a("p",[e._v("ТokenEcosystem - ID of the ecosystem, 1 by default, and tokens within it are used to cover the transaction costs.")])])]),e._v(" "),a("h3",{attrs:{id:"network-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network-protocol"}},[e._v("#")]),e._v(" Network protocol")]),e._v(" "),a("p",[e._v("Transactions will be sent to honor nodes by users, where they are subject to basic verification to ensure the formats are correct and then are added to the queue. Transactions are also sent to other honor nodes on the network and added to the respective queue.")]),e._v(" "),a("p",[e._v("A honor node is privileged to generate new blocks within a specific time period which is determined by the platform parameter "),a("strong",[e._v("full_nodes")]),e._v(" and a special algorithm. Honor nodes retrieve transactions from queues and send them to the block generator. When generating a new block, transactions in such block will also be processed: each transaction is sent to a virtual machine, where the contract corresponding to the transaction parameters is implemented, thereby updating records in the database.")]),e._v(" "),a("p",[e._v("New blocks should be verified to ensure there are no errors before sending to other honor nodes on other networks.")]),e._v(" "),a("p",[e._v("A new block will be added to the block queue when received by other honor node and, after verification, to the blockchain of the honor node where it is located to process transactions in the block, and thereby updating records in the database.")]),e._v(" "),a("h3",{attrs:{id:"block-and-transaction-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-and-transaction-verification"}},[e._v("#")]),e._v(" Block and transaction verification")]),e._v(" "),a("p",[e._v("After generating or receiving a new block, it will be verified on all other honor nodes, which cover the following:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The first byte of the data received should be 0. If not, the data received will not be considered as a block;")])]),e._v(" "),a("li",[a("p",[e._v("The received block generation timestamp should be before the current timestamp;")])]),e._v(" "),a("li",[a("p",[e._v("The block generation timestamp should correspond to the time interval at which the honor node having privilege to generate new blocks;")])]),e._v(" "),a("li",[a("p",[e._v("The height of a new block should be greater than the height of the largest block on the existing blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the maximum expenses allowed for all transactions in the block;")])]),e._v(" "),a("li",[a("p",[e._v("The block must be properly signed with the secret key of the node which it is located. The signature data should contain:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The height of the block, the hash of the previous block, the timestamp of the block, the ID of the ecosystem where the block is located, and the account address of the honor node of the block;")])]),e._v(" "),a("li",[a("p",[e._v("The position of the honor node in the platform parameter full_nodes array, the Merkel Root (MrklRoot) of all transactions in the block, and the revert hash of the previous block.")])])])])]),e._v(" "),a("p",[e._v("To check the correctness of each transaction in the block with the following methods:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The hash of each transaction must be unique;")])]),e._v(" "),a("li",[a("p",[e._v("A key-signed transaction cannot exceed the limit ("),a("RouterLink",{attrs:{to:"/zh-CN/reference/platform-parameters.html#max-tx-block-per-user"}},[e._v("max_tx_block_per_user")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the limit of the maximum transaction size ("),a("RouterLink",{attrs:{to:"/zh-CN/reference/platform-parameters.html#max-tx-size"}},[e._v("max_tx_size")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("The transaction time can neither be greater than the block generation time nor be greater than the block generation time plus 600 seconds, and it can be no less than the block generation time minus 86400 seconds;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction must be signed properly;")])]),e._v(" "),a("li",[a("p",[e._v("The user who implements the contract must have sufficient tokens in his account to pay for the transaction cost.")])])]),e._v(" "),a("h3",{attrs:{id:"database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database"}},[e._v("#")]),e._v(" Database")]),e._v(" "),a("p",[e._v("The underlying data storage layer of IBAX Network is a "),a("code",[e._v("PGSQL")]),e._v(" database completely open to the public. Based on the permission design of the IBAX Operating System Platform, users do not need to worry about data security. With an object-oriented design philosophy, IBAX Network pre-compiles data through a relational PGSQL database and improves the data processing efficiency.")]),e._v(" "),a("p",[e._v("You may be interested in the following if you are a technical specialist, or just skip it if you are not.\n① All tables without a number prefix in their name belong to permission tables of IBAX Network Basic;\n② All tables with a number prefix in their name belong to permission tables of ecoLibs.")]),e._v(" "),a("h2",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[e._v("#")]),e._v(" ECOLIB")]),e._v(" "),a("p",[e._v("It is quite easy for users, even common users, to create an ecoLib of their own on the IBAX Network System Platform. We have integrated and developed an application where ecoLib creation takes just one click.")]),e._v(" "),a("p",[e._v("When creating an ecoLib, you can configure the ecosystem parameters and rules, and set the administrator account and charging model. Most importantly, to apply the DPoA consensus within ecoLibs better, creators can set it up by writing or importing their own contracts.")]),e._v(" "),a("p",[e._v("We support quick emission of ecoLib tokens by importing contract templates.")]),e._v(" "),a("p",[e._v("Due to the differences in consensus and management permissions, ecoLibs fall into decentralized and centralized ones. They have no specific advantage or disadvantage by type. You should choose the appropriate one against your service needs. What to do if it is OK for now but not for the future? You can change ecoLib parameters, even the consensus mechanism, token, and governance method, on the IBAX Network System Platform. You can leave it all to the self-governance mechanism maintained by the ecoLib administrator or members (depending on the ecoLib type).")]),e._v(" "),a("p",[e._v("On the IBAX Network System Platform, an ecoLib has complete data control permissions and permissions to design and access independent database tables and fields. In the data control permission design, we support triggering when a field satisfies a logical expression. This feature allows for imagination space in special services like monitoring, logic satisfaction, and triggering by time and specific conditions.")]),e._v(" "),a("p",[e._v("There may be multiple DApps in an ecoLib, and each of them can have independent parameters. An ecoLib is like a platform where you can implement anything you want.")]),e._v(" "),a("p",[e._v("In order to better support ecosystem developers, we provide the editing, management, and development tool Weaver. It will reduce the ecosystem development, maintenance, and management costs greatly.")]),e._v(" "),a("h3",{attrs:{id:"ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[e._v("#")]),e._v(" IDE")]),e._v(" "),a("p",[e._v("Weaver has a complete integrated development environment (IDE) for creating blockchain applications, which does not require software developers to have a deep understanding of the blockchain technology.")]),e._v(" "),a("p",[e._v("Weaver provides a table management tool, contract editor, page editor and other functions needed to create applications in the ecosystem, without the support of any software module.")]),e._v(" "),a("p",[e._v("The IDE mainly includes the following parts:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("list of ecosystem parameters;")])]),e._v(" "),a("li",[a("p",[e._v("contract editor;")])]),e._v(" "),a("li",[a("p",[e._v("table management tool;")])]),e._v(" "),a("li",[a("p",[e._v("page editor and visual page designer;")])]),e._v(" "),a("li",[a("p",[e._v("multi-language resources editor;")])]),e._v(" "),a("li",[a("p",[e._v("application import/export functions.")])])]),e._v(" "),a("h3",{attrs:{id:"applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#applications"}},[e._v("#")]),e._v(" Applications")]),e._v(" "),a("p",[e._v("An application is a collection of elements such as database tables, smart contracts, and user pages with access rights for configuration. The ecosystem to which the application element belongs is indicated by the prefix in the element name, such as "),a("code",[e._v("@1ElementName")]),e._v(", where the ecosystem ID is indicated by the number "),a("code",[e._v("1")]),e._v(" after the "),a("code",[e._v("@")]),e._v(" symbol. When using application elements in the current ecosystem, the prefix "),a("code",[e._v("@1")]),e._v(" can be omitted. These applications can perform useful functions or implement various services.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("In IBAX's database, each ecosystem can create an unlimited number of tables. Tables of a specific ecosystem can be identified by a prefix containing the ecosystem ID, which will not be displayed in Weaver.")]),e._v(" "),a("p",[e._v("A table is not bound in any way and belongs to a certain contract. It can be used by all applications within the scope of the table's access rights.")]),e._v(" "),a("p",[e._v("Each ecosystem can create a set of data tables for developing its applications or may, possibly, access data tables of other ecosystems by specifying the table name prefix.")]),e._v(" "),a("p",[e._v("By configuring access rights through smart laws, data are logged into tables. Smart laws are used for rights management.")]),e._v(" "),a("blockquote",[a("p",[e._v("Table table management tool")])]),e._v(" "),a("p",[e._v("You can find the table management tool in Weaver menu Table, which cover the following functions:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("View the list of tables and their entries;")])]),e._v(" "),a("li",[a("p",[e._v("Create new tables;")])]),e._v(" "),a("li",[a("p",[e._v("Add a table field and specify its data type, such as "),a("code",[e._v("Text, Date/Time, Varchar, Character, JSON, Number, Money, Double, Binary")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Manage privileges for insert, update data and change table structure.")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Table data manipulation")])]),e._v(" "),a("p",[e._v("For better database manipulation, both Needle and Logicor have the "),a("strong",[e._v("DBFind")]),e._v(" function, which is used to retrieve values and data arrays from tables.")]),e._v(" "),a("p",[e._v("The contract language "),a("strong",[e._v("DBInsert")]),e._v(" function is used to add entries to tables. The "),a("strong",[e._v("DBUpdate")]),e._v(" and "),a("strong",[e._v("DBUpdateExt")]),e._v(" functions are used to update the value of an existing entry. During updating, the corresponding data in tables will be updated, and the blockchain will add new transactions while retaining all historical transactions. Data in tables can only be modified and cannot be deleted.")]),e._v(" "),a("p",[e._v("In order to minimize the contract implementation time, the "),a("strong",[e._v("DBFind")]),e._v(" function cannot query multiple tables simultaneously, and JOIN is not supported. Therefore, we recommend not to normalize application tables, but to store all available information in entries or repeat the information available in other tables. This is not mandatory but necessary for a blockchain application. In this case, data should be stored fully, which cannot be updated even if the same data in other tables is updated, though it is updated synchronously in a relational database.")]),e._v(" "),a("h3",{attrs:{id:"ecosystem-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-parameters"}},[e._v("#")]),e._v(" Ecosystem Parameters")]),e._v(" "),a("p",[e._v("You may view and edit the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") in Weaver's menu. Ecosystem parameters can be divided into the following groups:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("General parameters: the account of the ecosystem creator (founder_account) and other information;")])]),e._v(" "),a("li",[a("p",[e._v("Access rights parameters: used to define access permissions for application elements")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("change the table structure (changing_tables);")])]),e._v(" "),a("li",[a("p",[e._v("change the contract (changing_contracts);")])]),e._v(" "),a("li",[a("p",[e._v("change the user page (changing_page);")])]),e._v(" "),a("li",[a("p",[e._v("change the menu (changing_menu);")])]),e._v(" "),a("li",[a("p",[e._v("change the multi-language resources (changing_language).")])])])]),e._v(" "),a("li",[a("p",[e._v("Technical parameters: used to define the user styles (stylesheet);")])]),e._v(" "),a("li",[a("p",[e._v("User parameters: used to define constants or lists (separated by commas) required for application operation.")])])]),e._v(" "),a("p",[e._v("You may specify the edit permission for parameters of each ecosystem.")]),e._v(" "),a("p",[e._v("You may use the EcosysParam function to retrieve the value of an ecosystem parameter by passing the ecosystem parameter title as a parameter to it.")]),e._v(" "),a("h2",{attrs:{id:"access-rights-control-mechanism"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-control-mechanism"}},[e._v("#")]),e._v(" Access rights control mechanism")]),e._v(" "),a("p",[e._v("IBAX has a multi-level access permission management system. By configuring access rights, you can create and change any application element, such as the contracts, tables, user pages, ecosystem parameters. You may also change the access rights through configuration.")]),e._v(" "),a("p",[e._v("By default, all rights in the IBAX ecosystem are managed by its creator, which is defined in the MainCondition contract of each ecosystem. But after creating smart laws, access control can be transferred to all or a group of ecosystem members.\nAccess rights control")]),e._v(" "),a("p",[e._v("The access rights are defined in contract tables ("),a("strong",[e._v("1_contracts")]),e._v(" ), data tables ("),a("strong",[e._v("1_tables")]),e._v(" ), user page tables ("),a("strong",[e._v("1_pages")]),e._v(" ), menu tables ("),a("strong",[e._v("1_menu")]),e._v(" ), and code block tables ("),a("strong",[e._v("1_blocks")]),e._v(" ). You can find the corresponding menus in Weaver.")]),e._v(" "),a("h3",{attrs:{id:"access-rights-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-management"}},[e._v("#")]),e._v(" Access rights management")]),e._v(" "),a("p",[e._v("The rules of access rights are configured by filling in the corresponding contract expressions "),a("strong",[e._v("ContractConditions(“@1MainCondition”)")]),e._v(", "),a("strong",[e._v("ContractAccess(“@1MainCondition”)")]),e._v(" or logical expressions in the permission field. If the result of the request expression passes (true ), then access is granted. Otherwise, access is denied and related operations are terminated.")]),e._v(" "),a("p",[e._v("The easy way to define rights is to enter a logical expression in the right field. For example, "),a("code",[e._v("$key_id == 8919730491904441614")]),e._v(", where "),a("strong",[e._v("$keyid")]),e._v(" represents the ID of an ecosystem member.")]),e._v(" "),a("p",[e._v("The most common and recommended way to define rights is to use the "),a("code",[e._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),e._v(" function. The contract name "),a("strong",[e._v("ContractsName")]),e._v(" is passed to the function as a parameter, and the contract result must be the result of a logical expression (true or false).")]),e._v(" "),a("p",[e._v("Another way to define rights is to use the "),a("code",[e._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),e._v(" function. The contract "),a("strong",[e._v("ContractsName")]),e._v(" qualified to implement the corresponding operation can be passed to the function as a parameter. For example, if the right field of the amount column is configured as "),a("code",[e._v('ContractAccess("@1TokenTransfer")')]),e._v(", then you can only implement the contract "),a("strong",[e._v("@1TokenTransfer")]),e._v(" if you want to change the value in the amount column. The right to access the contract itself can be managed in the conditions section, which are quite complex and may contain many other contracts.")]),e._v(" "),a("h3",{attrs:{id:"exclusive-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exclusive-rights"}},[e._v("#")]),e._v(" Exclusive rights")]),e._v(" "),a("p",[e._v("In case of emergencies or situations that are critical to the operation of an ecosystem, there are many special parameters in the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") (such as "),a("em",[e._v("changing_contracts")]),e._v(", "),a("em",[e._v("changing_pages")]),e._v(" ), etc., which defines rights to access all contracts, data tables, and pages of the current ecosystem. These rights are configured by key contracts.")]),e._v(" "),a("h2",{attrs:{id:"virtual-private-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecosystem"}},[e._v("#")]),e._v(" Virtual private ecosystem")]),e._v(" "),a("p",[e._v("In IBAX, you can create a virtual private ecosystem - "),a("strong",[e._v("Cross Ledgers Base (CLB)")]),e._v(". A CLB has the full functionality of the standard ecosystem, but operates outside the blockchain. In CLB, you can use and create contracts and template languages, tables, and use Weaver to create applications. You may call contracts on the blockchain ecosystem via API.")]),e._v(" "),a("h3",{attrs:{id:"requests-to-web-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requests-to-web-resources"}},[e._v("#")]),e._v(" Requests to web resources")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The main difference between a CLB and a standard ecosystem is that you can use contract functions ([HTTPRequest](../topics/script.md#httprequest)) and ([HTTPPostJSON](../topics/script.md#httppostjson)) to request any web resource within the contract via HTTP / HTTPS requests. Parameters passed to this function include: URLs, request methods (GET or POST), request headers and request parameters.\n")])])]),a("h3",{attrs:{id:"rights-to-read-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rights-to-read-data"}},[e._v("#")]),e._v(" Rights to read data")]),e._v(" "),a("p",[e._v("Though it is readable, data in CLB is not saved within the blockchain. You can choose to grant the read permission to database tables. You can set rights to read for individual columns, or for any row using a special contract.")]),e._v(" "),a("h3",{attrs:{id:"clb-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-creation"}},[e._v("#")]),e._v(" CLB creation")]),e._v(" "),a("p",[e._v("You may create a CLB node on the network. As predefined, the CLB node administrator is privileged to use the ecosystem list with the CLB functionality, and designate a user with ecosystem creator privileges to install applications, receive new members and configure the resources access permissions.")]),e._v(" "),a("h3",{attrs:{id:"clb-usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-usage"}},[e._v("#")]),e._v(" CLB usage")]),e._v(" "),a("p",[e._v("You may use a CLB to create registration forms, send verification information to users via email or phone, and store publicly accessible data. You can write and test applications, and then import them into the blockchain ecosystem. In a CLB, you may use scheduling contract tasks, create oracle machines to receive data from web resources and send such data to the blockchain ecosystem.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{514:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ibax-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-overview"}},[e._v("#")]),e._v(" IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-overview"}},[e._v("IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#features"}},[e._v("Features")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#architecture"}},[e._v("Architecture")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#network"}},[e._v("Network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[e._v("Honor Node")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#transactions"}},[e._v("Transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#network-protocol"}},[e._v("Network protocol")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-and-transaction-verification"}},[e._v("Block and transaction verification")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#database"}},[e._v("Database")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[e._v("ECOLIB")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ide"}},[e._v("IDE")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#applications"}},[e._v("Applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables"}},[e._v("Tables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-parameters"}},[e._v("Ecosystem Parameters")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#access-rights-control-mechanism"}},[e._v("Access rights control mechanism")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#access-rights-management"}},[e._v("Access rights management")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exclusive-rights"}},[e._v("Exclusive rights")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecosystem"}},[e._v("Virtual private ecosystem")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#requests-to-web-resources"}},[e._v("Requests to web resources")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rights-to-read-data"}},[e._v("Rights to read data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-creation"}},[e._v("CLB creation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-usage"}},[e._v("CLB usage")])])])])])])]),e._v(" "),a("h2",{attrs:{id:"features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[e._v("#")]),e._v(" Features")]),e._v(" "),a("p",[e._v("The IBAX Network (IBAX) has an integrated application development environment (IDE). It is a multi-level access control system for data, user pages and smart contracts.")]),e._v(" "),a("p",[e._v("In terms of its structure and functions, IBAX is quite different from most existing blockchain platforms:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The development and use of IBAX applications are in an autonomous software environment called "),a("strong",[e._v("ecosystem")]),e._v(". Each ecosystem has its own membership rules that are initially established by the creator;")])]),e._v(" "),a("li",[a("p",[e._v("Ecosystem activities, such as the data involved in "),a("font",{attrs:{color:"Red"}},[e._v("database table")]),e._v(" records or updates, are based on "),a("strong",[e._v("registers")]),e._v(" created with "),a("strong",[e._v("smart contracts")]),e._v(". In most other blockchain platforms, activities are based on transaction exchange between accounts;")],1)]),e._v(" "),a("li",[a("p",[e._v("The access to "),a("strong",[e._v("registers")]),e._v(" and the control of relationships between ecosystem members are managed by a set of rules called "),a("strong",[e._v("smart laws")]),e._v(".")])])]),e._v(" "),a("h2",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("h3",{attrs:{id:"network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network"}},[e._v("#")]),e._v(" Network")]),e._v(" "),a("p",[e._v("IBAX is built on a peer-to-peer (P2P) network.")]),e._v(" "),a("p",[e._v("Guardian nodes in the network store the latest version of the blockchain database, which records the latest status of IBAX's blockchain.")]),e._v(" "),a("p",[e._v("Network users can receive data by sending requests from the guardian node database via "),a("strong",[e._v("Weaver")]),e._v(" or REST API commands. After signing by users, new requests are sent to the network as transactions in binary format. Essentially, these transactions are commands to modify relevant database records. Transactions are aggregated in blocks, and such blocks are sent to the blockchains of all network nodes. Each guardian node will process the transactions in the block, thereby updating the corresponding data in the database.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor Node")]),e._v(" "),a("p",[e._v("A guardian node which is privileged to generate new blocks in the network is called a honor node. The maximum number of honor nodes is defined by "),a("RouterLink",{attrs:{to:"/zh-CN/reference/platform-parameters.html#number-of-nodes"}},[e._v("number_of_nodes")]),e._v(" in the platform parameters table, showing that the number of honor nodes is limited.")],1),e._v(" "),a("p",[e._v("An Honor Node is one of the key components of IBAX Public Network. It executes and validates transactions, collects transaction information from other nodes, adds transactions to the queue, and verifies the correctness and validity of new blocks using the confirmation mechanism. Generally, it has two states: packaging and on-packaging.")]),e._v(" "),a("p",[e._v("An Honor Node in the packaging state delivers the highest performance. It obtains transaction requests to be executed from the transaction queue and verifies the ignature validity and correctness of transactions, e.g. transfer amount, permission for transaction operations, and accurate execution of transactions. All ransactional operations, correct or wrong (wrong transactions will be rolled back), will be written into the block. Wrong transactions will incur a punitive gas fee. Executed transactions are notified to other Honor Nodes along with the block through broadcasting.")]),e._v(" "),a("p",[e._v("An Honor Node in the non-packaging state is mainly responsible for block verification to ensure in-block transactions generated by a packaging node are executed orrectly. In case of an anomaly, it will trigger the exception handling mechanism and IBAX Network will roll back and re-verify the block.")]),e._v(" "),a("p",[e._v("In order to ensure transaction execution efficiency, Honor Nodes collect transaction information constantly.")]),e._v(" "),a("h3",{attrs:{id:"transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transactions"}},[e._v("#")]),e._v(" Transactions")]),e._v(" "),a("p",[e._v("Transactions, including data used to implement "),a("strong",[e._v("smart contracts")]),e._v(", are generated by Weaver.")]),e._v(" "),a("p",[e._v("Transactions are signed by users with a private key. The private key and Weaver's signature function can be stored in browsers, software clients, SIM cards or dedicated physical devices. In the current implementation, the private key is encrypted with the ECDSA algorithm and stored at the Weaver side. All transactions are signed with the ECDSA algorithm.")]),e._v(" "),a("p",[e._v("The structure of a transaction complies with the following format:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("ID - ID of the contract implemented;")])]),e._v(" "),a("li",[a("p",[e._v("Params - parameters sent to the contract;")])]),e._v(" "),a("li",[a("p",[e._v("KeyID - ID of the user sending the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("PublicKey - public key of the honor node;")])]),e._v(" "),a("li",[a("p",[e._v("Time - timestamp generated by the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("EcosystemID - ID of the ecosystem where the transaction is made;")])]),e._v(" "),a("li",[a("p",[e._v("ТokenEcosystem - ID of the ecosystem, 1 by default, and tokens within it are used to cover the transaction costs.")])])]),e._v(" "),a("h3",{attrs:{id:"network-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network-protocol"}},[e._v("#")]),e._v(" Network protocol")]),e._v(" "),a("p",[e._v("Transactions will be sent to honor nodes by users, where they are subject to basic verification to ensure the formats are correct and then are added to the queue. Transactions are also sent to other honor nodes on the network and added to the respective queue.")]),e._v(" "),a("p",[e._v("A honor node is privileged to generate new blocks within a specific time period which is determined by the platform parameter "),a("strong",[e._v("full_nodes")]),e._v(" and a special algorithm. Honor nodes retrieve transactions from queues and send them to the block generator. When generating a new block, transactions in such block will also be processed: each transaction is sent to a virtual machine, where the contract corresponding to the transaction parameters is implemented, thereby updating records in the database.")]),e._v(" "),a("p",[e._v("New blocks should be verified to ensure there are no errors before sending to other honor nodes on other networks.")]),e._v(" "),a("p",[e._v("A new block will be added to the block queue when received by other honor node and, after verification, to the blockchain of the honor node where it is located to process transactions in the block, and thereby updating records in the database.")]),e._v(" "),a("h3",{attrs:{id:"block-and-transaction-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-and-transaction-verification"}},[e._v("#")]),e._v(" Block and transaction verification")]),e._v(" "),a("p",[e._v("After generating or receiving a new block, it will be verified on all other honor nodes, which cover the following:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The first byte of the data received should be 0. If not, the data received will not be considered as a block;")])]),e._v(" "),a("li",[a("p",[e._v("The received block generation timestamp should be before the current timestamp;")])]),e._v(" "),a("li",[a("p",[e._v("The block generation timestamp should correspond to the time interval at which the honor node having privilege to generate new blocks;")])]),e._v(" "),a("li",[a("p",[e._v("The height of a new block should be greater than the height of the largest block on the existing blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the maximum expenses allowed for all transactions in the block;")])]),e._v(" "),a("li",[a("p",[e._v("The block must be properly signed with the secret key of the node which it is located. The signature data should contain:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The height of the block, the hash of the previous block, the timestamp of the block, the ID of the ecosystem where the block is located, and the account address of the honor node of the block;")])]),e._v(" "),a("li",[a("p",[e._v("The position of the honor node in the platform parameter full_nodes array, the Merkel Root (MrklRoot) of all transactions in the block, and the revert hash of the previous block.")])])])])]),e._v(" "),a("p",[e._v("To check the correctness of each transaction in the block with the following methods:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The hash of each transaction must be unique;")])]),e._v(" "),a("li",[a("p",[e._v("A key-signed transaction cannot exceed the limit ("),a("RouterLink",{attrs:{to:"/zh-CN/reference/platform-parameters.html#max-tx-block-per-user"}},[e._v("max_tx_block_per_user")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the limit of the maximum transaction size ("),a("RouterLink",{attrs:{to:"/zh-CN/reference/platform-parameters.html#max-tx-size"}},[e._v("max_tx_size")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("The transaction time can neither be greater than the block generation time nor be greater than the block generation time plus 600 seconds, and it can be no less than the block generation time minus 86400 seconds;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction must be signed properly;")])]),e._v(" "),a("li",[a("p",[e._v("The user who implements the contract must have sufficient tokens in his account to pay for the transaction cost.")])])]),e._v(" "),a("h3",{attrs:{id:"database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database"}},[e._v("#")]),e._v(" Database")]),e._v(" "),a("p",[e._v("The underlying data storage layer of IBAX Network is a "),a("code",[e._v("PGSQL")]),e._v(" database completely open to the public. Based on the permission design of the IBAX Operating System Platform, users do not need to worry about data security. With an object-oriented design philosophy, IBAX Network pre-compiles data through a relational PGSQL database and improves the data processing efficiency.")]),e._v(" "),a("p",[e._v("You may be interested in the following if you are a technical specialist, or just skip it if you are not.\n① All tables without a number prefix in their name belong to permission tables of IBAX Network Basic;\n② All tables with a number prefix in their name belong to permission tables of ecoLibs.")]),e._v(" "),a("h2",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[e._v("#")]),e._v(" ECOLIB")]),e._v(" "),a("p",[e._v("It is quite easy for users, even common users, to create an ecoLib of their own on the IBAX Network System Platform. We have integrated and developed an application where ecoLib creation takes just one click.")]),e._v(" "),a("p",[e._v("When creating an ecoLib, you can configure the ecosystem parameters and rules, and set the administrator account and charging model. Most importantly, to apply the DPoA consensus within ecoLibs better, creators can set it up by writing or importing their own contracts.")]),e._v(" "),a("p",[e._v("We support quick emission of ecoLib tokens by importing contract templates.")]),e._v(" "),a("p",[e._v("Due to the differences in consensus and management permissions, ecoLibs fall into decentralized and centralized ones. They have no specific advantage or disadvantage by type. You should choose the appropriate one against your service needs. What to do if it is OK for now but not for the future? You can change ecoLib parameters, even the consensus mechanism, token, and governance method, on the IBAX Network System Platform. You can leave it all to the self-governance mechanism maintained by the ecoLib administrator or members (depending on the ecoLib type).")]),e._v(" "),a("p",[e._v("On the IBAX Network System Platform, an ecoLib has complete data control permissions and permissions to design and access independent database tables and fields. In the data control permission design, we support triggering when a field satisfies a logical expression. This feature allows for imagination space in special services like monitoring, logic satisfaction, and triggering by time and specific conditions.")]),e._v(" "),a("p",[e._v("There may be multiple DApps in an ecoLib, and each of them can have independent parameters. An ecoLib is like a platform where you can implement anything you want.")]),e._v(" "),a("p",[e._v("In order to better support ecosystem developers, we provide the editing, management, and development tool Weaver. It will reduce the ecosystem development, maintenance, and management costs greatly.")]),e._v(" "),a("h3",{attrs:{id:"ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[e._v("#")]),e._v(" IDE")]),e._v(" "),a("p",[e._v("Weaver has a complete integrated development environment (IDE) for creating blockchain applications, which does not require software developers to have a deep understanding of the blockchain technology.")]),e._v(" "),a("p",[e._v("Weaver provides a table management tool, contract editor, page editor and other functions needed to create applications in the ecosystem, without the support of any software module.")]),e._v(" "),a("p",[e._v("The IDE mainly includes the following parts:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("list of ecosystem parameters;")])]),e._v(" "),a("li",[a("p",[e._v("contract editor;")])]),e._v(" "),a("li",[a("p",[e._v("table management tool;")])]),e._v(" "),a("li",[a("p",[e._v("page editor and visual page designer;")])]),e._v(" "),a("li",[a("p",[e._v("multi-language resources editor;")])]),e._v(" "),a("li",[a("p",[e._v("application import/export functions.")])])]),e._v(" "),a("h3",{attrs:{id:"applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#applications"}},[e._v("#")]),e._v(" Applications")]),e._v(" "),a("p",[e._v("An application is a collection of elements such as database tables, smart contracts, and user pages with access rights for configuration. The ecosystem to which the application element belongs is indicated by the prefix in the element name, such as "),a("code",[e._v("@1ElementName")]),e._v(", where the ecosystem ID is indicated by the number "),a("code",[e._v("1")]),e._v(" after the "),a("code",[e._v("@")]),e._v(" symbol. When using application elements in the current ecosystem, the prefix "),a("code",[e._v("@1")]),e._v(" can be omitted. These applications can perform useful functions or implement various services.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("In IBAX's database, each ecosystem can create an unlimited number of tables. Tables of a specific ecosystem can be identified by a prefix containing the ecosystem ID, which will not be displayed in Weaver.")]),e._v(" "),a("p",[e._v("A table is not bound in any way and belongs to a certain contract. It can be used by all applications within the scope of the table's access rights.")]),e._v(" "),a("p",[e._v("Each ecosystem can create a set of data tables for developing its applications or may, possibly, access data tables of other ecosystems by specifying the table name prefix.")]),e._v(" "),a("p",[e._v("By configuring access rights through smart laws, data are logged into tables. Smart laws are used for rights management.")]),e._v(" "),a("blockquote",[a("p",[e._v("Table table management tool")])]),e._v(" "),a("p",[e._v("You can find the table management tool in Weaver menu Table, which cover the following functions:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("View the list of tables and their entries;")])]),e._v(" "),a("li",[a("p",[e._v("Create new tables;")])]),e._v(" "),a("li",[a("p",[e._v("Add a table field and specify its data type, such as "),a("code",[e._v("Text, Date/Time, Varchar, Character, JSON, Number, Money, Double, Binary")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Manage privileges for insert, update data and change table structure.")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Table data manipulation")])]),e._v(" "),a("p",[e._v("For better database manipulation, both Needle and Logicor have the "),a("strong",[e._v("DBFind")]),e._v(" function, which is used to retrieve values and data arrays from tables.")]),e._v(" "),a("p",[e._v("The contract language "),a("strong",[e._v("DBInsert")]),e._v(" function is used to add entries to tables. The "),a("strong",[e._v("DBUpdate")]),e._v(" and "),a("strong",[e._v("DBUpdateExt")]),e._v(" functions are used to update the value of an existing entry. During updating, the corresponding data in tables will be updated, and the blockchain will add new transactions while retaining all historical transactions. Data in tables can only be modified and cannot be deleted.")]),e._v(" "),a("p",[e._v("In order to minimize the contract implementation time, the "),a("strong",[e._v("DBFind")]),e._v(" function cannot query multiple tables simultaneously, and JOIN is not supported. Therefore, we recommend not to normalize application tables, but to store all available information in entries or repeat the information available in other tables. This is not mandatory but necessary for a blockchain application. In this case, data should be stored fully, which cannot be updated even if the same data in other tables is updated, though it is updated synchronously in a relational database.")]),e._v(" "),a("h3",{attrs:{id:"ecosystem-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-parameters"}},[e._v("#")]),e._v(" Ecosystem Parameters")]),e._v(" "),a("p",[e._v("You may view and edit the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") in Weaver's menu. Ecosystem parameters can be divided into the following groups:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("General parameters: the account of the ecosystem creator (founder_account) and other information;")])]),e._v(" "),a("li",[a("p",[e._v("Access rights parameters: used to define access permissions for application elements")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("change the table structure (changing_tables);")])]),e._v(" "),a("li",[a("p",[e._v("change the contract (changing_contracts);")])]),e._v(" "),a("li",[a("p",[e._v("change the user page (changing_page);")])]),e._v(" "),a("li",[a("p",[e._v("change the menu (changing_menu);")])]),e._v(" "),a("li",[a("p",[e._v("change the multi-language resources (changing_language).")])])])]),e._v(" "),a("li",[a("p",[e._v("Technical parameters: used to define the user styles (stylesheet);")])]),e._v(" "),a("li",[a("p",[e._v("User parameters: used to define constants or lists (separated by commas) required for application operation.")])])]),e._v(" "),a("p",[e._v("You may specify the edit permission for parameters of each ecosystem.")]),e._v(" "),a("p",[e._v("You may use the EcosysParam function to retrieve the value of an ecosystem parameter by passing the ecosystem parameter title as a parameter to it.")]),e._v(" "),a("h2",{attrs:{id:"access-rights-control-mechanism"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-control-mechanism"}},[e._v("#")]),e._v(" Access rights control mechanism")]),e._v(" "),a("p",[e._v("IBAX has a multi-level access permission management system. By configuring access rights, you can create and change any application element, such as the contracts, tables, user pages, ecosystem parameters. You may also change the access rights through configuration.")]),e._v(" "),a("p",[e._v("By default, all rights in the IBAX ecosystem are managed by its creator, which is defined in the MainCondition contract of each ecosystem. But after creating smart laws, access control can be transferred to all or a group of ecosystem members.\nAccess rights control")]),e._v(" "),a("p",[e._v("The access rights are defined in contract tables ("),a("strong",[e._v("1_contracts")]),e._v(" ), data tables ("),a("strong",[e._v("1_tables")]),e._v(" ), user page tables ("),a("strong",[e._v("1_pages")]),e._v(" ), menu tables ("),a("strong",[e._v("1_menu")]),e._v(" ), and code block tables ("),a("strong",[e._v("1_blocks")]),e._v(" ). You can find the corresponding menus in Weaver.")]),e._v(" "),a("h3",{attrs:{id:"access-rights-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-management"}},[e._v("#")]),e._v(" Access rights management")]),e._v(" "),a("p",[e._v("The rules of access rights are configured by filling in the corresponding contract expressions "),a("strong",[e._v("ContractConditions(“@1MainCondition”)")]),e._v(", "),a("strong",[e._v("ContractAccess(“@1MainCondition”)")]),e._v(" or logical expressions in the permission field. If the result of the request expression passes (true ), then access is granted. Otherwise, access is denied and related operations are terminated.")]),e._v(" "),a("p",[e._v("The easy way to define rights is to enter a logical expression in the right field. For example, "),a("code",[e._v("$key_id == 8919730491904441614")]),e._v(", where "),a("strong",[e._v("$keyid")]),e._v(" represents the ID of an ecosystem member.")]),e._v(" "),a("p",[e._v("The most common and recommended way to define rights is to use the "),a("code",[e._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),e._v(" function. The contract name "),a("strong",[e._v("ContractsName")]),e._v(" is passed to the function as a parameter, and the contract result must be the result of a logical expression (true or false).")]),e._v(" "),a("p",[e._v("Another way to define rights is to use the "),a("code",[e._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),e._v(" function. The contract "),a("strong",[e._v("ContractsName")]),e._v(" qualified to implement the corresponding operation can be passed to the function as a parameter. For example, if the right field of the amount column is configured as "),a("code",[e._v('ContractAccess("@1TokenTransfer")')]),e._v(", then you can only implement the contract "),a("strong",[e._v("@1TokenTransfer")]),e._v(" if you want to change the value in the amount column. The right to access the contract itself can be managed in the conditions section, which are quite complex and may contain many other contracts.")]),e._v(" "),a("h3",{attrs:{id:"exclusive-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exclusive-rights"}},[e._v("#")]),e._v(" Exclusive rights")]),e._v(" "),a("p",[e._v("In case of emergencies or situations that are critical to the operation of an ecosystem, there are many special parameters in the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") (such as "),a("em",[e._v("changing_contracts")]),e._v(", "),a("em",[e._v("changing_pages")]),e._v(" ), etc., which defines rights to access all contracts, data tables, and pages of the current ecosystem. These rights are configured by key contracts.")]),e._v(" "),a("h2",{attrs:{id:"virtual-private-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecosystem"}},[e._v("#")]),e._v(" Virtual private ecosystem")]),e._v(" "),a("p",[e._v("In IBAX, you can create a virtual private ecosystem - "),a("strong",[e._v("Cross Ledgers Base (CLB)")]),e._v(". A CLB has the full functionality of the standard ecosystem, but operates outside the blockchain. In CLB, you can use and create contracts and template languages, tables, and use Weaver to create applications. You may call contracts on the blockchain ecosystem via API.")]),e._v(" "),a("h3",{attrs:{id:"requests-to-web-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requests-to-web-resources"}},[e._v("#")]),e._v(" Requests to web resources")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The main difference between a CLB and a standard ecosystem is that you can use contract functions ([HTTPRequest](../topics/script.md#httprequest)) and ([HTTPPostJSON](../topics/script.md#httppostjson)) to request any web resource within the contract via HTTP / HTTPS requests. Parameters passed to this function include: URLs, request methods (GET or POST), request headers and request parameters.\n")])])]),a("h3",{attrs:{id:"rights-to-read-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rights-to-read-data"}},[e._v("#")]),e._v(" Rights to read data")]),e._v(" "),a("p",[e._v("Though it is readable, data in CLB is not saved within the blockchain. You can choose to grant the read permission to database tables. You can set rights to read for individual columns, or for any row using a special contract.")]),e._v(" "),a("h3",{attrs:{id:"clb-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-creation"}},[e._v("#")]),e._v(" CLB creation")]),e._v(" "),a("p",[e._v("You may create a CLB node on the network. As predefined, the CLB node administrator is privileged to use the ecosystem list with the CLB functionality, and designate a user with ecosystem creator privileges to install applications, receive new members and configure the resources access permissions.")]),e._v(" "),a("h3",{attrs:{id:"clb-usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-usage"}},[e._v("#")]),e._v(" CLB usage")]),e._v(" "),a("p",[e._v("You may use a CLB to create registration forms, send verification information to users via email or phone, and store publicly accessible data. You can write and test applications, and then import them into the blockchain ecosystem. In a CLB, you may use scheduling contract tasks, create oracle machines to receive data from web resources and send such data to the blockchain ecosystem.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/135.031ac685.js b/assets/js/135.7858dd33.js similarity index 99% rename from assets/js/135.031ac685.js rename to assets/js/135.7858dd33.js index a389e67..36b054d 100644 --- a/assets/js/135.031ac685.js +++ b/assets/js/135.7858dd33.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[135],{514:function(e,t,a){"use strict";a.r(t);var i=a(51),o=Object(i.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"the-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[e._v("#")]),e._v(" The IBAX Network")]),e._v(" "),a("p",[e._v("In this section, we will brief you how to use IBAX.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-ibax-network"}},[e._v("The IBAX Network")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#application-developers"}},[e._v("Application developers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[e._v("ECOLIB members")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("ECOLIB applications and platform applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#underlying-model"}},[e._v("Underlying model")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#implementation"}},[e._v("Implementation")])])])])]),e._v(" "),a("p",[e._v("If you are interested in the development, use or management of applications in IBAX, then you may not need to understand it at all.")]),e._v(" "),a("p",[e._v("In IBAX, the blockchain and the blockchain network are hidden from ECOLIB members, administrators, and application developers. IBAX offers "),a("RouterLink",{attrs:{to:"/zh-CN/reference/api2.html"}},[e._v("RESTful API")]),e._v(" for all user groups, which provide a tamper-proof and distributed access to the "),a("strong",[e._v("global state")]),e._v(" of the blockchain.")],1),e._v(" "),a("h2",{attrs:{id:"application-developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-developers"}},[e._v("#")]),e._v(" Application developers")]),e._v(" "),a("p",[e._v("In technical terms, the "),a("strong",[e._v("global state")]),e._v(" is a set of data, which is implemented via IBAX's database. From the perspective of application developers, an application interacts with the database by querying, inserting and updating tables.")]),e._v(" "),a("p",[e._v("In IBAX, transactions are written into the blockchain by implementing various contracts. These transactions will call contract codes implemented by blockchain network nodes, which will update the global state (database) accordingly.")]),e._v(" "),a("p",[e._v("For application developers, a contract is a function that data will be written to the database when it is implemented. Pages are like scripts and the page code is a set of page "),a("RouterLink",{attrs:{to:"/zh-CN/topics/templates2.html"}},[e._v("template")]),e._v(" functions, some of these functions display page elements, while other data comes from the database. Application developers do not need to understand what are transactions, block generation and consensus algorithms, just use it.")],1),e._v(" "),a("h2",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[e._v("#")]),e._v(" ECOLIB members")]),e._v(" "),a("p",[e._v("Applications written by developers run in an environment called "),a("RouterLink",{attrs:{to:"/zh-CN/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(". An application usually serves a specific purpose and complete various tasks together with several other applications.")],1),e._v(" "),a("p",[e._v("A user must become a member of an ECOLIB if wants to access applications in it, and it can be a member of multiple different ECOLIBs at the same time.")]),e._v(" "),a("p",[e._v("ECOLIB members can view and modify the database from application pages, just like filling out forms, clicking buttons and navigating pages in a common web application.")]),e._v(" "),a("h2",{attrs:{id:"ecolib-applications-and-platform-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("#")]),e._v(" ECOLIB applications and platform applications")]),e._v(" "),a("p",[e._v("Applications may fall into "),a("strong",[e._v("ECOLIB applications")]),e._v(" and "),a("strong",[e._v("platform applications")]),e._v(".")]),e._v(" "),a("p",[e._v("ECOLIB applications")]),e._v(" "),a("p",[e._v("An ECOLIB application implements certain unique functions or business processes of an ECOLIB, but it is only available in that ECOLIB.\nPlatform applications")]),e._v(" "),a("p",[e._v("A platform application is applicable to all ECOLIBs. Any application could be developed as a platform application. IBAX developers would provide platform applications that support the core functions for ECOLIB governance, such as voting, notification, and ECOLIB member role management.")]),e._v(" "),a("h2",{attrs:{id:"underlying-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#underlying-model"}},[e._v("#")]),e._v(" Underlying model")]),e._v(" "),a("p",[e._v("Definition of layers")]),e._v(" "),a("p",[e._v("IBAX consists of several layers:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("User interaction layer")]),e._v(" "),a("p",[e._v("ECOLIB members interact with the application through pages and page elements.")])]),e._v(" "),a("li",[a("p",[e._v("Application layer")]),e._v(" "),a("p",[e._v("Application developers interact with the global state (data tables) through contract codes and page codes.")])]),e._v(" "),a("li",[a("p",[e._v("Global state layer")]),e._v(" "),a("p",[e._v("Update and synchronize the global state (database) based on operations written to the distributed ledger (blockchain)")])]),e._v(" "),a("li",[a("p",[e._v("Blockchain layer")]),e._v(" "),a("p",[e._v("Update the distributed ledger with new blocks. Operations (transactions) saved in new blocks must be performed on the global state.")])]),e._v(" "),a("li",[a("p",[e._v("Node network layer")]),e._v(" "),a("p",[e._v("It implemented the IBAX Network protocol, which distributes, verifies transactions and generates new blocks on the node network. Similarly, new blocks are distributed and verified by the node network.")]),e._v(" "),a("p",[e._v("The distributed ledger of all nodes is kept in sync. If having conflicts in a node, the node will identify which blockchains are considered valid and invalid blockchains will be rolled back accordingly.")])]),e._v(" "),a("li",[a("p",[e._v("Transaction layer")]),e._v(" "),a("p",[e._v("Transactions are the basis for generating blocks and blockchain protocols, and transactions themselves are the results of operations performed at the user interaction layer. Transactions are generated by Weaver.")]),e._v(" "),a("p",[e._v("When a user or developer performs an operation such as clicking a button on a page or implement a contract from the code editor, Weaver will convert this operation into a transaction and send it to the network node connected to it.")])])]),e._v(" "),a("p",[e._v("Therefore, the flow of transactions is as follows:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("A user operation in a user page will become a transaction;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction is contained in a block;")])]),e._v(" "),a("li",[a("p",[e._v("The block is included in the blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("The change of operation will cause the global state of the blockchain to change, and such operation will be applied to the database;")])]),e._v(" "),a("li",[a("p",[e._v("Any database change will be reflected in the application.")])])]),e._v(" "),a("h2",{attrs:{id:"implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),a("p",[e._v("IBAX has two major components, i.e. server "),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),a("OutboundLink")],1),e._v(" and Weaver "),a("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source code"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Weaver:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Providing the user pages;")])]),e._v(" "),a("li",[a("p",[e._v("Providing the IDE for application development;")])]),e._v(" "),a("li",[a("p",[e._v("Storing public keys of user accounts and perform authorization;")])]),e._v(" "),a("li",[a("p",[e._v("Requesting database data from application pages and display application pages to users;")])]),e._v(" "),a("li",[a("p",[e._v("Sending transactions to the server through "),a("RouterLink",{attrs:{to:"/zh-CN/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),a("p",[e._v("In order to automatically create transactions against user operations, Weaver will convert such operations into transactions when application developers implement a contract from the IDE.")])])]),e._v(" "),a("p",[e._v("Server:")]),e._v(" "),a("ul",[a("li",[e._v("Keeping the global state (database) of the node;")]),e._v(" "),a("li",[e._v("Implementation of the blockchain protocol;")]),e._v(" "),a("li",[e._v("Implementation of contract codes in the IBAX "),a("RouterLink",{attrs:{to:"/zh-CN/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of page codes in the "),a("RouterLink",{attrs:{to:"/zh-CN/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of "),a("RouterLink",{attrs:{to:"/zh-CN/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[135],{515:function(e,t,a){"use strict";a.r(t);var i=a(51),o=Object(i.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"the-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[e._v("#")]),e._v(" The IBAX Network")]),e._v(" "),a("p",[e._v("In this section, we will brief you how to use IBAX.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-ibax-network"}},[e._v("The IBAX Network")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#application-developers"}},[e._v("Application developers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[e._v("ECOLIB members")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("ECOLIB applications and platform applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#underlying-model"}},[e._v("Underlying model")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#implementation"}},[e._v("Implementation")])])])])]),e._v(" "),a("p",[e._v("If you are interested in the development, use or management of applications in IBAX, then you may not need to understand it at all.")]),e._v(" "),a("p",[e._v("In IBAX, the blockchain and the blockchain network are hidden from ECOLIB members, administrators, and application developers. IBAX offers "),a("RouterLink",{attrs:{to:"/zh-CN/reference/api2.html"}},[e._v("RESTful API")]),e._v(" for all user groups, which provide a tamper-proof and distributed access to the "),a("strong",[e._v("global state")]),e._v(" of the blockchain.")],1),e._v(" "),a("h2",{attrs:{id:"application-developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-developers"}},[e._v("#")]),e._v(" Application developers")]),e._v(" "),a("p",[e._v("In technical terms, the "),a("strong",[e._v("global state")]),e._v(" is a set of data, which is implemented via IBAX's database. From the perspective of application developers, an application interacts with the database by querying, inserting and updating tables.")]),e._v(" "),a("p",[e._v("In IBAX, transactions are written into the blockchain by implementing various contracts. These transactions will call contract codes implemented by blockchain network nodes, which will update the global state (database) accordingly.")]),e._v(" "),a("p",[e._v("For application developers, a contract is a function that data will be written to the database when it is implemented. Pages are like scripts and the page code is a set of page "),a("RouterLink",{attrs:{to:"/zh-CN/topics/templates2.html"}},[e._v("template")]),e._v(" functions, some of these functions display page elements, while other data comes from the database. Application developers do not need to understand what are transactions, block generation and consensus algorithms, just use it.")],1),e._v(" "),a("h2",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[e._v("#")]),e._v(" ECOLIB members")]),e._v(" "),a("p",[e._v("Applications written by developers run in an environment called "),a("RouterLink",{attrs:{to:"/zh-CN/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(". An application usually serves a specific purpose and complete various tasks together with several other applications.")],1),e._v(" "),a("p",[e._v("A user must become a member of an ECOLIB if wants to access applications in it, and it can be a member of multiple different ECOLIBs at the same time.")]),e._v(" "),a("p",[e._v("ECOLIB members can view and modify the database from application pages, just like filling out forms, clicking buttons and navigating pages in a common web application.")]),e._v(" "),a("h2",{attrs:{id:"ecolib-applications-and-platform-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("#")]),e._v(" ECOLIB applications and platform applications")]),e._v(" "),a("p",[e._v("Applications may fall into "),a("strong",[e._v("ECOLIB applications")]),e._v(" and "),a("strong",[e._v("platform applications")]),e._v(".")]),e._v(" "),a("p",[e._v("ECOLIB applications")]),e._v(" "),a("p",[e._v("An ECOLIB application implements certain unique functions or business processes of an ECOLIB, but it is only available in that ECOLIB.\nPlatform applications")]),e._v(" "),a("p",[e._v("A platform application is applicable to all ECOLIBs. Any application could be developed as a platform application. IBAX developers would provide platform applications that support the core functions for ECOLIB governance, such as voting, notification, and ECOLIB member role management.")]),e._v(" "),a("h2",{attrs:{id:"underlying-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#underlying-model"}},[e._v("#")]),e._v(" Underlying model")]),e._v(" "),a("p",[e._v("Definition of layers")]),e._v(" "),a("p",[e._v("IBAX consists of several layers:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("User interaction layer")]),e._v(" "),a("p",[e._v("ECOLIB members interact with the application through pages and page elements.")])]),e._v(" "),a("li",[a("p",[e._v("Application layer")]),e._v(" "),a("p",[e._v("Application developers interact with the global state (data tables) through contract codes and page codes.")])]),e._v(" "),a("li",[a("p",[e._v("Global state layer")]),e._v(" "),a("p",[e._v("Update and synchronize the global state (database) based on operations written to the distributed ledger (blockchain)")])]),e._v(" "),a("li",[a("p",[e._v("Blockchain layer")]),e._v(" "),a("p",[e._v("Update the distributed ledger with new blocks. Operations (transactions) saved in new blocks must be performed on the global state.")])]),e._v(" "),a("li",[a("p",[e._v("Node network layer")]),e._v(" "),a("p",[e._v("It implemented the IBAX Network protocol, which distributes, verifies transactions and generates new blocks on the node network. Similarly, new blocks are distributed and verified by the node network.")]),e._v(" "),a("p",[e._v("The distributed ledger of all nodes is kept in sync. If having conflicts in a node, the node will identify which blockchains are considered valid and invalid blockchains will be rolled back accordingly.")])]),e._v(" "),a("li",[a("p",[e._v("Transaction layer")]),e._v(" "),a("p",[e._v("Transactions are the basis for generating blocks and blockchain protocols, and transactions themselves are the results of operations performed at the user interaction layer. Transactions are generated by Weaver.")]),e._v(" "),a("p",[e._v("When a user or developer performs an operation such as clicking a button on a page or implement a contract from the code editor, Weaver will convert this operation into a transaction and send it to the network node connected to it.")])])]),e._v(" "),a("p",[e._v("Therefore, the flow of transactions is as follows:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("A user operation in a user page will become a transaction;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction is contained in a block;")])]),e._v(" "),a("li",[a("p",[e._v("The block is included in the blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("The change of operation will cause the global state of the blockchain to change, and such operation will be applied to the database;")])]),e._v(" "),a("li",[a("p",[e._v("Any database change will be reflected in the application.")])])]),e._v(" "),a("h2",{attrs:{id:"implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),a("p",[e._v("IBAX has two major components, i.e. server "),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),a("OutboundLink")],1),e._v(" and Weaver "),a("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source code"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Weaver:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Providing the user pages;")])]),e._v(" "),a("li",[a("p",[e._v("Providing the IDE for application development;")])]),e._v(" "),a("li",[a("p",[e._v("Storing public keys of user accounts and perform authorization;")])]),e._v(" "),a("li",[a("p",[e._v("Requesting database data from application pages and display application pages to users;")])]),e._v(" "),a("li",[a("p",[e._v("Sending transactions to the server through "),a("RouterLink",{attrs:{to:"/zh-CN/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),a("p",[e._v("In order to automatically create transactions against user operations, Weaver will convert such operations into transactions when application developers implement a contract from the IDE.")])])]),e._v(" "),a("p",[e._v("Server:")]),e._v(" "),a("ul",[a("li",[e._v("Keeping the global state (database) of the node;")]),e._v(" "),a("li",[e._v("Implementation of the blockchain protocol;")]),e._v(" "),a("li",[e._v("Implementation of contract codes in the IBAX "),a("RouterLink",{attrs:{to:"/zh-CN/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of page codes in the "),a("RouterLink",{attrs:{to:"/zh-CN/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of "),a("RouterLink",{attrs:{to:"/zh-CN/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/138.7e763317.js b/assets/js/138.bd6c2fd9.js similarity index 99% rename from assets/js/138.7e763317.js rename to assets/js/138.bd6c2fd9.js index fc6612d..efdee61 100644 --- a/assets/js/138.7e763317.js +++ b/assets/js/138.bd6c2fd9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{519:function(t,e,a){"use strict";a.r(e);var r=a(51),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"terms-and-definitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#terms-and-definitions"}},[t._v("#")]),t._v(" Terms and Definitions")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-terms"}},[t._v("Blockchain terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain"}},[t._v("Blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#peer-to-peer-network"}},[t._v("Peer-to-peer network")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#hash"}},[t._v("Hash")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block"}},[t._v("Block")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block-verification"}},[t._v("Block verification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#consensus"}},[t._v("Consensus")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#token"}},[t._v("Token")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#identification"}},[t._v("Identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#unique-identification"}},[t._v("Unique identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-key"}},[t._v("Private key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-key"}},[t._v("Public key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#digital-signature"}},[t._v("Digital signature")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-contract"}},[t._v("Smart contract")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#transaction-fee"}},[t._v("Transaction fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#double-spend"}},[t._v("Double spend")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#encryption"}},[t._v("Encryption")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-blockchain"}},[t._v("Private blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-blockchain"}},[t._v("Public blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#proof-of-authority"}},[t._v("Proof of Authority")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ibax-terms"}},[t._v("IBAX Terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#testnet"}},[t._v("Testnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#mainnet"}},[t._v("Mainnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#gas-fee"}},[t._v("Gas fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#account-address"}},[t._v("Account address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#wallet-address"}},[t._v("Wallet address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#weaver"}},[t._v("Weaver")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[t._v("ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-parameters"}},[t._v("ECOLIB parameters")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[t._v("ECOLIB members")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecolib"}},[t._v("Virtual private ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#decentralized-proof-of-authority"}},[t._v("Decentralized Proof-of-Authority")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#needle"}},[t._v("Needle")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#logicor"}},[t._v("Logicor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#integrated-development-environment-ide"}},[t._v("Integrated Development Environment (IDE)")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page-editor"}},[t._v("Page editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#visual-page-designer"}},[t._v("Visual page designer")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#contract-editor"}},[t._v("Contract editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#multilingual-resources"}},[t._v("Multilingual resources")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-export"}},[t._v("Application export")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-import"}},[t._v("Application import")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-law"}},[t._v("Smart law")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#legal-system"}},[t._v("Legal system")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application"}},[t._v("Application")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page"}},[t._v("Page")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#code-segment"}},[t._v("Code segment")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#access-rights"}},[t._v("Access rights")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[t._v("Honor node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#guardian-node"}},[t._v("Guardian node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#concurrent-transaction-processing"}},[t._v("Concurrent transaction processing")])])])])]),t._v(" "),a("h2",{attrs:{id:"blockchain-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-terms"}},[t._v("#")]),t._v(" Blockchain terms")]),t._v(" "),a("h3",{attrs:{id:"blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain"}},[t._v("#")]),t._v(" Blockchain")]),t._v(" "),a("p",[t._v("Blockchain is an information system that stores data and transmits and processes data within the system to prevent data from being forged or lost while maintaining data reliability; Data protection is achieved by:")]),t._v(" "),a("p",[t._v("1.writing data into a blockchain of a series of encrypted blocks;")]),t._v(" "),a("p",[t._v("2.distributed storage of blockchain copies in peer-to-peer networks;")]),t._v(" "),a("p",[t._v("3.synchronization of blockchains on all nodes using a consensus mechanism;")]),t._v(" "),a("p",[t._v("4.ensuring data reliability when performing data operations using the network with algorithms that store data transmissions and process contracts in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"peer-to-peer-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#peer-to-peer-network"}},[t._v("#")]),t._v(" Peer-to-peer network")]),t._v(" "),a("p",[t._v("A computer network, consisting of equally privileged nodes (without a central server).")]),t._v(" "),a("h3",{attrs:{id:"hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hash"}},[t._v("#")]),t._v(" Hash")]),t._v(" "),a("p",[t._v("Also known as hashing, the binary value of any file or data set length that is mapped to a shorter fixed-length binary value.")]),t._v(" "),a("h3",{attrs:{id:"block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block"}},[t._v("#")]),t._v(" Block")]),t._v(" "),a("p",[t._v("After verifying the format and signature of the transaction, a transaction set is grouped by the honor node into a specific data structure. A block contains a hash pointer as a link to the previous block, which is one of the measures to ensure the security of blockchain encryption.")]),t._v(" "),a("h3",{attrs:{id:"block-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-verification"}},[t._v("#")]),t._v(" Block verification")]),t._v(" "),a("p",[t._v("A procedure to verify the correctness of the block structure, generation time, compatibility with the previous block, transaction signatures, and the correspondence between the transaction and the block data.")]),t._v(" "),a("h3",{attrs:{id:"consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consensus"}},[t._v("#")]),t._v(" Consensus")]),t._v(" "),a("p",[t._v("The verification protocol or algorithm of this type of protocol used by the honor node in the process of adding new blocks to the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Data transmission operations on the blockchain network or records of such transactions in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"token"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#token"}},[t._v("#")]),t._v(" Token")]),t._v(" "),a("p",[t._v("Proof of encrypted digital rights and shares that can be circulated on the blockchain. A set of identifiable digital records stored in a register, including a mechanism for exchanging rights and shares between these records.")]),t._v(" "),a("h3",{attrs:{id:"identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#identification"}},[t._v("#")]),t._v(" Identification")]),t._v(" "),a("p",[t._v("An encryption program used to identify users in the system.")]),t._v(" "),a("h3",{attrs:{id:"unique-identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unique-identification"}},[t._v("#")]),t._v(" Unique identification")]),t._v(" "),a("p",[t._v("The process of linking accounts with users requires legal and organizational efforts or other procedures to achieve biometric identification in order to link user names with actual users.")]),t._v(" "),a("h3",{attrs:{id:"private-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-key"}},[t._v("#")]),t._v(" Private key")]),t._v(" "),a("p",[t._v("A string of characters secretly stored by its owner, used by the owner to access virtual accounts on the internet and sign transactions.")]),t._v(" "),a("h3",{attrs:{id:"public-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-key"}},[t._v("#")]),t._v(" Public key")]),t._v(" "),a("p",[t._v("A string of characters used to check the authenticity of the private key. The public key is uniquely derived from the private key.")]),t._v(" "),a("h3",{attrs:{id:"digital-signature"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#digital-signature"}},[t._v("#")]),t._v(" Digital signature")]),t._v(" "),a("p",[t._v("The attributes of a document or message obtained after encrypted data processing. The digital signature is used to check the integrity of the document (no modification) and authenticity (verification of the identity of the sender).")]),t._v(" "),a("h3",{attrs:{id:"smart-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-contract"}},[t._v("#")]),t._v(" Smart contract")]),t._v(" "),a("p",[t._v("In the program that performs data storage operations in the blockchain, all contracts are stored in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-fee"}},[t._v("#")]),t._v(" Transaction fee")]),t._v(" "),a("p",[t._v("The fee paid to the honor node to execute the transaction.")]),t._v(" "),a("h3",{attrs:{id:"double-spend"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#double-spend"}},[t._v("#")]),t._v(" Double spend")]),t._v(" "),a("p",[t._v("A method of attacking the blockchain network. The result is that a transaction costs the same token twice.")]),t._v(" "),a("p",[t._v("This kind of attack occurs when the blockchain is forked, which can only be executed when the attacker controls more than 50% of the network's verification capability.")]),t._v(" "),a("h3",{attrs:{id:"encryption"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#encryption"}},[t._v("#")]),t._v(" Encryption")]),t._v(" "),a("p",[t._v("A way of digital data conversion, only the party with the corresponding decryption key can read it.")]),t._v(" "),a("h3",{attrs:{id:"private-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-blockchain"}},[t._v("#")]),t._v(" Private blockchain")]),t._v(" "),a("p",[t._v("A blockchain network where all nodes and data access rights are centrally controlled by a single organization (government, company or individual).")]),t._v(" "),a("h3",{attrs:{id:"public-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-blockchain"}},[t._v("#")]),t._v(" Public blockchain")]),t._v(" "),a("p",[t._v("In a blockchain network that is not controlled by any organization, all decisions are made by reaching a consensus among network participants. Everyone can obtain and access the data of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#proof-of-authority"}},[t._v("#")]),t._v(" Proof of Authority")]),t._v(" "),a("p",[t._v("Proof of Authority (PoA), IBAX Network has created a new consensus mechanism that combines distribution, weak centralization, and a certification authority. We call it PoA (Proof of Authority). To ensure continuity for the entire IBAX Network, the consensus covers not only IBAX Public Network, but also ecoLibs created by each user and user group. This creates a truly self-governed, decentralized, fair, transparent, and fraud-proof Decentralized Autonomous Organization (DAO).")]),t._v(" "),a("h2",{attrs:{id:"ibax-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-terms"}},[t._v("#")]),t._v(" IBAX Terms")]),t._v(" "),a("h3",{attrs:{id:"testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testnet"}},[t._v("#")]),t._v(" Testnet")]),t._v(" "),a("p",[t._v("The version of the blockchain network used for testing.")]),t._v(" "),a("h3",{attrs:{id:"mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mainnet"}},[t._v("#")]),t._v(" Mainnet")]),t._v(" "),a("p",[t._v("The main version of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"transaction-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-2"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Call the contract and pass the parameters to the operation command of the contract. The result of the honor node execution is the update of the database.")]),t._v(" "),a("h3",{attrs:{id:"gas-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gas-fee"}},[t._v("#")]),t._v(" Gas fee")]),t._v(" "),a("p",[t._v("A conventional unit used to calculate the cost of performing certain operations on a network of nodes. The fuel exchange rate is determined by a vote on the honor node.")]),t._v(" "),a("h3",{attrs:{id:"account-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#account-address"}},[t._v("#")]),t._v(" Account address")]),t._v(" "),a("p",[t._v("The data records store the token and can be accessed through a pair of keys (private key and public key).")]),t._v(" "),a("h3",{attrs:{id:"wallet-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallet-address"}},[t._v("#")]),t._v(" Wallet address")]),t._v(" "),a("p",[t._v("The character encoding identifier of the user on the node network that is used as the name of the user's virtual account.")]),t._v(" "),a("h3",{attrs:{id:"weaver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#weaver"}},[t._v("#")]),t._v(" Weaver")]),t._v(" "),a("p",[t._v("The software client used to connect to the node network, which provides the desktop and web browser versions.")]),t._v(" "),a("p",[t._v("Weaver integrates the platform development environment, including creating and editing tables, pages, and contracts. Users can build ECOLIBs, create and use applications in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[t._v("#")]),t._v(" ECOLIB")]),t._v(" "),a("p",[t._v("A relatively closed or open software programming environment, including applications and ECOLIB members.")]),t._v(" "),a("p",[t._v("ECOLIB members can issue exclusive tokens belonging to the ECOLIB, use smart contracts to establish interaction rules between members, and set access rights to application elements for members.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-parameters"}},[t._v("#")]),t._v(" ECOLIB parameters")]),t._v(" "),a("p",[t._v("A set of configurable ECOLIB parameters, such as the account of the creator of the ECOLIB and the permissions of changing application elements, can be changed in the parameter table.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[t._v("#")]),t._v(" ECOLIB members")]),t._v(" "),a("p",[t._v("Users who can access specific ECOLIBs and application features.")]),t._v(" "),a("h3",{attrs:{id:"virtual-private-ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecolib"}},[t._v("#")]),t._v(" Virtual private ECOLIB")]),t._v(" "),a("p",[t._v("Virtual private ECOLIB - Cross Ledgers Base (CLB), which has the full set of functions of the standard ECOLIB, but works outside the blockchain. In CLB, you can use and create contracts and template languages, database tables, and use Weaver to create applications. You can call contracts on the blockchain ECOLIB via APIs.")]),t._v(" "),a("h3",{attrs:{id:"decentralized-proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decentralized-proof-of-authority"}},[t._v("#")]),t._v(" Decentralized Proof-of-Authority")]),t._v(" "),a("p",[t._v("Decentralized Proof-of-Authority (DPoA) is a new consensus algorithm that provides high performance and fault tolerance. In DPoA, the right to generate new blocks is granted to nodes that have proven the right to do so, and such nodes must be subject to preliminary verification.")]),t._v(" "),a("h3",{attrs:{id:"needle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle"}},[t._v("#")]),t._v(" Needle")]),t._v(" "),a("p",[t._v("A scripting language used to create smart contracts that can handle data received from user pages and value operations performed in database tables.\nYou can create and edit contracts in Weaver's editor.")]),t._v(" "),a("h3",{attrs:{id:"logicor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#logicor"}},[t._v("#")]),t._v(" Logicor")]),t._v(" "),a("p",[t._v("The template language used to create pages. It can get values from database tables, build user pages, and pass user input data to the "),a("strong",[t._v("data")]),t._v(" section of the contract.")]),t._v(" "),a("h3",{attrs:{id:"integrated-development-environment-ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#integrated-development-environment-ide"}},[t._v("#")]),t._v(" Integrated Development Environment (IDE)")]),t._v(" "),a("p",[t._v("Integrated Development Environment (IDE) is a set of software tools used to create applications.")]),t._v(" "),a("p",[t._v("Weaver's IDE includes a contract editor, page editor, database table management tool, multi-language resources editor, as well as application export and import functions. The IDE complements the visual page designer based on semantic tools.")]),t._v(" "),a("h3",{attrs:{id:"page-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-editor"}},[t._v("#")]),t._v(" Page editor")]),t._v(" "),a("p",[t._v("In Weaver, you can create application pages by directly arranging basic application elements, HTML containers, form fields, buttons and other tools on the screen.")]),t._v(" "),a("h3",{attrs:{id:"visual-page-designer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#visual-page-designer"}},[t._v("#")]),t._v(" Visual page designer")]),t._v(" "),a("p",[t._v('Tools for creating application pages in Weaver, including interface designer and "Logicor" page code generator.')]),t._v(" "),a("h3",{attrs:{id:"contract-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-editor"}},[t._v("#")]),t._v(" Contract editor")]),t._v(" "),a("p",[t._v("A tool for creating contracts using visual pages in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"multilingual-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multilingual-resources"}},[t._v("#")]),t._v(" Multilingual resources")]),t._v(" "),a("p",[t._v("The module of application page localization in Weaver, which associates the label on the application page with the text value of the selected language.")]),t._v(" "),a("h3",{attrs:{id:"application-export"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-export"}},[t._v("#")]),t._v(" Application export")]),t._v(" "),a("p",[t._v("Save the source code of all tables, pages, and contracts of the application as files.")]),t._v(" "),a("h3",{attrs:{id:"application-import"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-import"}},[t._v("#")]),t._v(" Application import")]),t._v(" "),a("p",[t._v("Load all tables, pages, and contracts of an application included in the export file into the ECOLIB.")]),t._v(" "),a("h3",{attrs:{id:"smart-law"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-law"}},[t._v("#")]),t._v(" Smart law")]),t._v(" "),a("p",[t._v("It is a special set of smart contracts that contain regulatory information and used to manage and control the operation and register access rights.")]),t._v(" "),a("h3",{attrs:{id:"legal-system"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#legal-system"}},[t._v("#")]),t._v(" Legal system")]),t._v(" "),a("p",[t._v("A set of rules and mechanisms established in smart law, which can regulate the relationship between ECOLIB users, define procedural rules for changing protocol parameters, and define various challenging solutions.")]),t._v(" "),a("h3",{attrs:{id:"application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application"}},[t._v("#")]),t._v(" Application")]),t._v(" "),a("p",[t._v("Create fully functional software products in Weaver's IDE.")]),t._v(" "),a("p",[t._v("An application is a collection of elements such as database tables, smart contracts, and user pages with configuration access rights.")]),t._v(" "),a("h3",{attrs:{id:"page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page"}},[t._v("#")]),t._v(" Page")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that forms an interactive interface on the screen.")]),t._v(" "),a("h3",{attrs:{id:"code-segment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#code-segment"}},[t._v("#")]),t._v(" Code segment")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that can be reused in application pages.")]),t._v(" "),a("h3",{attrs:{id:"access-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights"}},[t._v("#")]),t._v(" Access rights")]),t._v(" "),a("p",[t._v("Conditions to get access rights for creating and editing tables, contracts and pages.")]),t._v(" "),a("p",[t._v("The access rights to tables can be configured with rights to add rows and columns, and edit the values in columns.")]),t._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[t._v("#")]),t._v(" Honor node")]),t._v(" "),a("p",[t._v("A node in the network node that has the right to generate and verify blocks.")]),t._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[t._v("#")]),t._v(" Guardian node")]),t._v(" "),a("p",[t._v("A node on the network used to store the latest version of the complete blockchain.")]),t._v(" "),a("h3",{attrs:{id:"concurrent-transaction-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#concurrent-transaction-processing"}},[t._v("#")]),t._v(" Concurrent transaction processing")]),t._v(" "),a("p",[t._v("A method to increase transaction processing speed by processing data from different ECOLIBs at the same time.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{518:function(t,e,a){"use strict";a.r(e);var r=a(51),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"terms-and-definitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#terms-and-definitions"}},[t._v("#")]),t._v(" Terms and Definitions")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-terms"}},[t._v("Blockchain terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain"}},[t._v("Blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#peer-to-peer-network"}},[t._v("Peer-to-peer network")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#hash"}},[t._v("Hash")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block"}},[t._v("Block")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block-verification"}},[t._v("Block verification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#consensus"}},[t._v("Consensus")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#token"}},[t._v("Token")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#identification"}},[t._v("Identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#unique-identification"}},[t._v("Unique identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-key"}},[t._v("Private key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-key"}},[t._v("Public key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#digital-signature"}},[t._v("Digital signature")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-contract"}},[t._v("Smart contract")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#transaction-fee"}},[t._v("Transaction fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#double-spend"}},[t._v("Double spend")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#encryption"}},[t._v("Encryption")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-blockchain"}},[t._v("Private blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-blockchain"}},[t._v("Public blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#proof-of-authority"}},[t._v("Proof of Authority")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ibax-terms"}},[t._v("IBAX Terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#testnet"}},[t._v("Testnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#mainnet"}},[t._v("Mainnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#gas-fee"}},[t._v("Gas fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#account-address"}},[t._v("Account address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#wallet-address"}},[t._v("Wallet address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#weaver"}},[t._v("Weaver")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[t._v("ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-parameters"}},[t._v("ECOLIB parameters")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[t._v("ECOLIB members")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecolib"}},[t._v("Virtual private ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#decentralized-proof-of-authority"}},[t._v("Decentralized Proof-of-Authority")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#needle"}},[t._v("Needle")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#logicor"}},[t._v("Logicor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#integrated-development-environment-ide"}},[t._v("Integrated Development Environment (IDE)")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page-editor"}},[t._v("Page editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#visual-page-designer"}},[t._v("Visual page designer")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#contract-editor"}},[t._v("Contract editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#multilingual-resources"}},[t._v("Multilingual resources")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-export"}},[t._v("Application export")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-import"}},[t._v("Application import")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-law"}},[t._v("Smart law")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#legal-system"}},[t._v("Legal system")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application"}},[t._v("Application")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page"}},[t._v("Page")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#code-segment"}},[t._v("Code segment")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#access-rights"}},[t._v("Access rights")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[t._v("Honor node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#guardian-node"}},[t._v("Guardian node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#concurrent-transaction-processing"}},[t._v("Concurrent transaction processing")])])])])]),t._v(" "),a("h2",{attrs:{id:"blockchain-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-terms"}},[t._v("#")]),t._v(" Blockchain terms")]),t._v(" "),a("h3",{attrs:{id:"blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain"}},[t._v("#")]),t._v(" Blockchain")]),t._v(" "),a("p",[t._v("Blockchain is an information system that stores data and transmits and processes data within the system to prevent data from being forged or lost while maintaining data reliability; Data protection is achieved by:")]),t._v(" "),a("p",[t._v("1.writing data into a blockchain of a series of encrypted blocks;")]),t._v(" "),a("p",[t._v("2.distributed storage of blockchain copies in peer-to-peer networks;")]),t._v(" "),a("p",[t._v("3.synchronization of blockchains on all nodes using a consensus mechanism;")]),t._v(" "),a("p",[t._v("4.ensuring data reliability when performing data operations using the network with algorithms that store data transmissions and process contracts in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"peer-to-peer-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#peer-to-peer-network"}},[t._v("#")]),t._v(" Peer-to-peer network")]),t._v(" "),a("p",[t._v("A computer network, consisting of equally privileged nodes (without a central server).")]),t._v(" "),a("h3",{attrs:{id:"hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hash"}},[t._v("#")]),t._v(" Hash")]),t._v(" "),a("p",[t._v("Also known as hashing, the binary value of any file or data set length that is mapped to a shorter fixed-length binary value.")]),t._v(" "),a("h3",{attrs:{id:"block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block"}},[t._v("#")]),t._v(" Block")]),t._v(" "),a("p",[t._v("After verifying the format and signature of the transaction, a transaction set is grouped by the honor node into a specific data structure. A block contains a hash pointer as a link to the previous block, which is one of the measures to ensure the security of blockchain encryption.")]),t._v(" "),a("h3",{attrs:{id:"block-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-verification"}},[t._v("#")]),t._v(" Block verification")]),t._v(" "),a("p",[t._v("A procedure to verify the correctness of the block structure, generation time, compatibility with the previous block, transaction signatures, and the correspondence between the transaction and the block data.")]),t._v(" "),a("h3",{attrs:{id:"consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consensus"}},[t._v("#")]),t._v(" Consensus")]),t._v(" "),a("p",[t._v("The verification protocol or algorithm of this type of protocol used by the honor node in the process of adding new blocks to the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Data transmission operations on the blockchain network or records of such transactions in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"token"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#token"}},[t._v("#")]),t._v(" Token")]),t._v(" "),a("p",[t._v("Proof of encrypted digital rights and shares that can be circulated on the blockchain. A set of identifiable digital records stored in a register, including a mechanism for exchanging rights and shares between these records.")]),t._v(" "),a("h3",{attrs:{id:"identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#identification"}},[t._v("#")]),t._v(" Identification")]),t._v(" "),a("p",[t._v("An encryption program used to identify users in the system.")]),t._v(" "),a("h3",{attrs:{id:"unique-identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unique-identification"}},[t._v("#")]),t._v(" Unique identification")]),t._v(" "),a("p",[t._v("The process of linking accounts with users requires legal and organizational efforts or other procedures to achieve biometric identification in order to link user names with actual users.")]),t._v(" "),a("h3",{attrs:{id:"private-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-key"}},[t._v("#")]),t._v(" Private key")]),t._v(" "),a("p",[t._v("A string of characters secretly stored by its owner, used by the owner to access virtual accounts on the internet and sign transactions.")]),t._v(" "),a("h3",{attrs:{id:"public-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-key"}},[t._v("#")]),t._v(" Public key")]),t._v(" "),a("p",[t._v("A string of characters used to check the authenticity of the private key. The public key is uniquely derived from the private key.")]),t._v(" "),a("h3",{attrs:{id:"digital-signature"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#digital-signature"}},[t._v("#")]),t._v(" Digital signature")]),t._v(" "),a("p",[t._v("The attributes of a document or message obtained after encrypted data processing. The digital signature is used to check the integrity of the document (no modification) and authenticity (verification of the identity of the sender).")]),t._v(" "),a("h3",{attrs:{id:"smart-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-contract"}},[t._v("#")]),t._v(" Smart contract")]),t._v(" "),a("p",[t._v("In the program that performs data storage operations in the blockchain, all contracts are stored in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-fee"}},[t._v("#")]),t._v(" Transaction fee")]),t._v(" "),a("p",[t._v("The fee paid to the honor node to execute the transaction.")]),t._v(" "),a("h3",{attrs:{id:"double-spend"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#double-spend"}},[t._v("#")]),t._v(" Double spend")]),t._v(" "),a("p",[t._v("A method of attacking the blockchain network. The result is that a transaction costs the same token twice.")]),t._v(" "),a("p",[t._v("This kind of attack occurs when the blockchain is forked, which can only be executed when the attacker controls more than 50% of the network's verification capability.")]),t._v(" "),a("h3",{attrs:{id:"encryption"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#encryption"}},[t._v("#")]),t._v(" Encryption")]),t._v(" "),a("p",[t._v("A way of digital data conversion, only the party with the corresponding decryption key can read it.")]),t._v(" "),a("h3",{attrs:{id:"private-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-blockchain"}},[t._v("#")]),t._v(" Private blockchain")]),t._v(" "),a("p",[t._v("A blockchain network where all nodes and data access rights are centrally controlled by a single organization (government, company or individual).")]),t._v(" "),a("h3",{attrs:{id:"public-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-blockchain"}},[t._v("#")]),t._v(" Public blockchain")]),t._v(" "),a("p",[t._v("In a blockchain network that is not controlled by any organization, all decisions are made by reaching a consensus among network participants. Everyone can obtain and access the data of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#proof-of-authority"}},[t._v("#")]),t._v(" Proof of Authority")]),t._v(" "),a("p",[t._v("Proof of Authority (PoA), IBAX Network has created a new consensus mechanism that combines distribution, weak centralization, and a certification authority. We call it PoA (Proof of Authority). To ensure continuity for the entire IBAX Network, the consensus covers not only IBAX Public Network, but also ecoLibs created by each user and user group. This creates a truly self-governed, decentralized, fair, transparent, and fraud-proof Decentralized Autonomous Organization (DAO).")]),t._v(" "),a("h2",{attrs:{id:"ibax-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-terms"}},[t._v("#")]),t._v(" IBAX Terms")]),t._v(" "),a("h3",{attrs:{id:"testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testnet"}},[t._v("#")]),t._v(" Testnet")]),t._v(" "),a("p",[t._v("The version of the blockchain network used for testing.")]),t._v(" "),a("h3",{attrs:{id:"mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mainnet"}},[t._v("#")]),t._v(" Mainnet")]),t._v(" "),a("p",[t._v("The main version of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"transaction-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-2"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Call the contract and pass the parameters to the operation command of the contract. The result of the honor node execution is the update of the database.")]),t._v(" "),a("h3",{attrs:{id:"gas-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gas-fee"}},[t._v("#")]),t._v(" Gas fee")]),t._v(" "),a("p",[t._v("A conventional unit used to calculate the cost of performing certain operations on a network of nodes. The fuel exchange rate is determined by a vote on the honor node.")]),t._v(" "),a("h3",{attrs:{id:"account-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#account-address"}},[t._v("#")]),t._v(" Account address")]),t._v(" "),a("p",[t._v("The data records store the token and can be accessed through a pair of keys (private key and public key).")]),t._v(" "),a("h3",{attrs:{id:"wallet-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallet-address"}},[t._v("#")]),t._v(" Wallet address")]),t._v(" "),a("p",[t._v("The character encoding identifier of the user on the node network that is used as the name of the user's virtual account.")]),t._v(" "),a("h3",{attrs:{id:"weaver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#weaver"}},[t._v("#")]),t._v(" Weaver")]),t._v(" "),a("p",[t._v("The software client used to connect to the node network, which provides the desktop and web browser versions.")]),t._v(" "),a("p",[t._v("Weaver integrates the platform development environment, including creating and editing tables, pages, and contracts. Users can build ECOLIBs, create and use applications in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[t._v("#")]),t._v(" ECOLIB")]),t._v(" "),a("p",[t._v("A relatively closed or open software programming environment, including applications and ECOLIB members.")]),t._v(" "),a("p",[t._v("ECOLIB members can issue exclusive tokens belonging to the ECOLIB, use smart contracts to establish interaction rules between members, and set access rights to application elements for members.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-parameters"}},[t._v("#")]),t._v(" ECOLIB parameters")]),t._v(" "),a("p",[t._v("A set of configurable ECOLIB parameters, such as the account of the creator of the ECOLIB and the permissions of changing application elements, can be changed in the parameter table.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[t._v("#")]),t._v(" ECOLIB members")]),t._v(" "),a("p",[t._v("Users who can access specific ECOLIBs and application features.")]),t._v(" "),a("h3",{attrs:{id:"virtual-private-ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecolib"}},[t._v("#")]),t._v(" Virtual private ECOLIB")]),t._v(" "),a("p",[t._v("Virtual private ECOLIB - Cross Ledgers Base (CLB), which has the full set of functions of the standard ECOLIB, but works outside the blockchain. In CLB, you can use and create contracts and template languages, database tables, and use Weaver to create applications. You can call contracts on the blockchain ECOLIB via APIs.")]),t._v(" "),a("h3",{attrs:{id:"decentralized-proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decentralized-proof-of-authority"}},[t._v("#")]),t._v(" Decentralized Proof-of-Authority")]),t._v(" "),a("p",[t._v("Decentralized Proof-of-Authority (DPoA) is a new consensus algorithm that provides high performance and fault tolerance. In DPoA, the right to generate new blocks is granted to nodes that have proven the right to do so, and such nodes must be subject to preliminary verification.")]),t._v(" "),a("h3",{attrs:{id:"needle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle"}},[t._v("#")]),t._v(" Needle")]),t._v(" "),a("p",[t._v("A scripting language used to create smart contracts that can handle data received from user pages and value operations performed in database tables.\nYou can create and edit contracts in Weaver's editor.")]),t._v(" "),a("h3",{attrs:{id:"logicor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#logicor"}},[t._v("#")]),t._v(" Logicor")]),t._v(" "),a("p",[t._v("The template language used to create pages. It can get values from database tables, build user pages, and pass user input data to the "),a("strong",[t._v("data")]),t._v(" section of the contract.")]),t._v(" "),a("h3",{attrs:{id:"integrated-development-environment-ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#integrated-development-environment-ide"}},[t._v("#")]),t._v(" Integrated Development Environment (IDE)")]),t._v(" "),a("p",[t._v("Integrated Development Environment (IDE) is a set of software tools used to create applications.")]),t._v(" "),a("p",[t._v("Weaver's IDE includes a contract editor, page editor, database table management tool, multi-language resources editor, as well as application export and import functions. The IDE complements the visual page designer based on semantic tools.")]),t._v(" "),a("h3",{attrs:{id:"page-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-editor"}},[t._v("#")]),t._v(" Page editor")]),t._v(" "),a("p",[t._v("In Weaver, you can create application pages by directly arranging basic application elements, HTML containers, form fields, buttons and other tools on the screen.")]),t._v(" "),a("h3",{attrs:{id:"visual-page-designer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#visual-page-designer"}},[t._v("#")]),t._v(" Visual page designer")]),t._v(" "),a("p",[t._v('Tools for creating application pages in Weaver, including interface designer and "Logicor" page code generator.')]),t._v(" "),a("h3",{attrs:{id:"contract-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-editor"}},[t._v("#")]),t._v(" Contract editor")]),t._v(" "),a("p",[t._v("A tool for creating contracts using visual pages in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"multilingual-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multilingual-resources"}},[t._v("#")]),t._v(" Multilingual resources")]),t._v(" "),a("p",[t._v("The module of application page localization in Weaver, which associates the label on the application page with the text value of the selected language.")]),t._v(" "),a("h3",{attrs:{id:"application-export"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-export"}},[t._v("#")]),t._v(" Application export")]),t._v(" "),a("p",[t._v("Save the source code of all tables, pages, and contracts of the application as files.")]),t._v(" "),a("h3",{attrs:{id:"application-import"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-import"}},[t._v("#")]),t._v(" Application import")]),t._v(" "),a("p",[t._v("Load all tables, pages, and contracts of an application included in the export file into the ECOLIB.")]),t._v(" "),a("h3",{attrs:{id:"smart-law"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-law"}},[t._v("#")]),t._v(" Smart law")]),t._v(" "),a("p",[t._v("It is a special set of smart contracts that contain regulatory information and used to manage and control the operation and register access rights.")]),t._v(" "),a("h3",{attrs:{id:"legal-system"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#legal-system"}},[t._v("#")]),t._v(" Legal system")]),t._v(" "),a("p",[t._v("A set of rules and mechanisms established in smart law, which can regulate the relationship between ECOLIB users, define procedural rules for changing protocol parameters, and define various challenging solutions.")]),t._v(" "),a("h3",{attrs:{id:"application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application"}},[t._v("#")]),t._v(" Application")]),t._v(" "),a("p",[t._v("Create fully functional software products in Weaver's IDE.")]),t._v(" "),a("p",[t._v("An application is a collection of elements such as database tables, smart contracts, and user pages with configuration access rights.")]),t._v(" "),a("h3",{attrs:{id:"page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page"}},[t._v("#")]),t._v(" Page")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that forms an interactive interface on the screen.")]),t._v(" "),a("h3",{attrs:{id:"code-segment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#code-segment"}},[t._v("#")]),t._v(" Code segment")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that can be reused in application pages.")]),t._v(" "),a("h3",{attrs:{id:"access-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights"}},[t._v("#")]),t._v(" Access rights")]),t._v(" "),a("p",[t._v("Conditions to get access rights for creating and editing tables, contracts and pages.")]),t._v(" "),a("p",[t._v("The access rights to tables can be configured with rights to add rows and columns, and edit the values in columns.")]),t._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[t._v("#")]),t._v(" Honor node")]),t._v(" "),a("p",[t._v("A node in the network node that has the right to generate and verify blocks.")]),t._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[t._v("#")]),t._v(" Guardian node")]),t._v(" "),a("p",[t._v("A node on the network used to store the latest version of the complete blockchain.")]),t._v(" "),a("h3",{attrs:{id:"concurrent-transaction-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#concurrent-transaction-processing"}},[t._v("#")]),t._v(" Concurrent transaction processing")]),t._v(" "),a("p",[t._v("A method to increase transaction processing speed by processing data from different ECOLIBs at the same time.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/139.77214828.js b/assets/js/139.6ee53aa4.js similarity index 99% rename from assets/js/139.77214828.js rename to assets/js/139.6ee53aa4.js index d5961f2..cb4459b 100644 --- a/assets/js/139.77214828.js +++ b/assets/js/139.6ee53aa4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{518:function(t,e,a){"use strict";a.r(e);var s=a(51),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"deployment-of-a-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deployment-of-a-ibax-network"}},[t._v("#")]),t._v(" Deployment of A IBAX Network")]),t._v(" "),a("p",[t._v("In this section, we will show you how to deploy your own blockchain network.")]),t._v(" "),a("h2",{attrs:{id:"an-deployment-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#an-deployment-example"}},[t._v("#")]),t._v(" An deployment example")]),t._v(" "),a("p",[t._v("A blockchain network will be deployed with the following three nodes as an example.")]),t._v(" "),a("p",[t._v("Three network nodes:")]),t._v(" "),a("ul",[a("li",[t._v("Node 1 is the first node in the blockchain network, which can generate new blocks and send transactions from clients connected to it;")]),t._v(" "),a("li",[t._v("Node 2 is another honor node, which can generate new blocks and send transactions from clients connected to it;")]),t._v(" "),a("li",[t._v("Node 3 is a guardian node, which cannot generate new blocks, but can send transactions from clients connected to it.")])]),t._v(" "),a("p",[t._v("Configurations of the three nodes to be deployed:")]),t._v(" "),a("ul",[a("li",[t._v("Each node uses its own PostgreSQL database system instance;")]),t._v(" "),a("li",[t._v("Each node uses its own Centrifugo service instance;")]),t._v(" "),a("li",[t._v("The server side github-backend is deployed on the same host as other backend components.")])]),t._v(" "),a("p",[t._v("The sample addresses and ports used by the nodes are described in the following table:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("Node")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Component")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("IP & port")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:7079")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:7079")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:7079")])])])]),t._v(" "),a("h2",{attrs:{id:"deploy-phase"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-phase"}},[t._v("#")]),t._v(" Deploy phase")]),t._v(" "),a("p",[t._v("Your own blockchain network must be deployed in several stages:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#deployment-of-a-ibax-network"}},[t._v("Deployment of A IBAX Network")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#an-deployment-example"}},[t._v("An deployment example")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#deploy-phase"}},[t._v("Deploy phase")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#server-deployment"}},[t._v("Server deployment")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#deploy-the-first-node"}},[t._v("Deploy the first node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#sudo"}},[t._v("sudo")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#golang"}},[t._v("Golang")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#postgresql"}},[t._v("PostgreSQL")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#directory-structure"}},[t._v("Directory structure")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create a database")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-centrifugo"}},[t._v("Configure Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-first-node"}},[t._v("Configure the first node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#initiate-the-first-node-server"}},[t._v("Initiate the first node server")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#deploy-other-nodes"}},[t._v("Deploy other nodes")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#node-2"}},[t._v("Node 2")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#node-3"}},[t._v("Node 3")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#front-end-deployment"}},[t._v("Front-end deployment")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#software-prerequisites"}},[t._v("Software prerequisites")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#build-a-weaver-application"}},[t._v("Build a Weaver application")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-the-configuration-file-for-the-blockchain-network"}},[t._v("Add the configuration file for the blockchain network")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#build-weaver-web-application"}},[t._v("Build Weaver Web Application")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-blockchain-network"}},[t._v("Configure the blockchain network")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#create-the-creator-account"}},[t._v("Create the creator account")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#import-applications-roles-and-templates"}},[t._v("Import applications, roles and templates")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-the-first-node-to-the-node-list"}},[t._v("Add the first node to the node list")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-other-honor-nodes"}},[t._v("Add other honor nodes")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#add-members-into-the-consensus-role-group"}},[t._v("Add members into the consensus role group")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-the-owner-account-for-other-nodes"}},[t._v("Create the owner account for other nodes")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#assign-the-node-owner-with-the-validators-role"}},[t._v("Assign the node owner with the Validators role")])])])])])])]),t._v(" "),a("h2",{attrs:{id:"server-deployment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-deployment"}},[t._v("#")]),t._v(" Server deployment")]),t._v(" "),a("h3",{attrs:{id:"deploy-the-first-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-the-first-node"}},[t._v("#")]),t._v(" Deploy the first node")]),t._v(" "),a("p",[t._v("The first node is a special one because it is essential to launch the blockchain network. The first block of the blockchain is generated by the first node, and all other nodes would download the blockchain from it. The owner of the first node is the platform creator.")]),t._v(" "),a("h3",{attrs:{id:"dependencies-and-environment-settings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependencies-and-environment-settings"}},[t._v("#")]),t._v(" Dependencies and environment settings")]),t._v(" "),a("h4",{attrs:{id:"sudo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sudo"}},[t._v("#")]),t._v(" sudo")]),t._v(" "),a("p",[t._v("All commands of Debian 9 must be run as a non-root user. However, some system commands require super user permissions to execute. By default, sudo is not installed on Debian 9, you must install it first.")]),t._v(" "),a("ol",[a("li",[t._v("Become a super user.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("su")]),t._v(" -\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Upgrade your system.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" upgrade -y "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" dist-upgrade -y\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Install sudo。")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -y\n")])])]),a("ol",{attrs:{start:"4"}},[a("li",[t._v("Add your user to the sudo group.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("usermod")]),t._v(" -a -G "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" user\n")])])]),a("ol",{attrs:{start:"5"}},[a("li",[t._v("After restarting, the changes take effect.")])]),t._v(" "),a("h3",{attrs:{id:"golang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#golang"}},[t._v("#")]),t._v(" Golang")]),t._v(" "),a("p",[t._v("Install Go according to the "),a("a",{attrs:{href:"https://golang.org/doc/install#tarball",target:"_blank",rel:"noopener noreferrer"}},[t._v("Official Documents"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("ol",[a("li",[t._v("Download the latest stable version of Go (> 1.10.x) from "),a("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Golang official website"),a("OutboundLink")],1),t._v(" or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Use tar to extract the tarball to the "),a("code",[t._v("/usr/local")]),t._v(" directory.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("tar")]),t._v(" -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Add "),a("code",[t._v("/usr/local/go/bin")]),t._v(" to PATH environment variables (located at "),a("code",[t._v("/etc/profile")]),t._v(" or "),a("code",[t._v("$HOME/.profile")]),t._v(").")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("PATH")])]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$PATH")]),t._v(":/usr/local/go/bin\n")])])]),a("ol",[a("li",[t._v("Execute the "),a("code",[t._v("source")]),t._v(" file to make the changes take effect, for example:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("source")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$HOME")]),t._v("/.profile\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Delete temporary files:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" go1.11.2.linux-amd64.tar.gz\n")])])]),a("h3",{attrs:{id:"postgresql"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#postgresql"}},[t._v("#")]),t._v(" PostgreSQL")]),t._v(" "),a("ol",[a("li",[t._v("Install PostgreSQL (> v.10) and psql:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y postgresql\n")])])]),a("h3",{attrs:{id:"centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#centrifugo"}},[t._v("#")]),t._v(" Centrifugo")]),t._v(" "),a("ol",[a("li",[t._v("Download Centrifugo V.1.8.0 from "),a("a",{attrs:{href:"https://github.com/centrifugal/centrifugo/releases/",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub"),a("OutboundLink")],1),t._v(" or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://github.com/centrifugal/centrifugo/releases/download/v1.8.0/centrifugo-1.8.0-linux-amd64.zip "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("unzip")]),t._v(" centrifugo-1.8.0-linux-amd64.zip "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mv")]),t._v(" centrifugo-1.8.0-linux-amd64/* centrifugo/\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Delete temporary files:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" -R centrifugo-1.8.0-linux-amd64 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" centrifugo-1.8.0-linux-amd64.zip\n")])])]),a("h3",{attrs:{id:"directory-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#directory-structure"}},[t._v("#")]),t._v(" Directory structure")]),t._v(" "),a("p",[t._v("For the Debian 9 system, it is recommended to store all software used by the blockchain platform in a separate directory.")]),t._v(" "),a("p",[t._v("The "),a("code",[t._v("/opt/backenddir")]),t._v(" directory is used here, but you can use any directory. In this case, please change all commands and configuration files accordingly.")]),t._v(" "),a("ol",[a("li",[t._v("Create a directory for the blockchain platform:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Make your user the owner of the directory:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("chown")]),t._v(" user /opt/backenddir/\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Create subdirectories for Centrifugo, go-ibax and node data. All node data is stored in a directory named "),a("code",[t._v("nodeX")]),t._v(", where "),a("code",[t._v("X")]),t._v(" is the node number. According to the node to be deployed, "),a("code",[t._v("node1")]),t._v(" is Node 1, "),a("code",[t._v("node2")]),t._v(" is Node 2, and so forth.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/go-ibax "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/go-ibax/node1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n")])])]),a("h3",{attrs:{id:"create-a-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-database"}},[t._v("#")]),t._v(" Create a database")]),t._v(" "),a("ol",[a("li",[t._v("Change the user password postgres to the default password "),a("em",[t._v("123456")]),t._v(". You can set your own password, but you must change it in the node configuration file "),a("em",[t._v("config.toml")]),t._v(".")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -u postgres psql -c "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"ALTER USER postgres WITH PASSWORD '123456'\"")]),t._v("\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Create a current state database for the node, for example "),a("strong",[t._v("chaindb")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -u postgres psql -c "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CREATE DATABASE chaindb"')]),t._v("\n")])])]),a("h3",{attrs:{id:"configure-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-centrifugo"}},[t._v("#")]),t._v(" Configure Centrifugo")]),t._v(" "),a("ol",[a("li",[t._v("Create the Centrifugo configuration file:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'{"secret":"CENT_SECRET"}\'')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" /opt/backenddir/centrifugo/config.json\n")])])]),a("p",[t._v("You can set your own "),a("em",[t._v("secret")]),t._v(", but you must also change it in the node configuration file "),a("em",[t._v("config.toml")]),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"install-go-ibax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-go-ibax"}},[t._v("#")]),t._v(" Install go-ibax")]),t._v(" "),a("ol",[a("li",[t._v("Download github-backend from GitHub:")]),t._v(" "),a("li",[t._v("Copy the go-ibax binary file to the "),a("code",[t._v("/opt/backenddir/go-ibax")]),t._v(" directory. If you are using default Go workspace, the binary files are located in the "),a("code",[t._v("$HOME/go/bin")]),t._v(" directory:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("cp")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$HOME")]),t._v("/go/bin/go-ibax /opt/backenddir/go-ibax\n")])])]),a("h3",{attrs:{id:"configure-the-first-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-first-node"}},[t._v("#")]),t._v(" Configure the first node")]),t._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Create the configuration file for Node 1:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.1:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v("\n")])])]),a("ol",{attrs:{start:"4"}},[a("li",[t._v("Generate the keys of Node 1, including the public and private keys of the node and the account:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("ol",{attrs:{start:"5"}},[a("li",[t._v("Generate the first block:")])]),t._v(" "),a("blockquote",[a("p",[t._v("Note")]),t._v(" "),a("p",[t._v("If you want to create your own blockchain network, you must use the "),a("code",[t._v("--test=true")]),t._v(" option. Otherwise, you cannot create a new account.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax generateFirstBlock "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --test"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("true\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Initialize the database:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax initDatabase "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("h3",{attrs:{id:"initiate-the-first-node-server"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initiate-the-first-node-server"}},[t._v("#")]),t._v(" Initiate the first node server")]),t._v(" "),a("p",[t._v("To start the first node server, you must start the following two services:")]),t._v(" "),a("ul",[a("li",[t._v("centrifugo")]),t._v(" "),a("li",[t._v("go-ibax")])]),t._v(" "),a("p",[t._v("If you failed to create "),a("a",{attrs:{href:"#https://wiki.debian.org/systemd/Services"}},[t._v("services")]),t._v(" with these files, you may execute binary files from directories in different consoles.")]),t._v(" "),a("ol",[a("li",[t._v("Run centrifugo:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n -a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config /opt/backenddir/centrifugo/config.json\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Run go-ibax:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("h2",{attrs:{id:"deploy-other-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-other-nodes"}},[t._v("#")]),t._v(" Deploy other nodes")]),t._v(" "),a("p",[t._v("Although the deployment of all other nodes (Node 2 and Node 3) is similar to the first, but there are three differences:")]),t._v(" "),a("ul",[a("li",[t._v("You do not need to generate the first block. But it must be copied from Node 1 to the current node data directory;")]),t._v(" "),a("li",[t._v("The node must download blocks from Node 1 by configuring the "),a("code",[t._v("--nodesAddr")]),t._v(" option;")]),t._v(" "),a("li",[t._v("The node must use its own addresses and ports.")])]),t._v(" "),a("h3",{attrs:{id:"node-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-2"}},[t._v("#")]),t._v(" Node 2")]),t._v(" "),a("p",[t._v("Follow operational instructions as shown below:")]),t._v(" "),a("ol",[a("li",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create database")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])]),t._v(" "),a("li",[t._v("Create the configuration file for Node 2:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.2:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--nodesAddr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Copy the first block file to Node 2. For example, you can perform this operation on Node 2 throughscp:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("scp")]),t._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node2/\n")])])]),a("ol",{attrs:{start:"7"}},[a("li",[t._v("Generate the keys of Node 2, including the public and private keys of the node and the account:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2/config.toml\n")])])]),a("ol",{attrs:{start:"8"}},[a("li",[t._v("Initiate the database:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" ./go-ibax initDatabase --config"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("node2/config.toml\n")])])]),a("ol",{attrs:{start:"9"}},[a("li",[t._v("Run centrifugo:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n-a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),a("ol",{attrs:{start:"10"}},[a("li",[t._v("Run go-ibax:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2/config.toml\n")])])]),a("p",[t._v("As a result, the node downloads the block from the first node. As this node is not a verification node, it cannot generate a new block. Node 2 will be added to the list of verification nodes later.")]),t._v(" "),a("h3",{attrs:{id:"node-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-3"}},[t._v("#")]),t._v(" Node 3")]),t._v(" "),a("p",[t._v("Follow operational instructions as shown below:")]),t._v(" "),a("ol",[a("li",[a("p",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create database")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])])]),t._v(" "),a("li",[a("p",[t._v("Create the configuration file for Node 3:")])])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.3:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--nodesAddr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Copy the first block file to Node 3. For example, you can perform this operation on Node 3 through scp:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("scp")]),t._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node3/\n")])])]),a("p",[t._v("7.Generate the key of Node 3, including the public and private keys of the node and the account:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3/config.toml\n")])])]),a("p",[t._v("8.Initiate the database:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" ./go-ibax initDatabase --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("node3/config.toml\n")])])]),a("p",[t._v("9.Run centrifugo:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n-a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),a("p",[t._v("10.Run go-ibax:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3/config.toml\n")])])]),a("p",[t._v("As a result, the node downloads the block from the first node. As this node is not a verification node, it cannot generate a new block. The client may be connected to the node, and it may send transactions to the network.")]),t._v(" "),a("h2",{attrs:{id:"front-end-deployment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#front-end-deployment"}},[t._v("#")]),t._v(" Front-end deployment")]),t._v(" "),a("p",[t._v("Only after installing "),a("strong",[t._v("GNOME GUI")]),t._v(" on Debian 9 (Stretch) 64-bit Official Release, the Govis client can be built with the "),a("code",[t._v("yarn")]),t._v(" package manager.")]),t._v(" "),a("h3",{attrs:{id:"software-prerequisites"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#software-prerequisites"}},[t._v("#")]),t._v(" Software prerequisites")]),t._v(" "),a("ol",[a("li",[t._v("Download Node.js LTS version 8.11 from Node.js official website or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -sL https://deb.nodesource.com/setup_8.x "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -E "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("bash")]),t._v("\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Node.js:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y nodejs\n")])])]),a("ol",[a("li",[t._v("Download Yarn version 1.7.0 from yarn's "),a("a",{attrs:{href:"https://github.com/yarnpkg/yarn/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github"),a("OutboundLink")],1),t._v(" repository or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://github.com/yarnpkg/yarn/releases/download/v1.7.0/yarn_1.7.0_all.deb\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Yarn:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" dpkg -i yarn_1.7.0_all.deb "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" yarn_1.7.0_all.deb\n")])])]),a("h3",{attrs:{id:"build-a-weaver-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-a-weaver-application"}},[t._v("#")]),t._v(" Build a Weaver application")]),t._v(" "),a("ol",[a("li",[t._v("Download the latest version of Weaver from github-frontend via git:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/ibax-io/ibax-front.git\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Weaver dependencies via Yarn:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front/ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v("\n")])])]),a("h3",{attrs:{id:"add-the-configuration-file-for-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-configuration-file-for-the-blockchain-network"}},[t._v("#")]),t._v(" Add the configuration file for the blockchain network")]),t._v(" "),a("ol",[a("li",[t._v("Create a "),a("em",[t._v("settings.json")]),t._v(" file that contains information about node connection:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cp/opt/backenddir/ibax-front/public/settings.json.dist "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n /opt/backenddir/ibax-front/public/public/settings.json\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Edit the "),a("em",[t._v("settings.json")]),t._v(" file in any text editor and add the required settings in this format:")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("http://Node_IP-address:Node_HTTP-Port\n")])])]),a("p",[t._v("Examples of "),a("em",[t._v("settings.json")]),t._v(" files for the three nodes:")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"fullNodes"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.1:7079"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.2:7079"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.3:7079"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Build Weaver Desktop Application")]),t._v(" "),a("p",[t._v("1.Use yarn to build the desktop version:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" build-desktop\n")])])]),a("p",[t._v("2.The desktop version will be packaged into AppImage suffix format:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" release --publish never -l\n")])])]),a("p",[t._v("After building, your application can be used, but its connection configuration cannot be changed. If these settings need to be changed, a new version of the application must be built.")]),t._v(" "),a("h3",{attrs:{id:"build-weaver-web-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-weaver-web-application"}},[t._v("#")]),t._v(" Build Weaver Web Application")]),t._v(" "),a("p",[t._v("1.Build a web application:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front/ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" build\n")])])]),a("p",[t._v("After building, the redistributable files will be placed in the /build directory. You can use any web server of your choice for deployment, and the "),a("em",[t._v("settings.json")]),t._v(" file must also be placed in this directory. Note that if the connection settings are changed, there is no need to build the application again. Instead, edit the "),a("em",[t._v("settings.json")]),t._v(" file and restart the web server.")]),t._v(" "),a("p",[t._v("1.For development or testing purposes, you can build Yarn's web server:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" global "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" serve "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" serve -s build\n")])])]),a("p",[t._v("After that, your Weaver web application will be available at the following location: "),a("code",[t._v("http://localhost:5000")]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"configure-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-blockchain-network"}},[t._v("#")]),t._v(" Configure the blockchain network")]),t._v(" "),a("h3",{attrs:{id:"create-the-creator-account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-the-creator-account"}},[t._v("#")]),t._v(" Create the creator account")]),t._v(" "),a("p",[t._v("Create an account for the first node owner. This account is the creator of the new blockchain platform and has the administrator access.")]),t._v(" "),a("p",[t._v("1.Run Weaver;")]),t._v(" "),a("p",[t._v("2.Import the existing account using the following data:")]),t._v(" "),a("p",[t._v("–Load the backup of the node owner's private key located in the "),a("code",[t._v("/opt/backenddir/node1/PrivateKey")]),t._v(" file.")]),t._v(" "),a("blockquote",[a("p",[t._v("Note")]),t._v(" "),a("p",[t._v("There are two private key files in this directory. The "),a("code",[t._v("PrivateKey")]),t._v(" file is used create the node owner's account. The "),a("code",[t._v("NodePrivateKey")]),t._v(" file is the private key of the node itself and must be kept secret.")])]),t._v(" "),a("p",[t._v("3.After logging in to the account, since no role has been created at this time, please select the Without role option.")]),t._v(" "),a("h3",{attrs:{id:"import-applications-roles-and-templates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#import-applications-roles-and-templates"}},[t._v("#")]),t._v(" Import applications, roles and templates")]),t._v(" "),a("p",[t._v("At this time, the blockchain platform is in a blank state. You can configure it by adding roles, templates, and application frameworks that support basic ecosystem functions.")]),t._v(" "),a("p",[t._v("1.Clone the application repository;")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/ibax-io/dapps.git\n")])])]),a("p",[t._v("2.Navigate to Developer> Import in Weaver;")]),t._v(" "),a("p",[t._v("3.Import applications as per the following order:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v(" A./opt/backenddir/dapps/system.json \n B./opt/backenddir/dapps/conditions.json \n C./opt/backenddir/dapps/basic.json \n D./opt/backenddir/dapps/lang_res.json\n")])])]),a("p",[t._v("4.Navigate to Admin> Role, and click Install Default Role;")]),t._v(" "),a("p",[t._v("5.Exit the system through the configuration file menu in the upper right corner;")]),t._v(" "),a("p",[t._v("6.Log in to the system as Admin;")]),t._v(" "),a("p",[t._v("7.Navigate to Home> Vote> Template List, and click Install Default Template.")]),t._v(" "),a("h3",{attrs:{id:"add-the-first-node-to-the-node-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-first-node-to-the-node-list"}},[t._v("#")]),t._v(" Add the first node to the node list")]),t._v(" "),a("p",[t._v("1.Navigate to Developer> Platform Parameters, and click the first_nodes parameter;")]),t._v(" "),a("p",[t._v("2.Specify the parameters of the first blockchain network node.")]),t._v(" "),a("ul",[a("li",[t._v("public_key - The public key of the node is located in the "),a("code",[t._v("/opt/backenddir/node1/NodePublicKey")]),t._v(" file;")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('{"api_address":"http://192.168.1.1:7079","public_key":"%node_public_key%","tcp_address":"192.168.1.1:7078"}\n')])])]),a("h2",{attrs:{id:"add-other-honor-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-other-honor-nodes"}},[t._v("#")]),t._v(" Add other honor nodes")]),t._v(" "),a("h3",{attrs:{id:"add-members-into-the-consensus-role-group"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-members-into-the-consensus-role-group"}},[t._v("#")]),t._v(" Add members into the consensus role group")]),t._v(" "),a("p",[t._v("By default, only members in the consensus role (Consensus) group can participate in the voting required to add other master nodes. This means that before adding a new master node, members of the ecosystem must be assigned to the role.\nIn this section, the creator's account is designated as the only member of the consensus role group. In a production environment, this role must be assigned to platform members that perform governance.")]),t._v(" "),a("p",[t._v("1.Navigate to Home> Role and click Consensus;")]),t._v(" "),a("p",[t._v("2.Click Assign to assign the creator's account to the role.")]),t._v(" "),a("h3",{attrs:{id:"create-the-owner-account-for-other-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-the-owner-account-for-other-nodes"}},[t._v("#")]),t._v(" Create the owner account for other nodes")]),t._v(" "),a("ol",[a("li",[a("p",[t._v("Run Weaver;")])]),t._v(" "),a("li",[a("p",[t._v("Import the existing account using the following data:\n– Load the backup of the node owner's private key located in the "),a("code",[t._v("/opt/backenddir/node2/PrivateKey")]),t._v(" file.")])]),t._v(" "),a("li",[a("p",[t._v("After logging in to the account, since no role has been created at this time, please select the Without role option.")])]),t._v(" "),a("li",[a("p",[t._v("Navigate to Home> Personal Information, and click the title of the personal information;")])]),t._v(" "),a("li",[a("p",[t._v("Add account details (personal information title, description, etc.).")])])]),t._v(" "),a("h3",{attrs:{id:"assign-the-node-owner-with-the-validators-role"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#assign-the-node-owner-with-the-validators-role"}},[t._v("#")]),t._v(" Assign the node owner with the Validators role")]),t._v(" "),a("ol",[a("li",[t._v("Operations by the new node owner:\n"),a("ol",[a("li",[t._v("Navigate to Home> Verifier;")]),t._v(" "),a("li",[t._v("Click Create Request and fill in the application form of the verifier candidate;")]),t._v(" "),a("li",[t._v("Click send request.")])])]),t._v(" "),a("li",[t._v("Operations by the creator:\n"),a("ol",[a("li",[t._v("Log in with a consensus role (Consensus);")]),t._v(" "),a("li",[t._v("Navigate to Home> Verifier;")]),t._v(" "),a("li",[t._v('Click the "Play" icon to start voting according to the candidate\'s request;')]),t._v(" "),a("li",[t._v("Navigate to Home> Vote, and click Update voting status;")]),t._v(" "),a("li",[t._v("Click the voting name and vote for the node owner.")])])])]),t._v(" "),a("p",[t._v("As a result, the account of the owner of the new node is assigned with the Validator role, and the new node is added to the list of master nodes.")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{521:function(t,e,a){"use strict";a.r(e);var s=a(51),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"deployment-of-a-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deployment-of-a-ibax-network"}},[t._v("#")]),t._v(" Deployment of A IBAX Network")]),t._v(" "),a("p",[t._v("In this section, we will show you how to deploy your own blockchain network.")]),t._v(" "),a("h2",{attrs:{id:"an-deployment-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#an-deployment-example"}},[t._v("#")]),t._v(" An deployment example")]),t._v(" "),a("p",[t._v("A blockchain network will be deployed with the following three nodes as an example.")]),t._v(" "),a("p",[t._v("Three network nodes:")]),t._v(" "),a("ul",[a("li",[t._v("Node 1 is the first node in the blockchain network, which can generate new blocks and send transactions from clients connected to it;")]),t._v(" "),a("li",[t._v("Node 2 is another honor node, which can generate new blocks and send transactions from clients connected to it;")]),t._v(" "),a("li",[t._v("Node 3 is a guardian node, which cannot generate new blocks, but can send transactions from clients connected to it.")])]),t._v(" "),a("p",[t._v("Configurations of the three nodes to be deployed:")]),t._v(" "),a("ul",[a("li",[t._v("Each node uses its own PostgreSQL database system instance;")]),t._v(" "),a("li",[t._v("Each node uses its own Centrifugo service instance;")]),t._v(" "),a("li",[t._v("The server side github-backend is deployed on the same host as other backend components.")])]),t._v(" "),a("p",[t._v("The sample addresses and ports used by the nodes are described in the following table:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("Node")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Component")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("IP & port")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:7079")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:7079")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:7079")])])])]),t._v(" "),a("h2",{attrs:{id:"deploy-phase"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-phase"}},[t._v("#")]),t._v(" Deploy phase")]),t._v(" "),a("p",[t._v("Your own blockchain network must be deployed in several stages:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#deployment-of-a-ibax-network"}},[t._v("Deployment of A IBAX Network")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#an-deployment-example"}},[t._v("An deployment example")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#deploy-phase"}},[t._v("Deploy phase")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#server-deployment"}},[t._v("Server deployment")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#deploy-the-first-node"}},[t._v("Deploy the first node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#sudo"}},[t._v("sudo")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#golang"}},[t._v("Golang")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#postgresql"}},[t._v("PostgreSQL")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#directory-structure"}},[t._v("Directory structure")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create a database")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-centrifugo"}},[t._v("Configure Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-first-node"}},[t._v("Configure the first node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#initiate-the-first-node-server"}},[t._v("Initiate the first node server")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#deploy-other-nodes"}},[t._v("Deploy other nodes")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#node-2"}},[t._v("Node 2")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#node-3"}},[t._v("Node 3")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#front-end-deployment"}},[t._v("Front-end deployment")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#software-prerequisites"}},[t._v("Software prerequisites")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#build-a-weaver-application"}},[t._v("Build a Weaver application")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-the-configuration-file-for-the-blockchain-network"}},[t._v("Add the configuration file for the blockchain network")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#build-weaver-web-application"}},[t._v("Build Weaver Web Application")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-blockchain-network"}},[t._v("Configure the blockchain network")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#create-the-creator-account"}},[t._v("Create the creator account")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#import-applications-roles-and-templates"}},[t._v("Import applications, roles and templates")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-the-first-node-to-the-node-list"}},[t._v("Add the first node to the node list")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-other-honor-nodes"}},[t._v("Add other honor nodes")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#add-members-into-the-consensus-role-group"}},[t._v("Add members into the consensus role group")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-the-owner-account-for-other-nodes"}},[t._v("Create the owner account for other nodes")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#assign-the-node-owner-with-the-validators-role"}},[t._v("Assign the node owner with the Validators role")])])])])])])]),t._v(" "),a("h2",{attrs:{id:"server-deployment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-deployment"}},[t._v("#")]),t._v(" Server deployment")]),t._v(" "),a("h3",{attrs:{id:"deploy-the-first-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-the-first-node"}},[t._v("#")]),t._v(" Deploy the first node")]),t._v(" "),a("p",[t._v("The first node is a special one because it is essential to launch the blockchain network. The first block of the blockchain is generated by the first node, and all other nodes would download the blockchain from it. The owner of the first node is the platform creator.")]),t._v(" "),a("h3",{attrs:{id:"dependencies-and-environment-settings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependencies-and-environment-settings"}},[t._v("#")]),t._v(" Dependencies and environment settings")]),t._v(" "),a("h4",{attrs:{id:"sudo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sudo"}},[t._v("#")]),t._v(" sudo")]),t._v(" "),a("p",[t._v("All commands of Debian 9 must be run as a non-root user. However, some system commands require super user permissions to execute. By default, sudo is not installed on Debian 9, you must install it first.")]),t._v(" "),a("ol",[a("li",[t._v("Become a super user.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("su")]),t._v(" -\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Upgrade your system.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" upgrade -y "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" dist-upgrade -y\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Install sudo。")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -y\n")])])]),a("ol",{attrs:{start:"4"}},[a("li",[t._v("Add your user to the sudo group.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("usermod")]),t._v(" -a -G "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" user\n")])])]),a("ol",{attrs:{start:"5"}},[a("li",[t._v("After restarting, the changes take effect.")])]),t._v(" "),a("h3",{attrs:{id:"golang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#golang"}},[t._v("#")]),t._v(" Golang")]),t._v(" "),a("p",[t._v("Install Go according to the "),a("a",{attrs:{href:"https://golang.org/doc/install#tarball",target:"_blank",rel:"noopener noreferrer"}},[t._v("Official Documents"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("ol",[a("li",[t._v("Download the latest stable version of Go (> 1.10.x) from "),a("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Golang official website"),a("OutboundLink")],1),t._v(" or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Use tar to extract the tarball to the "),a("code",[t._v("/usr/local")]),t._v(" directory.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("tar")]),t._v(" -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Add "),a("code",[t._v("/usr/local/go/bin")]),t._v(" to PATH environment variables (located at "),a("code",[t._v("/etc/profile")]),t._v(" or "),a("code",[t._v("$HOME/.profile")]),t._v(").")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("PATH")])]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$PATH")]),t._v(":/usr/local/go/bin\n")])])]),a("ol",[a("li",[t._v("Execute the "),a("code",[t._v("source")]),t._v(" file to make the changes take effect, for example:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("source")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$HOME")]),t._v("/.profile\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Delete temporary files:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" go1.11.2.linux-amd64.tar.gz\n")])])]),a("h3",{attrs:{id:"postgresql"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#postgresql"}},[t._v("#")]),t._v(" PostgreSQL")]),t._v(" "),a("ol",[a("li",[t._v("Install PostgreSQL (> v.10) and psql:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y postgresql\n")])])]),a("h3",{attrs:{id:"centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#centrifugo"}},[t._v("#")]),t._v(" Centrifugo")]),t._v(" "),a("ol",[a("li",[t._v("Download Centrifugo V.1.8.0 from "),a("a",{attrs:{href:"https://github.com/centrifugal/centrifugo/releases/",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub"),a("OutboundLink")],1),t._v(" or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://github.com/centrifugal/centrifugo/releases/download/v1.8.0/centrifugo-1.8.0-linux-amd64.zip "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("unzip")]),t._v(" centrifugo-1.8.0-linux-amd64.zip "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mv")]),t._v(" centrifugo-1.8.0-linux-amd64/* centrifugo/\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Delete temporary files:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" -R centrifugo-1.8.0-linux-amd64 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" centrifugo-1.8.0-linux-amd64.zip\n")])])]),a("h3",{attrs:{id:"directory-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#directory-structure"}},[t._v("#")]),t._v(" Directory structure")]),t._v(" "),a("p",[t._v("For the Debian 9 system, it is recommended to store all software used by the blockchain platform in a separate directory.")]),t._v(" "),a("p",[t._v("The "),a("code",[t._v("/opt/backenddir")]),t._v(" directory is used here, but you can use any directory. In this case, please change all commands and configuration files accordingly.")]),t._v(" "),a("ol",[a("li",[t._v("Create a directory for the blockchain platform:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Make your user the owner of the directory:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("chown")]),t._v(" user /opt/backenddir/\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Create subdirectories for Centrifugo, go-ibax and node data. All node data is stored in a directory named "),a("code",[t._v("nodeX")]),t._v(", where "),a("code",[t._v("X")]),t._v(" is the node number. According to the node to be deployed, "),a("code",[t._v("node1")]),t._v(" is Node 1, "),a("code",[t._v("node2")]),t._v(" is Node 2, and so forth.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/go-ibax "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/go-ibax/node1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n")])])]),a("h3",{attrs:{id:"create-a-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-database"}},[t._v("#")]),t._v(" Create a database")]),t._v(" "),a("ol",[a("li",[t._v("Change the user password postgres to the default password "),a("em",[t._v("123456")]),t._v(". You can set your own password, but you must change it in the node configuration file "),a("em",[t._v("config.toml")]),t._v(".")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -u postgres psql -c "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"ALTER USER postgres WITH PASSWORD '123456'\"")]),t._v("\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Create a current state database for the node, for example "),a("strong",[t._v("chaindb")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -u postgres psql -c "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CREATE DATABASE chaindb"')]),t._v("\n")])])]),a("h3",{attrs:{id:"configure-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-centrifugo"}},[t._v("#")]),t._v(" Configure Centrifugo")]),t._v(" "),a("ol",[a("li",[t._v("Create the Centrifugo configuration file:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'{"secret":"CENT_SECRET"}\'')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" /opt/backenddir/centrifugo/config.json\n")])])]),a("p",[t._v("You can set your own "),a("em",[t._v("secret")]),t._v(", but you must also change it in the node configuration file "),a("em",[t._v("config.toml")]),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"install-go-ibax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-go-ibax"}},[t._v("#")]),t._v(" Install go-ibax")]),t._v(" "),a("ol",[a("li",[t._v("Download github-backend from GitHub:")]),t._v(" "),a("li",[t._v("Copy the go-ibax binary file to the "),a("code",[t._v("/opt/backenddir/go-ibax")]),t._v(" directory. If you are using default Go workspace, the binary files are located in the "),a("code",[t._v("$HOME/go/bin")]),t._v(" directory:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("cp")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$HOME")]),t._v("/go/bin/go-ibax /opt/backenddir/go-ibax\n")])])]),a("h3",{attrs:{id:"configure-the-first-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-first-node"}},[t._v("#")]),t._v(" Configure the first node")]),t._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Create the configuration file for Node 1:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.1:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v("\n")])])]),a("ol",{attrs:{start:"4"}},[a("li",[t._v("Generate the keys of Node 1, including the public and private keys of the node and the account:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("ol",{attrs:{start:"5"}},[a("li",[t._v("Generate the first block:")])]),t._v(" "),a("blockquote",[a("p",[t._v("Note")]),t._v(" "),a("p",[t._v("If you want to create your own blockchain network, you must use the "),a("code",[t._v("--test=true")]),t._v(" option. Otherwise, you cannot create a new account.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax generateFirstBlock "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --test"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("true\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Initialize the database:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax initDatabase "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("h3",{attrs:{id:"initiate-the-first-node-server"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initiate-the-first-node-server"}},[t._v("#")]),t._v(" Initiate the first node server")]),t._v(" "),a("p",[t._v("To start the first node server, you must start the following two services:")]),t._v(" "),a("ul",[a("li",[t._v("centrifugo")]),t._v(" "),a("li",[t._v("go-ibax")])]),t._v(" "),a("p",[t._v("If you failed to create "),a("a",{attrs:{href:"#https://wiki.debian.org/systemd/Services"}},[t._v("services")]),t._v(" with these files, you may execute binary files from directories in different consoles.")]),t._v(" "),a("ol",[a("li",[t._v("Run centrifugo:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n -a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config /opt/backenddir/centrifugo/config.json\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Run go-ibax:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("h2",{attrs:{id:"deploy-other-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-other-nodes"}},[t._v("#")]),t._v(" Deploy other nodes")]),t._v(" "),a("p",[t._v("Although the deployment of all other nodes (Node 2 and Node 3) is similar to the first, but there are three differences:")]),t._v(" "),a("ul",[a("li",[t._v("You do not need to generate the first block. But it must be copied from Node 1 to the current node data directory;")]),t._v(" "),a("li",[t._v("The node must download blocks from Node 1 by configuring the "),a("code",[t._v("--nodesAddr")]),t._v(" option;")]),t._v(" "),a("li",[t._v("The node must use its own addresses and ports.")])]),t._v(" "),a("h3",{attrs:{id:"node-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-2"}},[t._v("#")]),t._v(" Node 2")]),t._v(" "),a("p",[t._v("Follow operational instructions as shown below:")]),t._v(" "),a("ol",[a("li",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create database")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])]),t._v(" "),a("li",[t._v("Create the configuration file for Node 2:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.2:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--nodesAddr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Copy the first block file to Node 2. For example, you can perform this operation on Node 2 throughscp:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("scp")]),t._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node2/\n")])])]),a("ol",{attrs:{start:"7"}},[a("li",[t._v("Generate the keys of Node 2, including the public and private keys of the node and the account:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2/config.toml\n")])])]),a("ol",{attrs:{start:"8"}},[a("li",[t._v("Initiate the database:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" ./go-ibax initDatabase --config"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("node2/config.toml\n")])])]),a("ol",{attrs:{start:"9"}},[a("li",[t._v("Run centrifugo:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n-a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),a("ol",{attrs:{start:"10"}},[a("li",[t._v("Run go-ibax:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2/config.toml\n")])])]),a("p",[t._v("As a result, the node downloads the block from the first node. As this node is not a verification node, it cannot generate a new block. Node 2 will be added to the list of verification nodes later.")]),t._v(" "),a("h3",{attrs:{id:"node-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-3"}},[t._v("#")]),t._v(" Node 3")]),t._v(" "),a("p",[t._v("Follow operational instructions as shown below:")]),t._v(" "),a("ol",[a("li",[a("p",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create database")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])])]),t._v(" "),a("li",[a("p",[t._v("Create the configuration file for Node 3:")])])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.3:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--nodesAddr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Copy the first block file to Node 3. For example, you can perform this operation on Node 3 through scp:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("scp")]),t._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node3/\n")])])]),a("p",[t._v("7.Generate the key of Node 3, including the public and private keys of the node and the account:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3/config.toml\n")])])]),a("p",[t._v("8.Initiate the database:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" ./go-ibax initDatabase --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("node3/config.toml\n")])])]),a("p",[t._v("9.Run centrifugo:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n-a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),a("p",[t._v("10.Run go-ibax:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3/config.toml\n")])])]),a("p",[t._v("As a result, the node downloads the block from the first node. As this node is not a verification node, it cannot generate a new block. The client may be connected to the node, and it may send transactions to the network.")]),t._v(" "),a("h2",{attrs:{id:"front-end-deployment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#front-end-deployment"}},[t._v("#")]),t._v(" Front-end deployment")]),t._v(" "),a("p",[t._v("Only after installing "),a("strong",[t._v("GNOME GUI")]),t._v(" on Debian 9 (Stretch) 64-bit Official Release, the Govis client can be built with the "),a("code",[t._v("yarn")]),t._v(" package manager.")]),t._v(" "),a("h3",{attrs:{id:"software-prerequisites"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#software-prerequisites"}},[t._v("#")]),t._v(" Software prerequisites")]),t._v(" "),a("ol",[a("li",[t._v("Download Node.js LTS version 8.11 from Node.js official website or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -sL https://deb.nodesource.com/setup_8.x "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -E "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("bash")]),t._v("\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Node.js:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y nodejs\n")])])]),a("ol",[a("li",[t._v("Download Yarn version 1.7.0 from yarn's "),a("a",{attrs:{href:"https://github.com/yarnpkg/yarn/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github"),a("OutboundLink")],1),t._v(" repository or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://github.com/yarnpkg/yarn/releases/download/v1.7.0/yarn_1.7.0_all.deb\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Yarn:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" dpkg -i yarn_1.7.0_all.deb "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" yarn_1.7.0_all.deb\n")])])]),a("h3",{attrs:{id:"build-a-weaver-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-a-weaver-application"}},[t._v("#")]),t._v(" Build a Weaver application")]),t._v(" "),a("ol",[a("li",[t._v("Download the latest version of Weaver from github-frontend via git:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/ibax-io/ibax-front.git\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Weaver dependencies via Yarn:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front/ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v("\n")])])]),a("h3",{attrs:{id:"add-the-configuration-file-for-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-configuration-file-for-the-blockchain-network"}},[t._v("#")]),t._v(" Add the configuration file for the blockchain network")]),t._v(" "),a("ol",[a("li",[t._v("Create a "),a("em",[t._v("settings.json")]),t._v(" file that contains information about node connection:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cp/opt/backenddir/ibax-front/public/settings.json.dist "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n /opt/backenddir/ibax-front/public/public/settings.json\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Edit the "),a("em",[t._v("settings.json")]),t._v(" file in any text editor and add the required settings in this format:")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("http://Node_IP-address:Node_HTTP-Port\n")])])]),a("p",[t._v("Examples of "),a("em",[t._v("settings.json")]),t._v(" files for the three nodes:")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"fullNodes"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.1:7079"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.2:7079"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.3:7079"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Build Weaver Desktop Application")]),t._v(" "),a("p",[t._v("1.Use yarn to build the desktop version:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" build-desktop\n")])])]),a("p",[t._v("2.The desktop version will be packaged into AppImage suffix format:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" release --publish never -l\n")])])]),a("p",[t._v("After building, your application can be used, but its connection configuration cannot be changed. If these settings need to be changed, a new version of the application must be built.")]),t._v(" "),a("h3",{attrs:{id:"build-weaver-web-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-weaver-web-application"}},[t._v("#")]),t._v(" Build Weaver Web Application")]),t._v(" "),a("p",[t._v("1.Build a web application:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front/ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" build\n")])])]),a("p",[t._v("After building, the redistributable files will be placed in the /build directory. You can use any web server of your choice for deployment, and the "),a("em",[t._v("settings.json")]),t._v(" file must also be placed in this directory. Note that if the connection settings are changed, there is no need to build the application again. Instead, edit the "),a("em",[t._v("settings.json")]),t._v(" file and restart the web server.")]),t._v(" "),a("p",[t._v("1.For development or testing purposes, you can build Yarn's web server:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" global "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" serve "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" serve -s build\n")])])]),a("p",[t._v("After that, your Weaver web application will be available at the following location: "),a("code",[t._v("http://localhost:5000")]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"configure-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-blockchain-network"}},[t._v("#")]),t._v(" Configure the blockchain network")]),t._v(" "),a("h3",{attrs:{id:"create-the-creator-account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-the-creator-account"}},[t._v("#")]),t._v(" Create the creator account")]),t._v(" "),a("p",[t._v("Create an account for the first node owner. This account is the creator of the new blockchain platform and has the administrator access.")]),t._v(" "),a("p",[t._v("1.Run Weaver;")]),t._v(" "),a("p",[t._v("2.Import the existing account using the following data:")]),t._v(" "),a("p",[t._v("–Load the backup of the node owner's private key located in the "),a("code",[t._v("/opt/backenddir/node1/PrivateKey")]),t._v(" file.")]),t._v(" "),a("blockquote",[a("p",[t._v("Note")]),t._v(" "),a("p",[t._v("There are two private key files in this directory. The "),a("code",[t._v("PrivateKey")]),t._v(" file is used create the node owner's account. The "),a("code",[t._v("NodePrivateKey")]),t._v(" file is the private key of the node itself and must be kept secret.")])]),t._v(" "),a("p",[t._v("3.After logging in to the account, since no role has been created at this time, please select the Without role option.")]),t._v(" "),a("h3",{attrs:{id:"import-applications-roles-and-templates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#import-applications-roles-and-templates"}},[t._v("#")]),t._v(" Import applications, roles and templates")]),t._v(" "),a("p",[t._v("At this time, the blockchain platform is in a blank state. You can configure it by adding roles, templates, and application frameworks that support basic ecosystem functions.")]),t._v(" "),a("p",[t._v("1.Clone the application repository;")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/ibax-io/dapps.git\n")])])]),a("p",[t._v("2.Navigate to Developer> Import in Weaver;")]),t._v(" "),a("p",[t._v("3.Import applications as per the following order:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v(" A./opt/backenddir/dapps/system.json \n B./opt/backenddir/dapps/conditions.json \n C./opt/backenddir/dapps/basic.json \n D./opt/backenddir/dapps/lang_res.json\n")])])]),a("p",[t._v("4.Navigate to Admin> Role, and click Install Default Role;")]),t._v(" "),a("p",[t._v("5.Exit the system through the configuration file menu in the upper right corner;")]),t._v(" "),a("p",[t._v("6.Log in to the system as Admin;")]),t._v(" "),a("p",[t._v("7.Navigate to Home> Vote> Template List, and click Install Default Template.")]),t._v(" "),a("h3",{attrs:{id:"add-the-first-node-to-the-node-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-first-node-to-the-node-list"}},[t._v("#")]),t._v(" Add the first node to the node list")]),t._v(" "),a("p",[t._v("1.Navigate to Developer> Platform Parameters, and click the first_nodes parameter;")]),t._v(" "),a("p",[t._v("2.Specify the parameters of the first blockchain network node.")]),t._v(" "),a("ul",[a("li",[t._v("public_key - The public key of the node is located in the "),a("code",[t._v("/opt/backenddir/node1/NodePublicKey")]),t._v(" file;")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('{"api_address":"http://192.168.1.1:7079","public_key":"%node_public_key%","tcp_address":"192.168.1.1:7078"}\n')])])]),a("h2",{attrs:{id:"add-other-honor-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-other-honor-nodes"}},[t._v("#")]),t._v(" Add other honor nodes")]),t._v(" "),a("h3",{attrs:{id:"add-members-into-the-consensus-role-group"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-members-into-the-consensus-role-group"}},[t._v("#")]),t._v(" Add members into the consensus role group")]),t._v(" "),a("p",[t._v("By default, only members in the consensus role (Consensus) group can participate in the voting required to add other master nodes. This means that before adding a new master node, members of the ecosystem must be assigned to the role.\nIn this section, the creator's account is designated as the only member of the consensus role group. In a production environment, this role must be assigned to platform members that perform governance.")]),t._v(" "),a("p",[t._v("1.Navigate to Home> Role and click Consensus;")]),t._v(" "),a("p",[t._v("2.Click Assign to assign the creator's account to the role.")]),t._v(" "),a("h3",{attrs:{id:"create-the-owner-account-for-other-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-the-owner-account-for-other-nodes"}},[t._v("#")]),t._v(" Create the owner account for other nodes")]),t._v(" "),a("ol",[a("li",[a("p",[t._v("Run Weaver;")])]),t._v(" "),a("li",[a("p",[t._v("Import the existing account using the following data:\n– Load the backup of the node owner's private key located in the "),a("code",[t._v("/opt/backenddir/node2/PrivateKey")]),t._v(" file.")])]),t._v(" "),a("li",[a("p",[t._v("After logging in to the account, since no role has been created at this time, please select the Without role option.")])]),t._v(" "),a("li",[a("p",[t._v("Navigate to Home> Personal Information, and click the title of the personal information;")])]),t._v(" "),a("li",[a("p",[t._v("Add account details (personal information title, description, etc.).")])])]),t._v(" "),a("h3",{attrs:{id:"assign-the-node-owner-with-the-validators-role"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#assign-the-node-owner-with-the-validators-role"}},[t._v("#")]),t._v(" Assign the node owner with the Validators role")]),t._v(" "),a("ol",[a("li",[t._v("Operations by the new node owner:\n"),a("ol",[a("li",[t._v("Navigate to Home> Verifier;")]),t._v(" "),a("li",[t._v("Click Create Request and fill in the application form of the verifier candidate;")]),t._v(" "),a("li",[t._v("Click send request.")])])]),t._v(" "),a("li",[t._v("Operations by the creator:\n"),a("ol",[a("li",[t._v("Log in with a consensus role (Consensus);")]),t._v(" "),a("li",[t._v("Navigate to Home> Verifier;")]),t._v(" "),a("li",[t._v('Click the "Play" icon to start voting according to the candidate\'s request;')]),t._v(" "),a("li",[t._v("Navigate to Home> Vote, and click Update voting status;")]),t._v(" "),a("li",[t._v("Click the voting name and vote for the node owner.")])])])]),t._v(" "),a("p",[t._v("As a result, the account of the owner of the new node is assigned with the Validator role, and the new node is added to the list of master nodes.")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/140.3d3f94c2.js b/assets/js/140.ab030c6a.js similarity index 99% rename from assets/js/140.3d3f94c2.js rename to assets/js/140.ab030c6a.js index c8f0091..d6c12aa 100644 --- a/assets/js/140.3d3f94c2.js +++ b/assets/js/140.ab030c6a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[140],{521:function(e,t,a){"use strict";a.r(t);var s=a(51),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[e._v("#")]),e._v(" RESTful API v2")]),e._v(" "),a("p",[e._v("Weaver\nAll functions provided, including authentication, ecosystem data reception, error handling, database table manipulation, page and contract execution are available through\nIBAX Blockchain Platform's REST API is available.")]),e._v(" "),a("p",[e._v("By using the REST API, developers can access any of the platform's features without using Weaver.")]),e._v(" "),a("p",[e._v("API command calls are executed by addressing "),a("code",[e._v("/api/v2/command/[param]")]),e._v(", where "),a("code",[e._v("command")]),e._v("\nis the command name and "),a("code",[e._v("param")]),e._v(" is the additional parameter. The request parameters must be specified using the\n"),a("code",[e._v("Content-Type: x-www-form-urlencoded")]),e._v("\nThe format is sent. The server response result is in JSON format.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-response-handling"}},[e._v("Error response handling")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-list"}},[e._v("Error list")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#request-type"}},[e._v("Request Type")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#authentication-interface"}},[e._v("Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[e._v("getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#login"}},[e._v("login")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#server-side-command-interface"}},[e._v("Server Side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#version"}},[e._v("version")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-request-function-interface"}},[e._v("Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#balance"}},[e._v("balance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blocks"}},[e._v("blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#keyinfo"}},[e._v("keyinfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#wallethistory"}},[e._v("walletHistory")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#get-metrics-interface"}},[e._v("Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-honornodes"}},[e._v("metrics/honornodes")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-interface"}},[e._v("Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ecosystemname"}},[e._v("ecosystemname")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[e._v("appparams/{appID}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparams"}},[e._v("ecosystemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-name"}},[e._v("table/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-column-id"}},[e._v("row/{name}/{column}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#systemparams"}},[e._v("systemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-function-interface"}},[e._v("Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sendtx"}},[e._v("sendTX")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[e._v("txstatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[e._v("txinfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content"}},[e._v("content")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[e._v("maxblockid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[e._v("block/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[e._v("updnotificator")])])])])]),e._v(" "),a("h2",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Return status in case of successful request execution\n"),a("code",[e._v("200")]),e._v(". If an error occurs, in addition to the error status, a JSON object with the following fields will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("error")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error identifier.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("msg")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error text message.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")])]),e._v(" "),a("blockquote",[a("p",[e._v("An array of additional parameters that can be placed in the error message.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('400 (Bad request)\nContent-Type: application/json\n{\n "err": "E_INVALIDWALLET",\n "msg": "Wallet 1234-5678-9012-3444-3488 is not valid",\n "params": ["1234-5678-9012-3444-3488"]\n}\n')])])]),a("h3",{attrs:{id:"error-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-list"}},[e._v("#")]),e._v(" Error list")]),e._v(" "),a("blockquote",[a("p",[e._v("E_CONTRACT")])]),e._v(" "),a("p",[e._v("No "),a("code",[e._v("%s")]),e._v(" contract exists")]),e._v(" "),a("blockquote",[a("p",[e._v("E_DBNIL")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database is empty\n")])])]),a("blockquote",[a("p",[e._v("E_DELETEDKEY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address is frozen\n")])])]),a("blockquote",[a("p",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Ecosystem `%d` does not exist\n")])])]),a("blockquote",[a("p",[e._v("E_EMPTYPUBLIC")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Invalid account public key\n")])])]),a("blockquote",[a("p",[e._v("E_KEYNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address not found\n")])])]),a("blockquote",[a("p",[e._v("E_HASHWRONG")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect hash\n")])])]),a("blockquote",[a("p",[e._v("E_HASHNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Hash not found\n")])])]),a("blockquote",[a("p",[e._v("E_HEAVYPAGE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Too much page loading\n")])])]),a("blockquote",[a("p",[e._v("E_INVALIDWALLET")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Wallet address `%s` Invalid\n")])])]),a("blockquote",[a("p",[e._v("E_LIMITTXSIZE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The transaction size has exceeded the limit\n")])])]),a("blockquote",[a("p",[e._v("E_NOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Page or menu content not found\n")])])]),a("blockquote",[a("p",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Parameters not found\n")])])]),a("blockquote",[a("p",[e._v("E_PERMISSION")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("No permission\n")])])]),a("blockquote",[a("p",[e._v("E_QUERY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database query error\n")])])]),a("blockquote",[a("p",[e._v("E_RECOVERED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("API panic error occurs.\n\nIf a panic error occurs, an error is returned.\n\nThis error means that you have encountered a bug that needs to be found and fixed.\n")])])]),a("blockquote",[a("p",[e._v("E_SERVER")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Server error.\n\nReturn if there is an error in the golang library function. The \\*msg\\* field contains the error text message.\n\n**E_SERVER** may appear in response to any command Error. \nIf it occurs due to an incorrect input parameter, it can be changed to a related error. In another case, this error reports an invalid operation or incorrect system configuration, which requires a more detailed investigation report.\n")])])]),a("blockquote",[a("p",[e._v("E_SIGNATURE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect signature\n")])])]),a("blockquote",[a("p",[e._v("E_STATELOGIN")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("`%s` is not a member of the ecosystem `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Data sheet `%s` not found\n")])])]),a("blockquote",[a("p",[e._v("E_TOKENEXPIRED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The session has expired `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_UNAUTHORIZED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unauthorized.\n\nIn case no login is performed or the session expires, \nexcept for `getuid, login` Any command other than **E_UNAUTHORIZED** returns an error.\n")])])]),a("blockquote",[a("p",[e._v("E_UNKNOWNUID")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unknown UID\n")])])]),a("blockquote",[a("p",[e._v("E_UPDATING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Nodes are updating the blockchain\n")])])]),a("blockquote",[a("p",[e._v("E_STOPPING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Node is stopped\n")])])]),a("blockquote",[a("p",[e._v("E_NOTIMPLEMENTED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Not yet achieved\n")])])]),a("blockquote",[a("p",[e._v("E_BANNED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("This account address is prohibited in `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_CHECKROLE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Access denied\n\nCLB Unavailable Interface\n")])])]),a("hr"),e._v(" "),a("blockquote",[a("p",[e._v("Interface requests for which the CLB node is not available.")])]),e._v(" "),a("ul",[a("li",[e._v("metrics")]),e._v(" "),a("li",[e._v("txinfo")]),e._v(" "),a("li",[e._v("txinfoMultiple")]),e._v(" "),a("li",[e._v("appparam")]),e._v(" "),a("li",[e._v("appparams")]),e._v(" "),a("li",[e._v("appcontent")]),e._v(" "),a("li",[e._v("history")]),e._v(" "),a("li",[e._v("balance")]),e._v(" "),a("li",[e._v("block")]),e._v(" "),a("li",[e._v("maxblockid")]),e._v(" "),a("li",[e._v("blocks")]),e._v(" "),a("li",[e._v("detailed_blocks")]),e._v(" "),a("li",[e._v("ecosystemparams")]),e._v(" "),a("li",[e._v("systemparams")]),e._v(" "),a("li",[e._v("ecosystems")]),e._v(" "),a("li",[e._v("ecosystemparam")]),e._v(" "),a("li",[e._v("ecosystemname")]),e._v(" "),a("li",[e._v("walletHistory")]),e._v(" "),a("li",[e._v("tx_record")])]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request Type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("application/x-www-form-urlencoded")])]),e._v(" "),a("h2",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://jwt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("JWT token"),a("OutboundLink")],1),e._v("\nUsed for authentication. The JWT token must be placed in each request header after it is received: "),a("code",[e._v("Authorization: Bearer TOKEN_HERE")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[e._v("#")]),e._v(" getuid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ returns a unique value, signs it with the private key, and then uses\nThe "),a("a",{attrs:{href:"#login"}},[e._v("login")]),e._v(" command sends it back to the server.")]),e._v(" "),a("p",[e._v("Generate a temporary JWT token that needs to be passed to "),a("strong",[e._v("Authorization")]),e._v(" when calling "),a("strong",[e._v("login")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/getuid\n")])])]),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("uid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Signature number.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("The temporary token passed during login.")]),e._v(" "),a("p",[e._v("The life cycle of a temporary token is 5 seconds.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("cryptoer")])]),e._v(" "),a("blockquote",[a("p",[e._v("Elliptic curve algorithm.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hasher")])]),e._v(" "),a("blockquote",[a("p",[e._v("hash algorithm.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-1"}},[e._v("#")]),e._v(" Response Example 1")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "uid": "4999317241855959593",\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....... .I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"\n "network_id": "4717243765193692211"\n}\n')])])]),a("p",[e._v("In the case that no authorization is required (the request contains "),a("strong",[e._v("Authorization")]),e._v("), the following message will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("expire")])]),e._v(" "),a("blockquote",[a("p",[e._v("Expiration time.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-2"}},[e._v("#")]),e._v(" Response Example 2")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "expire": "2159h59m49.4310543s",\n "ecosystem_id": "1",\n "key_id": "-654321",\n "address": "1196-...... -3496",\n "network_id": "1"\n}\n')])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[e._v("#")]),e._v(" login")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/ User authentication.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("getuid")]),e._v(" should be called first\ncommand in order to receive the unique value and sign it. getuid's temporary JWT token needs to be passed in the request header.")]),e._v(" "),a("p",[e._v("If the request is successful, the token received in the response is contained in "),a("strong",[e._v("Authorization")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/login\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")]),e._v(" "),a("p",[e._v("If not specified, defaults to the first ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[expire]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Lifecycle of the JWT token, in seconds, default is 28800.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[pubkey]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal account public key.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[key_id]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("signature")])]),e._v(" "),a("blockquote",[a("p",[e._v("The uid signature received via getuid.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("JWT token.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account Address ID")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("account")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("notify_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Notification ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isnode")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isowner")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the creator of the ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("clb")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the logged-in ecosystem is CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role list: "),a("code",[e._v("[{Role ID,Role Name}]")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-3"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.....30l665h3v7lH85rs5jgk0",\n "ecosystem_id": "1",\n "key_id": "-54321",\n "account": "1285-... -7743-4282",\n "notify_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..... _JTFfheD0K4CfMbvVNpOJVMNDPx25zIDGir9g3ZZM0w",\n "timestamp": "1451309883",\n "roles": [\n {\n "role_id": 1,\n "role_name": "Developer"\n }\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")])]),e._v(" "),a("h2",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" Server Side command interface")]),e._v(" "),a("h3",{attrs:{id:"version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[e._v("#")]),e._v(" version")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current server version.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/version\n")])])]),a("h4",{attrs:{id:"response-example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-4"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n"1.3.0 branch.main commit.790..757 time.2021-08-23-08:20:19(UTC)"\n')])])]),a("h2",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[e._v("#")]),e._v(" balance")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Requests the balance of the account address in the current ecosystem.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/balance/{wallet}\n")])])]),a("ul",[a("li",[a("p",[e._v("*wallet")]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(". Look up the address in the ecosystem where the user is currently logged in.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default eco1")]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem id.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("amount")])]),e._v(" "),a("blockquote",[a("p",[e._v("The minimum unit of contract account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("money")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("utxo")])]),e._v(" "),a("blockquote",[a("p",[e._v("UTXO account balance.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-5"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "amount": "877450000000000",\n "money": "877.45",\n "total": "877450000000000",\n "utxo": "0"\n} \n')])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[e._v("#")]),e._v(" blocks")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing additional information related to the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-5"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET \n/api/v2/blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information for each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("contract_name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("params")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of contract parameters.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("For the first block, it is the account address of the first block that signed the transaction.")])]),e._v(" "),a("blockquote",[a("p",[e._v("For all other blocks, is the address of the account that signed the transaction.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-6"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "1":\n [{"hash": "O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"detailed-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detailed-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-6"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/detailed_blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("blockhead")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block header contains the following fields.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("block_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block height.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for the block.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("node_position")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("The location of the node that generated the block in the honor node list.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("version")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block structure version.")])])])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block Hashing.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("node_position")])])]),e._v(" "),a("p",[e._v("the location of the node that generated the block in the honor node list.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("time")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("tx_count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of transactions within the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("size")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block size.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("rollback_hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("merkle_root")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block deals with the Merkle tree.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bin_data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("trading")])])]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information about each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trading hash.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("contract_name")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract name.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("params")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract parameters.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for this transaction.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("type")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction type.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("size")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trade Size.")])])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-7"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"1":\n {"header":\n {"block_id":1,\n "time":1551069320,\n "ecosystem_id":0,\n "key_id":-118432674655542910,\n "node_position":0,\n "version":1},\n "hash":"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI=",\n "ecosystem_id":0,\n "node_position":0,\n "key_id":-118432674655542910,\n "time":1551069320,\n "tx_count":1,\n "size": "1.69KiB",\n "rollbacks_hash":"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k=",\n "mrkl_root":"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg==",\n "bin_data":null,\n "sys_update":false,\n "gen_block":false,\n "stop_count":0,\n "transactions":[\n {\n "hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":0,\n "time":0,\n "type":0,\n "size": "300.00B"\n }\n ]}\n}\n')])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystems with roles registered to the specified address.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-7"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{key_id}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("The request is queried in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-6"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of roles with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-8"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"data-id-data-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-id-data-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matching the data in the binary watch, field, and records, this request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-8"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{id}/data/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-7"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-9"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\n{\n "name": "NFT Miner",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "data": [\n {\n "Type": "contracts",\n "Name": "NewNFTMiner",\n },\n ...\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matches the data in the specified table, field, and records, the request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-9"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{table}/id/{column}/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("table")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name, only one")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-8"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-10"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\nContent-Disposition: attachment\n\nSetVar(this_page, @1voting_list).(this_table, @1votings)\nInclude(@1pager_header)\n\nSetTitle("$@1voting_list$")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: "$@1votings_list_desc$"))\nAddToolButton(Title: $@1templates_list$, Page: @1voting_templates_list, Icon: icon-pin)\nAddToolButton(Title: $@1create$, Page: @1voting_create, Icon: icon-plus).Popup(60, $@1new_voting$)\n\n')])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo-2"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to a list of ecosystems, which contains the role of registered the specified address.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-10"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{address}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, you can specify "),a("code",[e._v("int64, uint64, xxxx -...-xxxx")]),e._v(".")]),e._v(" "),a("p",[e._v("This request is query in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-9"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecological system name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("Activities with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-11"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"wallethistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallethistory"}},[e._v("#")]),e._v(" walletHistory")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the current account transaction history record, find it according to the ID of the ID")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-11"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("searchType")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find Type (Income: Turn into Outcom: Turn out all: All, default).")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[page]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find the number of pages, the first page default, min: 1")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 20 articles. min: 1, MAX: 500")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/walletHistory?searchType=all&page=1&limit=10\n")])])]),a("h4",{attrs:{id:"response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-10"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("page")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of current page.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("limit")])]),e._v(" "),a("blockquote",[a("p",[e._v("Currently find the number of bars.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("sender_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Send key_id")])])]),e._v(" "),a("li",[a("em",[e._v("sender_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Send the account address")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept key_id")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept the account address")])])]),e._v(" "),a("li",[a("em",[e._v("amount")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])]),e._v(" "),a("li",[a("em",[e._v("comment")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading remarks")])])]),e._v(" "),a("li",[a("em",[e._v("block_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Block height")])])]),e._v(" "),a("li",[a("em",[e._v("tx_hash")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading hash")])])]),e._v(" "),a("li",[a("em",[e._v("created_at")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction creation time, millisecond time stamp")])])]),e._v(" "),a("li",[a("em",[e._v("money")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-12"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "page": 1,\n "limit": 10,\n "total": 617,\n "list": [\n {\n "id": 650,\n "sender_id": 666081971617879...,\n "sender_add": "0666-0819-7161-xxxx-5186",\n "recipient_id": 666081971617879...,\n "recipient_add": "0666-0819-7161-xxxx-5186",\n "amount": "242250000",\n "comment": "taxes for execution of @1Export contract",\n "block_id": 209,\n "tx_hash": "a213bc767d710a223856d83515d53518075b56fb9e9c063bce8a256c20ff0775",\n "created_at": 1666001092090,\n "money": "0.00024225"\n }\n ...\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"listwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#listwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-12"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/listWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-11"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-13"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"nodelistwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nodelistwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the specified data table. You can specify columns to be returned. The type in the data table is "),a("strong",[e._v("BYTEA")]),e._v(" Do hexadecimal encoding processing")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-13"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/nodelistWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-12"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-14"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("h3",{attrs:{id:"metrics-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-keys"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystem 1 account addresses.")]),e._v(" "),a("h4",{attrs:{id:"request-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-14"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/keys\n")])])]),a("h4",{attrs:{id:"response-example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-15"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of blocks.")]),e._v(" "),a("h4",{attrs:{id:"request-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-15"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/blocks\n")])])]),a("h4",{attrs:{id:"response-example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-16"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-transactions"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the total number of transactions.")]),e._v(" "),a("h4",{attrs:{id:"request-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-16"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/transactions\n")])])]),a("h4",{attrs:{id:"response-example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-17"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-ecosystems"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystems.")]),e._v(" "),a("h4",{attrs:{id:"request-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-17"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/ecosystems\n")])])]),a("h4",{attrs:{id:"response-example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-18"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-honornodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-honornodes"}},[e._v("#")]),e._v(" metrics/honornodes")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of honor nodes.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/honornodes\n")])])]),a("h4",{attrs:{id:"response-example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-19"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h2",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("h3",{attrs:{id:"ecosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[e._v("#")]),e._v(" ecosystemname")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the name of the ecosystem by its identifier.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemname?id=1\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-20"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "ecosystem_name": "platform_ecosystem"\n}\n')])])]),a("h4",{attrs:{id:"error-response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-13"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparams-appid"}},[e._v("appparams/{appid}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of application parameters in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-18"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparams/{appid}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[appid]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID; if not specified, the current ecosystem parameter will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of received parameters.")]),e._v(" "),a("p",[e._v("You can specify a comma-separated list of parameter names, for example:"),a("code",[e._v("/api/v2/appparams/1?names=name,mypar")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-13"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")]),e._v(", the name of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("value")]),e._v(", the value of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("conditions")]),e._v(", change the permissions of the parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-21"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "mypar",\n "value": "My value",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-14"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the parameter "),a("strong",[e._v("{appid}")]),e._v(" of the application "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem\nThe information related to the")]),e._v(" "),a("h4",{attrs:{id:"request-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-19"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparam/{appid}/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("appid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID (optional parameter).")]),e._v(" "),a("p",[e._v("Returns the current ecosystem by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-14"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-22"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "10",\n "name": "par",\n "value": "My value",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-15"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM, E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[e._v("#")]),e._v(" ecosystemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystem parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-20"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparams/[?ecosystem=... &names=...]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID. if not specified, the current ecosystem ID will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("List of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example: "),a("code",[e._v("/api/v2/ecosystemparams/?names=name,currency,logo")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-15"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter value.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change permissions for parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-23"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "currency",\n "value": "MY",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-16"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the parameter "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-21"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparam/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The default is to return the current ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-16"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-24"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "name": "currency",\n "value": "MYCUR",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-17"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of data tables for the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-22"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 100, maximum 1000.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/tables?limit=... &offset=...\n")])])]),a("h4",{attrs:{id:"response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-17"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("The total number of entries in the data table.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name without prefix.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of entries in the data table.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-25"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "100"\n "list": [{ \n "name": "accounts",\n "count": "10",\n }, \n { \n "name": "citizens",\n "count": "5",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"table-name"}},[e._v("table/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the current ecosystem request data table.")]),e._v(" "),a("h4",{attrs:{id:"request-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-23"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[name]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/table/{table_name}\n")])])]),a("p",[e._v("Returns the following field information.")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("insert")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to add new entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("new_column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Add field permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("update")])]),e._v(" "),a("blockquote",[a("p",[e._v("Change entry permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("columns")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of field-related information.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("type")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field data type.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("perm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permissions for the field value.")])])])])])]),e._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/\nReturns a list of the specified data table entries in the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-24"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/list/mytable?columns=name\n")])])]),a("h4",{attrs:{id:"response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-18"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-26"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "John",\n }, \n { \n "id": "2",\n "name": "Mark",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the "),a("em",[e._v("sections")]),e._v(" of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("h4",{attrs:{id:"request-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-25"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[lang]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("This field specifies the multilingual resource code or localization, e.g., "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g., "),a("em",[e._v("en-US")]),e._v(", then the multilingual resource group in\nSearch in "),a("em",[e._v("en")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/sections\n")])])]),a("h4",{attrs:{id:"response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-19"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("sections")]),e._v(" Total number of table entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains information about all columns in the actions table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-27"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "2"\n "list": [{\n "id": "1",\n "title": "Development",\n "urlpage": "develop",\n ...\n },\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-18"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-id-columns-span"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns-span"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]< /span>")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the entry for the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-26"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/row/mytable/10?columns=name\n")])])]),a("h4",{attrs:{id:"response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-20"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of received column values")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-28"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "values": {\n "id": "10",\n "name": "John",\n }\n} \n')])])]),a("h4",{attrs:{id:"error-response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-19"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-column-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-column-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-colorn-id"}},[e._v("row/{name}/{column}/{id} ")])]),e._v(" "),a("p",[e._v("[Authorization] (#Authorization)")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-27"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Name *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[e._v("*colorn *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data list name.")])])]),e._v(" "),a("li",[a("p",[e._v("*ID *")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[e._v("\\ [columns ] * [omitempty] (#omitempty)")]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request lists is separated by commas. If it is not specified, all columns will be returned. In all cases, the ID column will be returned.")])])])])])]),e._v(" "),a("p",[a("code",[e._v("`default GET /API/V2/ROW/MyTable/name/John? Columns = name")]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-21"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Value *")]),e._v(" "),a("blockquote",[a("p",[e._v("Array of receiving column values\nForecast")]),e._v(" "),a("ul",[a("li",[e._v("*ID *")])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Strip ID.")])])]),e._v(" "),a("ul",[a("li",[e._v("-The sequence of the request column.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-29"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("p",[a("code",[e._v('`default 200 (OK) Content-type: Application/JSON {{ "Values": { "ID": "10", "name": "John", } }')]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"error-response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-20"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[e._v("#")]),e._v(" systemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of platform parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-28"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/systemparams/[?names=...]\n")])])]),a("ul",[a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("*\\[names\\]* [Omitempty](#omitempty)\n\nA list of request parameters, separated by commas. For example\n `/api/v2/systemparams/?names=max_columns,max_indexes`.\n")])])]),a("h4",{attrs:{id:"response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-22"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter values.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-30"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "max_columns",\n "value": "100",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n { \n "name": "max_indexes",\n "value": "1",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-21"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the change record for the entry in the specified data table in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-29"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/history?name=contracts&id=5\n")])])]),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("p",[e._v("Data Table Name.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("h4",{attrs:{id:"response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-23"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("list")])])]),e._v(" "),a("p",[e._v("Each element of the array contains a change record for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"response-example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-31"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [\n {\n "name": "default_page",\n "value": "P(class, Default Ecosystem Page)"\n },\n {\n "menu": "default_menu"\n }\n ]\n}\n')])])]),a("h3",{attrs:{id:"interface-page-menu-snippet-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current ecosystem in the specified data table (pages, menu or snippet) "),a("em",[e._v("name")]),e._v("\nThe entry for the field.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/interface/page/default_page\n/api/v2/interface/menu/default_menu\n/api/v2/interface/snippet/welcome\n")])])]),a("h4",{attrs:{id:"request-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-30"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the name of the entry in the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-24"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("other")])]),e._v(" "),a("blockquote",[a("p",[e._v("Other columns of the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-32"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "1",\n "name": "default_page",\n "value": "P(Page content)",\n "default_menu": "default_menu",\n "validate_count": 1\n} \n')])])]),a("h4",{attrs:{id:"error-response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-22"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_QUERY")]),e._v(", "),a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of contracts in the current ecosystem, with the ability to set offsets and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-31"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contracts\n")])])]),a("h4",{attrs:{id:"response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-25"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract contents.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("wallet_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The account address to which the contract is tied.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("address")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("ecosystem_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("app_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The application ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the contract.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("token_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ID of the ecosystem where the pass is used to pay the contract fee.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-33"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "MainCondition",\n "token_id": "1", \n "wallet_id": "0", \n "value": "contract MainCondition {\nconditions {\n if(EcosysParam(`founder_account`)! =$key_id)\n {\n warning `Sorry, you dont have access to this action.`\n }\n }\n}",\n"address": "0000-0000-0000-0000-0000-0000",\n"conditions": "ContractConditions(`MainCondition`)" \n }, \n...\n ]\n} \n')])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified contract. The default is to query the contract in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-32"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contract/mycontract\n")])])]),a("h4",{attrs:{id:"response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-26"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID in VM.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("state")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the contract.")])])]),e._v(" "),a("li",[a("p",[e._v("*walletid")]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account to which the contract is tied.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tokenid")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the pass that is used to pay for the contract.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tableid")])]),e._v(" "),a("p",[e._v("ID of the entry in the > "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("fields")])])]),e._v(" "),a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("> The array contains structural information for each parameter of the contract **data** section.\n>\n> > - *name*\n> >\n> > > Parameter name.\n> >\n> > - \n> >\n> > *type*\n> >\n> > Parameter type.\n> >\n> > - *optional*\n> >\n> > > Parameter options, \\`true\\` means optional parameters, \\`false\\` means mandatory parameters.\n")])])]),a("h4",{attrs:{id:"response-example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-34"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "fields" : [\n {"name": "amount", "type": "int", "optional": false},\n {"name": "name", "type": "string", "optional": true}\n ],\n "id": 150,\n "name":"@1mycontract",\n "tableid" : 10,\n} \n')])])]),a("h4",{attrs:{id:"error-response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-23"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_CONTRACT")])]),e._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[e._v("#")]),e._v(" sendTX")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReceives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an Error Response.")]),e._v(" "),a("h4",{attrs:{id:"request-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-33"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tx_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction content, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/sendTx\n\nHeaders:\nContent-Type: multipart/form-data\n\nParameters:\ntx1 - Transaction 1\ntxN - Trading N\n")])])]),a("h4",{attrs:{id:"response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-27"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hashes")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash arrays.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("tx1")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading 1 hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("txN")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading N's hash.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-35"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hashes": {\n "tx1": "67afbc435634..... ",\n "txN": "89ce4498eaf7..... ",\n}\n')])])]),a("h4",{attrs:{id:"error-response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-24"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_LIMITTXSIZE")]),e._v(","),a("em",[e._v("E_BANNED")])]),e._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[e._v("#")]),e._v(" txstatus")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReturns the block ID and error message for the specified transaction hash. If the return values for the block ID and error text message are null, then the transaction is not yet contained in the block.")]),e._v(" "),a("h4",{attrs:{id:"request-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-34"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON list of transaction hashes.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/txstatus/\n")])])]),a("h4",{attrs:{id:"response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-28"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("blockid")])])]),e._v(" "),a("p",[e._v("If the transaction execution succeeds, the block ID is returned; if the transaction execution fails, the")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")]),e._v(" for [0]{.title-ref}.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("result")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("errmsg")])])]),e._v(" "),a("p",[e._v("Returns an error text message if the execution of the transaction fails.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-36"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n {\n "hash1": {\n "blockid": "3123",\n "result": "",\n },\n "hash2": {\n "blockid": "3124",\n "result": "",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-25"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG, E_HASHNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. Also returns the contract name and its associated parameters, if optional parameters are specified.")]),e._v(" "),a("h4",{attrs:{id:"request-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-35"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1\n")])])]),a("h4",{attrs:{id:"response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-29"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("blockid")])]),e._v(" "),a("blockquote",[a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("confirm")])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("data")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-37"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "blockid": "9",\n "confirm": 11,\n "data": {\n "block": "9",\n "contract": "@1NewContract",\n "params": {\n "ApplicationId": 1,\n "Conditions": "true",\n "Value": "contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t\\t}"\n }\n }\n}\n')])])]),a("h4",{attrs:{id:"error-response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-26"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[e._v("#")]),e._v(" txinfoMultiple")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns the transaction-related information for the specified hash.")]),e._v(" "),a("h4",{attrs:{id:"request-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-36"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hashes")])])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of transaction hashes.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('data: {"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfoMultiple\n")])])]),a("h4",{attrs:{id:"response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-30"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")])])])]),e._v(" "),a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[a("em",[e._v("confirm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-38"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n { \n "hash1": {\n "blockid": "3123",\n "confirm": "5",\n },\n "hash2": {\n "blockid": "3124",\n "confirm": "3",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-27"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"request-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-37"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, then search in the first ecosystem page by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/page/validators_count/@2page_name\n")])])]),a("h4",{attrs:{id:"response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-31"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("validate_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the number of nodes to be validated for the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-39"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-28"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a tree of code JSON objects for the specified page or menu name, which is the result of processing by the template engine.")]),e._v(" "),a("h4",{attrs:{id:"request-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-38"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name or menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current ecosystem page or menu by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/page/default\n")])])]),a("h4",{attrs:{id:"response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-32"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("menu")]),e._v(" || "),a("em",[e._v("title")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The name of the menu to which the page belongs when requesting it.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("menutree")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The page's menu JSON object tree when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("title")]),e._v("--head for the menu "),a("em",[e._v("content/menu/...")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/menu/...")]),e._v(" Menu title when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page or menu JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-40"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-29"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v('Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.\nRequest """""""')]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current eco-page by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-33"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/source/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree of the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-41"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-30"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page cannot be found.")]),e._v(" "),a("p",[e._v("This request does not require login authorization. To receive the correct hash when making requests to other nodes, you must also pass\n"),a("em",[e._v("ecosystem,keyID,roleID,isMobile")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-39"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/hash/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the page with the ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("keyID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roleID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isMobile")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter identification of the mobile platform.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-34"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-42"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n} \n')])])]),a("h4",{attrs:{id:"error-response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-31"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")])]),e._v(" "),a("h3",{attrs:{id:"content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content"}},[e._v("#")]),e._v(" content")]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" is specified as\n"),a("code",[e._v("true or 1")]),e._v(", then this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-40"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("template")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page code.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[source]")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("true or 1")]),e._v(" is specified, the JSON object tree does not perform any functions and receives data.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content\n")])])]),a("h4",{attrs:{id:"response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-35"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-43"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-32"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[e._v("#")]),e._v(" maxblockid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the highest block ID on the current node.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-41"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/maxblockid\n")])])]),a("h4",{attrs:{id:"response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-36"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("max_block_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The highest block ID on the current node.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-44"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "max_block_id" : 341,\n}\n')])])]),a("h4",{attrs:{id:"error-response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-33"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"block-id"}},[e._v("block/{id}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified block ID.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-42"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/block/32\n")])])]),a("h4",{attrs:{id:"response-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-37"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("time")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tx_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of transactions in the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("rollbacks_hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("node_position")])]),e._v(" "),a("blockquote",[a("p",[e._v("The position of the block in the honor node list.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-45"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek=",\n "key_id": -118432674655542910,\n "time": 1551145365,\n "tx_count": 3,\n "rollbacks_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",\n "node_position": 0,\n} \n')])])]),a("h4",{attrs:{id:"error-response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-34"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the avatar of the user in the "),a("em",[e._v("member")]),e._v(" table (available without login).")]),e._v(" "),a("h4",{attrs:{id:"request-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-43"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("member")])]),e._v(" "),a("blockquote",[a("p",[e._v("The user's account address. (xxxx-... -xxxx)")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/avatar/1/1234-2134-... -4321\n")])])]),a("h4",{attrs:{id:"response-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-38"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The request header "),a("em",[e._v("Content-Type")]),e._v(" is the image type and the image data is returned in the response body.")]),e._v(" "),a("h4",{attrs:{id:"response-example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-46"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("200 (OK)\nContent-Type: image/png \n")])])]),a("h4",{attrs:{id:"error-response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-35"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")]),e._v(" "),a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the host address and port of centrifugo.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-44"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/config/centrifugo\n")])])]),a("h4",{attrs:{id:"response-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-39"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Response result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-36"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[e._v("#")]),e._v(" updnotificator")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/")]),e._v(" "),a("p",[e._v("(Discarded)")]),e._v(" "),a("p",[e._v("Sends all messages that have not yet been sent to the centrifugo notification service. Sends only messages for the specified ecosystem and members.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-45"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Member's account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/updnotificator\n")])])]),a("h4",{attrs:{id:"response-example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-47"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "result": true\n} \n')])])]),a("h3",{attrs:{id:"special-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-instructions"}},[e._v("#")]),e._v(" Special instructions")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("If the field has an omitempty attribute, it means that the field is an optional parameter")]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("If the interface with Authorization tag, that this interface requires login authorization, add Authorization to the request header, example.")]),e._v(" "),a("p",[e._v('key = Authorization\nvalue = "Bearer + '),a("a",{attrs:{href:"#login"}},[e._v("login token")]),e._v('"')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Authorization Bearer eyJhbGciOiJI..... kBZgGIlPhfXNZJ73RiZtM\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[140],{519:function(e,t,a){"use strict";a.r(t);var s=a(51),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[e._v("#")]),e._v(" RESTful API v2")]),e._v(" "),a("p",[e._v("Weaver\nAll functions provided, including authentication, ecosystem data reception, error handling, database table manipulation, page and contract execution are available through\nIBAX Blockchain Platform's REST API is available.")]),e._v(" "),a("p",[e._v("By using the REST API, developers can access any of the platform's features without using Weaver.")]),e._v(" "),a("p",[e._v("API command calls are executed by addressing "),a("code",[e._v("/api/v2/command/[param]")]),e._v(", where "),a("code",[e._v("command")]),e._v("\nis the command name and "),a("code",[e._v("param")]),e._v(" is the additional parameter. The request parameters must be specified using the\n"),a("code",[e._v("Content-Type: x-www-form-urlencoded")]),e._v("\nThe format is sent. The server response result is in JSON format.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-response-handling"}},[e._v("Error response handling")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-list"}},[e._v("Error list")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#request-type"}},[e._v("Request Type")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#authentication-interface"}},[e._v("Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[e._v("getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#login"}},[e._v("login")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#server-side-command-interface"}},[e._v("Server Side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#version"}},[e._v("version")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-request-function-interface"}},[e._v("Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#balance"}},[e._v("balance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blocks"}},[e._v("blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#keyinfo"}},[e._v("keyinfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#wallethistory"}},[e._v("walletHistory")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#get-metrics-interface"}},[e._v("Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-honornodes"}},[e._v("metrics/honornodes")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-interface"}},[e._v("Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ecosystemname"}},[e._v("ecosystemname")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[e._v("appparams/{appID}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparams"}},[e._v("ecosystemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-name"}},[e._v("table/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-column-id"}},[e._v("row/{name}/{column}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#systemparams"}},[e._v("systemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-function-interface"}},[e._v("Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sendtx"}},[e._v("sendTX")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[e._v("txstatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[e._v("txinfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content"}},[e._v("content")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[e._v("maxblockid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[e._v("block/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[e._v("updnotificator")])])])])]),e._v(" "),a("h2",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Return status in case of successful request execution\n"),a("code",[e._v("200")]),e._v(". If an error occurs, in addition to the error status, a JSON object with the following fields will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("error")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error identifier.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("msg")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error text message.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")])]),e._v(" "),a("blockquote",[a("p",[e._v("An array of additional parameters that can be placed in the error message.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('400 (Bad request)\nContent-Type: application/json\n{\n "err": "E_INVALIDWALLET",\n "msg": "Wallet 1234-5678-9012-3444-3488 is not valid",\n "params": ["1234-5678-9012-3444-3488"]\n}\n')])])]),a("h3",{attrs:{id:"error-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-list"}},[e._v("#")]),e._v(" Error list")]),e._v(" "),a("blockquote",[a("p",[e._v("E_CONTRACT")])]),e._v(" "),a("p",[e._v("No "),a("code",[e._v("%s")]),e._v(" contract exists")]),e._v(" "),a("blockquote",[a("p",[e._v("E_DBNIL")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database is empty\n")])])]),a("blockquote",[a("p",[e._v("E_DELETEDKEY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address is frozen\n")])])]),a("blockquote",[a("p",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Ecosystem `%d` does not exist\n")])])]),a("blockquote",[a("p",[e._v("E_EMPTYPUBLIC")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Invalid account public key\n")])])]),a("blockquote",[a("p",[e._v("E_KEYNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address not found\n")])])]),a("blockquote",[a("p",[e._v("E_HASHWRONG")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect hash\n")])])]),a("blockquote",[a("p",[e._v("E_HASHNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Hash not found\n")])])]),a("blockquote",[a("p",[e._v("E_HEAVYPAGE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Too much page loading\n")])])]),a("blockquote",[a("p",[e._v("E_INVALIDWALLET")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Wallet address `%s` Invalid\n")])])]),a("blockquote",[a("p",[e._v("E_LIMITTXSIZE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The transaction size has exceeded the limit\n")])])]),a("blockquote",[a("p",[e._v("E_NOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Page or menu content not found\n")])])]),a("blockquote",[a("p",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Parameters not found\n")])])]),a("blockquote",[a("p",[e._v("E_PERMISSION")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("No permission\n")])])]),a("blockquote",[a("p",[e._v("E_QUERY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database query error\n")])])]),a("blockquote",[a("p",[e._v("E_RECOVERED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("API panic error occurs.\n\nIf a panic error occurs, an error is returned.\n\nThis error means that you have encountered a bug that needs to be found and fixed.\n")])])]),a("blockquote",[a("p",[e._v("E_SERVER")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Server error.\n\nReturn if there is an error in the golang library function. The \\*msg\\* field contains the error text message.\n\n**E_SERVER** may appear in response to any command Error. \nIf it occurs due to an incorrect input parameter, it can be changed to a related error. In another case, this error reports an invalid operation or incorrect system configuration, which requires a more detailed investigation report.\n")])])]),a("blockquote",[a("p",[e._v("E_SIGNATURE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect signature\n")])])]),a("blockquote",[a("p",[e._v("E_STATELOGIN")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("`%s` is not a member of the ecosystem `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Data sheet `%s` not found\n")])])]),a("blockquote",[a("p",[e._v("E_TOKENEXPIRED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The session has expired `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_UNAUTHORIZED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unauthorized.\n\nIn case no login is performed or the session expires, \nexcept for `getuid, login` Any command other than **E_UNAUTHORIZED** returns an error.\n")])])]),a("blockquote",[a("p",[e._v("E_UNKNOWNUID")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unknown UID\n")])])]),a("blockquote",[a("p",[e._v("E_UPDATING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Nodes are updating the blockchain\n")])])]),a("blockquote",[a("p",[e._v("E_STOPPING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Node is stopped\n")])])]),a("blockquote",[a("p",[e._v("E_NOTIMPLEMENTED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Not yet achieved\n")])])]),a("blockquote",[a("p",[e._v("E_BANNED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("This account address is prohibited in `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_CHECKROLE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Access denied\n\nCLB Unavailable Interface\n")])])]),a("hr"),e._v(" "),a("blockquote",[a("p",[e._v("Interface requests for which the CLB node is not available.")])]),e._v(" "),a("ul",[a("li",[e._v("metrics")]),e._v(" "),a("li",[e._v("txinfo")]),e._v(" "),a("li",[e._v("txinfoMultiple")]),e._v(" "),a("li",[e._v("appparam")]),e._v(" "),a("li",[e._v("appparams")]),e._v(" "),a("li",[e._v("appcontent")]),e._v(" "),a("li",[e._v("history")]),e._v(" "),a("li",[e._v("balance")]),e._v(" "),a("li",[e._v("block")]),e._v(" "),a("li",[e._v("maxblockid")]),e._v(" "),a("li",[e._v("blocks")]),e._v(" "),a("li",[e._v("detailed_blocks")]),e._v(" "),a("li",[e._v("ecosystemparams")]),e._v(" "),a("li",[e._v("systemparams")]),e._v(" "),a("li",[e._v("ecosystems")]),e._v(" "),a("li",[e._v("ecosystemparam")]),e._v(" "),a("li",[e._v("ecosystemname")]),e._v(" "),a("li",[e._v("walletHistory")]),e._v(" "),a("li",[e._v("tx_record")])]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request Type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("application/x-www-form-urlencoded")])]),e._v(" "),a("h2",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://jwt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("JWT token"),a("OutboundLink")],1),e._v("\nUsed for authentication. The JWT token must be placed in each request header after it is received: "),a("code",[e._v("Authorization: Bearer TOKEN_HERE")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[e._v("#")]),e._v(" getuid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ returns a unique value, signs it with the private key, and then uses\nThe "),a("a",{attrs:{href:"#login"}},[e._v("login")]),e._v(" command sends it back to the server.")]),e._v(" "),a("p",[e._v("Generate a temporary JWT token that needs to be passed to "),a("strong",[e._v("Authorization")]),e._v(" when calling "),a("strong",[e._v("login")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/getuid\n")])])]),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("uid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Signature number.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("The temporary token passed during login.")]),e._v(" "),a("p",[e._v("The life cycle of a temporary token is 5 seconds.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("cryptoer")])]),e._v(" "),a("blockquote",[a("p",[e._v("Elliptic curve algorithm.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hasher")])]),e._v(" "),a("blockquote",[a("p",[e._v("hash algorithm.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-1"}},[e._v("#")]),e._v(" Response Example 1")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "uid": "4999317241855959593",\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....... .I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"\n "network_id": "4717243765193692211"\n}\n')])])]),a("p",[e._v("In the case that no authorization is required (the request contains "),a("strong",[e._v("Authorization")]),e._v("), the following message will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("expire")])]),e._v(" "),a("blockquote",[a("p",[e._v("Expiration time.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-2"}},[e._v("#")]),e._v(" Response Example 2")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "expire": "2159h59m49.4310543s",\n "ecosystem_id": "1",\n "key_id": "-654321",\n "address": "1196-...... -3496",\n "network_id": "1"\n}\n')])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[e._v("#")]),e._v(" login")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/ User authentication.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("getuid")]),e._v(" should be called first\ncommand in order to receive the unique value and sign it. getuid's temporary JWT token needs to be passed in the request header.")]),e._v(" "),a("p",[e._v("If the request is successful, the token received in the response is contained in "),a("strong",[e._v("Authorization")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/login\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")]),e._v(" "),a("p",[e._v("If not specified, defaults to the first ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[expire]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Lifecycle of the JWT token, in seconds, default is 28800.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[pubkey]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal account public key.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[key_id]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("signature")])]),e._v(" "),a("blockquote",[a("p",[e._v("The uid signature received via getuid.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("JWT token.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account Address ID")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("account")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("notify_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Notification ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isnode")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isowner")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the creator of the ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("clb")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the logged-in ecosystem is CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role list: "),a("code",[e._v("[{Role ID,Role Name}]")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-3"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.....30l665h3v7lH85rs5jgk0",\n "ecosystem_id": "1",\n "key_id": "-54321",\n "account": "1285-... -7743-4282",\n "notify_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..... _JTFfheD0K4CfMbvVNpOJVMNDPx25zIDGir9g3ZZM0w",\n "timestamp": "1451309883",\n "roles": [\n {\n "role_id": 1,\n "role_name": "Developer"\n }\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")])]),e._v(" "),a("h2",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" Server Side command interface")]),e._v(" "),a("h3",{attrs:{id:"version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[e._v("#")]),e._v(" version")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current server version.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/version\n")])])]),a("h4",{attrs:{id:"response-example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-4"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n"1.3.0 branch.main commit.790..757 time.2021-08-23-08:20:19(UTC)"\n')])])]),a("h2",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[e._v("#")]),e._v(" balance")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Requests the balance of the account address in the current ecosystem.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/balance/{wallet}\n")])])]),a("ul",[a("li",[a("p",[e._v("*wallet")]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(". Look up the address in the ecosystem where the user is currently logged in.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default eco1")]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem id.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("amount")])]),e._v(" "),a("blockquote",[a("p",[e._v("The minimum unit of contract account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("money")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("utxo")])]),e._v(" "),a("blockquote",[a("p",[e._v("UTXO account balance.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-5"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "amount": "877450000000000",\n "money": "877.45",\n "total": "877450000000000",\n "utxo": "0"\n} \n')])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[e._v("#")]),e._v(" blocks")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing additional information related to the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-5"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET \n/api/v2/blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information for each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("contract_name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("params")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of contract parameters.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("For the first block, it is the account address of the first block that signed the transaction.")])]),e._v(" "),a("blockquote",[a("p",[e._v("For all other blocks, is the address of the account that signed the transaction.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-6"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "1":\n [{"hash": "O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"detailed-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detailed-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-6"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/detailed_blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("blockhead")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block header contains the following fields.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("block_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block height.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for the block.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("node_position")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("The location of the node that generated the block in the honor node list.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("version")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block structure version.")])])])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block Hashing.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("node_position")])])]),e._v(" "),a("p",[e._v("the location of the node that generated the block in the honor node list.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("time")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("tx_count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of transactions within the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("size")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block size.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("rollback_hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("merkle_root")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block deals with the Merkle tree.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bin_data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("trading")])])]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information about each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trading hash.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("contract_name")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract name.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("params")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract parameters.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for this transaction.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("type")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction type.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("size")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trade Size.")])])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-7"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"1":\n {"header":\n {"block_id":1,\n "time":1551069320,\n "ecosystem_id":0,\n "key_id":-118432674655542910,\n "node_position":0,\n "version":1},\n "hash":"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI=",\n "ecosystem_id":0,\n "node_position":0,\n "key_id":-118432674655542910,\n "time":1551069320,\n "tx_count":1,\n "size": "1.69KiB",\n "rollbacks_hash":"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k=",\n "mrkl_root":"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg==",\n "bin_data":null,\n "sys_update":false,\n "gen_block":false,\n "stop_count":0,\n "transactions":[\n {\n "hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":0,\n "time":0,\n "type":0,\n "size": "300.00B"\n }\n ]}\n}\n')])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystems with roles registered to the specified address.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-7"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{key_id}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("The request is queried in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-6"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of roles with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-8"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"data-id-data-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-id-data-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matching the data in the binary watch, field, and records, this request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-8"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{id}/data/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-7"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-9"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\n{\n "name": "NFT Miner",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "data": [\n {\n "Type": "contracts",\n "Name": "NewNFTMiner",\n },\n ...\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matches the data in the specified table, field, and records, the request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-9"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{table}/id/{column}/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("table")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name, only one")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-8"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-10"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\nContent-Disposition: attachment\n\nSetVar(this_page, @1voting_list).(this_table, @1votings)\nInclude(@1pager_header)\n\nSetTitle("$@1voting_list$")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: "$@1votings_list_desc$"))\nAddToolButton(Title: $@1templates_list$, Page: @1voting_templates_list, Icon: icon-pin)\nAddToolButton(Title: $@1create$, Page: @1voting_create, Icon: icon-plus).Popup(60, $@1new_voting$)\n\n')])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo-2"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to a list of ecosystems, which contains the role of registered the specified address.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-10"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{address}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, you can specify "),a("code",[e._v("int64, uint64, xxxx -...-xxxx")]),e._v(".")]),e._v(" "),a("p",[e._v("This request is query in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-9"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecological system name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("Activities with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-11"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"wallethistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallethistory"}},[e._v("#")]),e._v(" walletHistory")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the current account transaction history record, find it according to the ID of the ID")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-11"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("searchType")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find Type (Income: Turn into Outcom: Turn out all: All, default).")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[page]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find the number of pages, the first page default, min: 1")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 20 articles. min: 1, MAX: 500")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/walletHistory?searchType=all&page=1&limit=10\n")])])]),a("h4",{attrs:{id:"response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-10"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("page")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of current page.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("limit")])]),e._v(" "),a("blockquote",[a("p",[e._v("Currently find the number of bars.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("sender_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Send key_id")])])]),e._v(" "),a("li",[a("em",[e._v("sender_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Send the account address")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept key_id")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept the account address")])])]),e._v(" "),a("li",[a("em",[e._v("amount")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])]),e._v(" "),a("li",[a("em",[e._v("comment")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading remarks")])])]),e._v(" "),a("li",[a("em",[e._v("block_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Block height")])])]),e._v(" "),a("li",[a("em",[e._v("tx_hash")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading hash")])])]),e._v(" "),a("li",[a("em",[e._v("created_at")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction creation time, millisecond time stamp")])])]),e._v(" "),a("li",[a("em",[e._v("money")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-12"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "page": 1,\n "limit": 10,\n "total": 617,\n "list": [\n {\n "id": 650,\n "sender_id": 666081971617879...,\n "sender_add": "0666-0819-7161-xxxx-5186",\n "recipient_id": 666081971617879...,\n "recipient_add": "0666-0819-7161-xxxx-5186",\n "amount": "242250000",\n "comment": "taxes for execution of @1Export contract",\n "block_id": 209,\n "tx_hash": "a213bc767d710a223856d83515d53518075b56fb9e9c063bce8a256c20ff0775",\n "created_at": 1666001092090,\n "money": "0.00024225"\n }\n ...\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"listwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#listwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-12"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/listWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-11"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-13"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"nodelistwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nodelistwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the specified data table. You can specify columns to be returned. The type in the data table is "),a("strong",[e._v("BYTEA")]),e._v(" Do hexadecimal encoding processing")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-13"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/nodelistWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-12"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-14"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("h3",{attrs:{id:"metrics-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-keys"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystem 1 account addresses.")]),e._v(" "),a("h4",{attrs:{id:"request-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-14"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/keys\n")])])]),a("h4",{attrs:{id:"response-example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-15"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of blocks.")]),e._v(" "),a("h4",{attrs:{id:"request-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-15"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/blocks\n")])])]),a("h4",{attrs:{id:"response-example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-16"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-transactions"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the total number of transactions.")]),e._v(" "),a("h4",{attrs:{id:"request-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-16"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/transactions\n")])])]),a("h4",{attrs:{id:"response-example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-17"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-ecosystems"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystems.")]),e._v(" "),a("h4",{attrs:{id:"request-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-17"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/ecosystems\n")])])]),a("h4",{attrs:{id:"response-example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-18"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-honornodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-honornodes"}},[e._v("#")]),e._v(" metrics/honornodes")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of honor nodes.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/honornodes\n")])])]),a("h4",{attrs:{id:"response-example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-19"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h2",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("h3",{attrs:{id:"ecosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[e._v("#")]),e._v(" ecosystemname")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the name of the ecosystem by its identifier.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemname?id=1\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-20"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "ecosystem_name": "platform_ecosystem"\n}\n')])])]),a("h4",{attrs:{id:"error-response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-13"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparams-appid"}},[e._v("appparams/{appid}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of application parameters in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-18"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparams/{appid}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[appid]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID; if not specified, the current ecosystem parameter will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of received parameters.")]),e._v(" "),a("p",[e._v("You can specify a comma-separated list of parameter names, for example:"),a("code",[e._v("/api/v2/appparams/1?names=name,mypar")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-13"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")]),e._v(", the name of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("value")]),e._v(", the value of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("conditions")]),e._v(", change the permissions of the parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-21"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "mypar",\n "value": "My value",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-14"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the parameter "),a("strong",[e._v("{appid}")]),e._v(" of the application "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem\nThe information related to the")]),e._v(" "),a("h4",{attrs:{id:"request-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-19"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparam/{appid}/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("appid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID (optional parameter).")]),e._v(" "),a("p",[e._v("Returns the current ecosystem by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-14"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-22"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "10",\n "name": "par",\n "value": "My value",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-15"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM, E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[e._v("#")]),e._v(" ecosystemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystem parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-20"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparams/[?ecosystem=... &names=...]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID. if not specified, the current ecosystem ID will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("List of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example: "),a("code",[e._v("/api/v2/ecosystemparams/?names=name,currency,logo")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-15"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter value.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change permissions for parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-23"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "currency",\n "value": "MY",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-16"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the parameter "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-21"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparam/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The default is to return the current ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-16"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-24"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "name": "currency",\n "value": "MYCUR",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-17"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of data tables for the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-22"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 100, maximum 1000.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/tables?limit=... &offset=...\n")])])]),a("h4",{attrs:{id:"response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-17"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("The total number of entries in the data table.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name without prefix.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of entries in the data table.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-25"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "100"\n "list": [{ \n "name": "accounts",\n "count": "10",\n }, \n { \n "name": "citizens",\n "count": "5",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"table-name"}},[e._v("table/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the current ecosystem request data table.")]),e._v(" "),a("h4",{attrs:{id:"request-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-23"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[name]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/table/{table_name}\n")])])]),a("p",[e._v("Returns the following field information.")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("insert")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to add new entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("new_column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Add field permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("update")])]),e._v(" "),a("blockquote",[a("p",[e._v("Change entry permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("columns")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of field-related information.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("type")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field data type.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("perm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permissions for the field value.")])])])])])]),e._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/\nReturns a list of the specified data table entries in the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-24"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/list/mytable?columns=name\n")])])]),a("h4",{attrs:{id:"response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-18"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-26"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "John",\n }, \n { \n "id": "2",\n "name": "Mark",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the "),a("em",[e._v("sections")]),e._v(" of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("h4",{attrs:{id:"request-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-25"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[lang]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("This field specifies the multilingual resource code or localization, e.g., "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g., "),a("em",[e._v("en-US")]),e._v(", then the multilingual resource group in\nSearch in "),a("em",[e._v("en")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/sections\n")])])]),a("h4",{attrs:{id:"response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-19"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("sections")]),e._v(" Total number of table entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains information about all columns in the actions table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-27"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "2"\n "list": [{\n "id": "1",\n "title": "Development",\n "urlpage": "develop",\n ...\n },\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-18"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-id-columns-span"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns-span"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]< /span>")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the entry for the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-26"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/row/mytable/10?columns=name\n")])])]),a("h4",{attrs:{id:"response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-20"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of received column values")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-28"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "values": {\n "id": "10",\n "name": "John",\n }\n} \n')])])]),a("h4",{attrs:{id:"error-response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-19"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-column-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-column-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-colorn-id"}},[e._v("row/{name}/{column}/{id} ")])]),e._v(" "),a("p",[e._v("[Authorization] (#Authorization)")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-27"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Name *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[e._v("*colorn *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data list name.")])])]),e._v(" "),a("li",[a("p",[e._v("*ID *")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[e._v("\\ [columns ] * [omitempty] (#omitempty)")]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request lists is separated by commas. If it is not specified, all columns will be returned. In all cases, the ID column will be returned.")])])])])])]),e._v(" "),a("p",[a("code",[e._v("`default GET /API/V2/ROW/MyTable/name/John? Columns = name")]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-21"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Value *")]),e._v(" "),a("blockquote",[a("p",[e._v("Array of receiving column values\nForecast")]),e._v(" "),a("ul",[a("li",[e._v("*ID *")])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Strip ID.")])])]),e._v(" "),a("ul",[a("li",[e._v("-The sequence of the request column.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-29"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("p",[a("code",[e._v('`default 200 (OK) Content-type: Application/JSON {{ "Values": { "ID": "10", "name": "John", } }')]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"error-response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-20"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[e._v("#")]),e._v(" systemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of platform parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-28"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/systemparams/[?names=...]\n")])])]),a("ul",[a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("*\\[names\\]* [Omitempty](#omitempty)\n\nA list of request parameters, separated by commas. For example\n `/api/v2/systemparams/?names=max_columns,max_indexes`.\n")])])]),a("h4",{attrs:{id:"response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-22"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter values.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-30"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "max_columns",\n "value": "100",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n { \n "name": "max_indexes",\n "value": "1",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-21"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the change record for the entry in the specified data table in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-29"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/history?name=contracts&id=5\n")])])]),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("p",[e._v("Data Table Name.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("h4",{attrs:{id:"response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-23"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("list")])])]),e._v(" "),a("p",[e._v("Each element of the array contains a change record for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"response-example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-31"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [\n {\n "name": "default_page",\n "value": "P(class, Default Ecosystem Page)"\n },\n {\n "menu": "default_menu"\n }\n ]\n}\n')])])]),a("h3",{attrs:{id:"interface-page-menu-snippet-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current ecosystem in the specified data table (pages, menu or snippet) "),a("em",[e._v("name")]),e._v("\nThe entry for the field.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/interface/page/default_page\n/api/v2/interface/menu/default_menu\n/api/v2/interface/snippet/welcome\n")])])]),a("h4",{attrs:{id:"request-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-30"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the name of the entry in the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-24"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("other")])]),e._v(" "),a("blockquote",[a("p",[e._v("Other columns of the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-32"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "1",\n "name": "default_page",\n "value": "P(Page content)",\n "default_menu": "default_menu",\n "validate_count": 1\n} \n')])])]),a("h4",{attrs:{id:"error-response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-22"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_QUERY")]),e._v(", "),a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of contracts in the current ecosystem, with the ability to set offsets and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-31"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contracts\n")])])]),a("h4",{attrs:{id:"response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-25"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract contents.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("wallet_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The account address to which the contract is tied.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("address")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("ecosystem_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("app_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The application ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the contract.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("token_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ID of the ecosystem where the pass is used to pay the contract fee.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-33"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "MainCondition",\n "token_id": "1", \n "wallet_id": "0", \n "value": "contract MainCondition {\nconditions {\n if(EcosysParam(`founder_account`)! =$key_id)\n {\n warning `Sorry, you dont have access to this action.`\n }\n }\n}",\n"address": "0000-0000-0000-0000-0000-0000",\n"conditions": "ContractConditions(`MainCondition`)" \n }, \n...\n ]\n} \n')])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified contract. The default is to query the contract in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-32"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contract/mycontract\n")])])]),a("h4",{attrs:{id:"response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-26"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID in VM.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("state")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the contract.")])])]),e._v(" "),a("li",[a("p",[e._v("*walletid")]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account to which the contract is tied.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tokenid")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the pass that is used to pay for the contract.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tableid")])]),e._v(" "),a("p",[e._v("ID of the entry in the > "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("fields")])])]),e._v(" "),a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("> The array contains structural information for each parameter of the contract **data** section.\n>\n> > - *name*\n> >\n> > > Parameter name.\n> >\n> > - \n> >\n> > *type*\n> >\n> > Parameter type.\n> >\n> > - *optional*\n> >\n> > > Parameter options, \\`true\\` means optional parameters, \\`false\\` means mandatory parameters.\n")])])]),a("h4",{attrs:{id:"response-example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-34"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "fields" : [\n {"name": "amount", "type": "int", "optional": false},\n {"name": "name", "type": "string", "optional": true}\n ],\n "id": 150,\n "name":"@1mycontract",\n "tableid" : 10,\n} \n')])])]),a("h4",{attrs:{id:"error-response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-23"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_CONTRACT")])]),e._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[e._v("#")]),e._v(" sendTX")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReceives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an Error Response.")]),e._v(" "),a("h4",{attrs:{id:"request-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-33"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tx_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction content, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/sendTx\n\nHeaders:\nContent-Type: multipart/form-data\n\nParameters:\ntx1 - Transaction 1\ntxN - Trading N\n")])])]),a("h4",{attrs:{id:"response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-27"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hashes")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash arrays.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("tx1")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading 1 hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("txN")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading N's hash.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-35"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hashes": {\n "tx1": "67afbc435634..... ",\n "txN": "89ce4498eaf7..... ",\n}\n')])])]),a("h4",{attrs:{id:"error-response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-24"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_LIMITTXSIZE")]),e._v(","),a("em",[e._v("E_BANNED")])]),e._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[e._v("#")]),e._v(" txstatus")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReturns the block ID and error message for the specified transaction hash. If the return values for the block ID and error text message are null, then the transaction is not yet contained in the block.")]),e._v(" "),a("h4",{attrs:{id:"request-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-34"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON list of transaction hashes.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/txstatus/\n")])])]),a("h4",{attrs:{id:"response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-28"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("blockid")])])]),e._v(" "),a("p",[e._v("If the transaction execution succeeds, the block ID is returned; if the transaction execution fails, the")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")]),e._v(" for [0]{.title-ref}.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("result")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("errmsg")])])]),e._v(" "),a("p",[e._v("Returns an error text message if the execution of the transaction fails.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-36"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n {\n "hash1": {\n "blockid": "3123",\n "result": "",\n },\n "hash2": {\n "blockid": "3124",\n "result": "",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-25"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG, E_HASHNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. Also returns the contract name and its associated parameters, if optional parameters are specified.")]),e._v(" "),a("h4",{attrs:{id:"request-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-35"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1\n")])])]),a("h4",{attrs:{id:"response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-29"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("blockid")])]),e._v(" "),a("blockquote",[a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("confirm")])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("data")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-37"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "blockid": "9",\n "confirm": 11,\n "data": {\n "block": "9",\n "contract": "@1NewContract",\n "params": {\n "ApplicationId": 1,\n "Conditions": "true",\n "Value": "contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t\\t}"\n }\n }\n}\n')])])]),a("h4",{attrs:{id:"error-response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-26"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[e._v("#")]),e._v(" txinfoMultiple")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns the transaction-related information for the specified hash.")]),e._v(" "),a("h4",{attrs:{id:"request-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-36"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hashes")])])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of transaction hashes.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('data: {"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfoMultiple\n")])])]),a("h4",{attrs:{id:"response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-30"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")])])])]),e._v(" "),a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[a("em",[e._v("confirm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-38"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n { \n "hash1": {\n "blockid": "3123",\n "confirm": "5",\n },\n "hash2": {\n "blockid": "3124",\n "confirm": "3",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-27"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"request-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-37"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, then search in the first ecosystem page by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/page/validators_count/@2page_name\n")])])]),a("h4",{attrs:{id:"response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-31"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("validate_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the number of nodes to be validated for the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-39"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-28"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a tree of code JSON objects for the specified page or menu name, which is the result of processing by the template engine.")]),e._v(" "),a("h4",{attrs:{id:"request-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-38"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name or menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current ecosystem page or menu by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/page/default\n")])])]),a("h4",{attrs:{id:"response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-32"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("menu")]),e._v(" || "),a("em",[e._v("title")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The name of the menu to which the page belongs when requesting it.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("menutree")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The page's menu JSON object tree when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("title")]),e._v("--head for the menu "),a("em",[e._v("content/menu/...")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/menu/...")]),e._v(" Menu title when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page or menu JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-40"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-29"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v('Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.\nRequest """""""')]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current eco-page by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-33"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/source/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree of the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-41"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-30"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page cannot be found.")]),e._v(" "),a("p",[e._v("This request does not require login authorization. To receive the correct hash when making requests to other nodes, you must also pass\n"),a("em",[e._v("ecosystem,keyID,roleID,isMobile")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-39"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/hash/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the page with the ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("keyID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roleID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isMobile")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter identification of the mobile platform.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-34"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-42"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n} \n')])])]),a("h4",{attrs:{id:"error-response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-31"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")])]),e._v(" "),a("h3",{attrs:{id:"content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content"}},[e._v("#")]),e._v(" content")]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" is specified as\n"),a("code",[e._v("true or 1")]),e._v(", then this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-40"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("template")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page code.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[source]")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("true or 1")]),e._v(" is specified, the JSON object tree does not perform any functions and receives data.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content\n")])])]),a("h4",{attrs:{id:"response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-35"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-43"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-32"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[e._v("#")]),e._v(" maxblockid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the highest block ID on the current node.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-41"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/maxblockid\n")])])]),a("h4",{attrs:{id:"response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-36"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("max_block_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The highest block ID on the current node.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-44"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "max_block_id" : 341,\n}\n')])])]),a("h4",{attrs:{id:"error-response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-33"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"block-id"}},[e._v("block/{id}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified block ID.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-42"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/block/32\n")])])]),a("h4",{attrs:{id:"response-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-37"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("time")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tx_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of transactions in the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("rollbacks_hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("node_position")])]),e._v(" "),a("blockquote",[a("p",[e._v("The position of the block in the honor node list.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-45"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek=",\n "key_id": -118432674655542910,\n "time": 1551145365,\n "tx_count": 3,\n "rollbacks_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",\n "node_position": 0,\n} \n')])])]),a("h4",{attrs:{id:"error-response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-34"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the avatar of the user in the "),a("em",[e._v("member")]),e._v(" table (available without login).")]),e._v(" "),a("h4",{attrs:{id:"request-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-43"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("member")])]),e._v(" "),a("blockquote",[a("p",[e._v("The user's account address. (xxxx-... -xxxx)")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/avatar/1/1234-2134-... -4321\n")])])]),a("h4",{attrs:{id:"response-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-38"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The request header "),a("em",[e._v("Content-Type")]),e._v(" is the image type and the image data is returned in the response body.")]),e._v(" "),a("h4",{attrs:{id:"response-example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-46"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("200 (OK)\nContent-Type: image/png \n")])])]),a("h4",{attrs:{id:"error-response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-35"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")]),e._v(" "),a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the host address and port of centrifugo.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-44"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/config/centrifugo\n")])])]),a("h4",{attrs:{id:"response-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-39"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Response result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-36"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[e._v("#")]),e._v(" updnotificator")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/")]),e._v(" "),a("p",[e._v("(Discarded)")]),e._v(" "),a("p",[e._v("Sends all messages that have not yet been sent to the centrifugo notification service. Sends only messages for the specified ecosystem and members.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-45"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Member's account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/updnotificator\n")])])]),a("h4",{attrs:{id:"response-example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-47"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "result": true\n} \n')])])]),a("h3",{attrs:{id:"special-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-instructions"}},[e._v("#")]),e._v(" Special instructions")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("If the field has an omitempty attribute, it means that the field is an optional parameter")]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("If the interface with Authorization tag, that this interface requires login authorization, add Authorization to the request header, example.")]),e._v(" "),a("p",[e._v('key = Authorization\nvalue = "Bearer + '),a("a",{attrs:{href:"#login"}},[e._v("login token")]),e._v('"')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Authorization Bearer eyJhbGciOiJI..... kBZgGIlPhfXNZJ73RiZtM\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/144.5b723479.js b/assets/js/144.33bc1488.js similarity index 99% rename from assets/js/144.5b723479.js rename to assets/js/144.33bc1488.js index 2d12fc6..455de2c 100644 --- a/assets/js/144.5b723479.js +++ b/assets/js/144.33bc1488.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{525:function(e,t,a){"use strict";a.r(t);var r=a(51),c=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#platform-parameters"}},[e._v("#")]),e._v(" Platform Parameters")]),e._v(" "),a("p",[e._v("These are parameters to configure IBAX. They are applicable to the blockchain network and all ecosystems within it.")]),e._v(" "),a("h2",{attrs:{id:"location-to-store-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#location-to-store-platform-parameters"}},[e._v("#")]),e._v(" Location to store platform parameters")]),e._v(" "),a("p",[e._v("Platform parameters are stored in the "),a("code",[e._v("system parameters")]),e._v(" table.")]),e._v(" "),a("p",[e._v("This table is located in the first (default) ecosystem created on the blockchain network.")]),e._v(" "),a("h2",{attrs:{id:"change-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#change-of-platform-parameters"}},[e._v("#")]),e._v(" Change of platform parameters")]),e._v(" "),a("p",[e._v("Change of platform parameters can only be made through voting. You can only use the UpdateSysParam contract to change any platform parameter, which is managed by definitions in the legal system of the platform.")]),e._v(" "),a("h2",{attrs:{id:"configure-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-platform-parameters"}},[e._v("#")]),e._v(" Configure platform parameters")]),e._v(" "),a("h3",{attrs:{id:"configure-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-blockchain-network"}},[e._v("#")]),e._v(" Configure the blockchain network")]),e._v(" "),a("p",[e._v("Nodes:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])])]),e._v(" "),a("p",[e._v("Node bans:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])])]),e._v(" "),a("h3",{attrs:{id:"configure-a-new-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-a-new-ecosystem"}},[e._v("#")]),e._v(" Configure a new ecosystem")]),e._v(" "),a("p",[e._v("Default page and menu:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])])]),e._v(" "),a("p",[e._v("Default contract:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-database"}},[e._v("#")]),e._v(" Configure the database")]),e._v(" "),a("p",[e._v("Table limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-generation-of-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("#")]),e._v(" Configure the generation of blocks")]),e._v(" "),a("p",[e._v("Time limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])])]),e._v(" "),a("p",[e._v("Transaction limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])])]),e._v(" "),a("p",[e._v("Size limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])])]),e._v(" "),a("p",[e._v("Fuel limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])])]),e._v(" "),a("p",[e._v("Block rollback limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-fuel-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-fuel-tokens"}},[e._v("#")]),e._v(" Configure the fuel tokens")]),e._v(" "),a("p",[e._v("Rewards and commissions:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])])]),e._v(" "),a("p",[e._v("Fuel rate conversion:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])])]),e._v(" "),a("p",[e._v("Transaction size and data price:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])])]),e._v(" "),a("p",[e._v("Price for new elements:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])])]),e._v(" "),a("p",[e._v("Price for operations:\n")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#platform-parameters"}},[e._v("Platform Parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#location-to-store-platform-parameters"}},[e._v("Location to store platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#change-of-platform-parameters"}},[e._v("Change of platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-platform-parameters"}},[e._v("Configure platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#configure-the-blockchain-network"}},[e._v("Configure the blockchain network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-a-new-ecosystem"}},[e._v("Configure a new ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-database"}},[e._v("Configure the database")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("Configure the generation of blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-fuel-tokens"}},[e._v("Configure the fuel tokens")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#depreciated"}},[e._v("Depreciated")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#details-of-platform-parameters"}},[e._v("Details of platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-address-to-id"}},[e._v("price exec address to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-bind-wallet"}},[e._v("price exec bind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-column-condition"}},[e._v("price exec column condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-compile-contract"}},[e._v("price exec compile contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contains"}},[e._v("price exec contains")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-id"}},[e._v("price exec contract by id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-name"}},[e._v("price exec contract by name")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contracts-list"}},[e._v("price exec contracts list")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-column"}},[e._v("price exec create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-ecosystem"}},[e._v("price exec create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-table"}},[e._v("price exec create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-ecosys-param"}},[e._v("price exec ecosys param")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval"}},[e._v("price exec eval")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval-condition"}},[e._v("price exec eval condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-flush-contract"}},[e._v("price exec flush contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-has-prefix"}},[e._v("price exec has prefix")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-id-to-address"}},[e._v("price exec id to address")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-is-object"}},[e._v("price exec is object")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-join"}},[e._v("price exec join")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-json-to-map"}},[e._v("price exec json to map")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-len"}},[e._v("price exec len")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-column"}},[e._v("price exec perm column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-table"}},[e._v("price exec perm table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-pub-to-id"}},[e._v("price exec pub to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-replace"}},[e._v("price exec replace")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sha256"}},[e._v("price exec sha256")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-size"}},[e._v("price exec size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-substr"}},[e._v("price exec substr")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-fuel"}},[e._v("price exec sys fuel")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-int"}},[e._v("price exec sys param int")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-string"}},[e._v("price exec sys param string")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-table-conditions"}},[e._v("price exec table conditions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-unbind-wallet"}},[e._v("price exec unbind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-update-lang"}},[e._v("price exec update lang")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-validate-condition"}},[e._v("price exec validate condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])])])])])]),e._v(" "),a("h3",{attrs:{id:"depreciated"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#depreciated"}},[e._v("#")]),e._v(" Depreciated")]),e._v(" "),a("p",[e._v("Depreciated parameters:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])])]),e._v(" "),a("h2",{attrs:{id:"details-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#details-of-platform-parameters"}},[e._v("#")]),e._v(" Details of platform parameters")]),e._v(" "),a("h3",{attrs:{id:"block-reward"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-reward"}},[e._v("#")]),e._v(" block reward")]),e._v(" "),a("p",[e._v("The number of IBXC tokens granted to the honor node that generates the block.")]),e._v(" "),a("p",[e._v("The account that receives the reward is specified in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-url"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-url"}},[e._v("#")]),e._v(" blockchain url")]),e._v(" "),a("p",[e._v("Depreciated.")]),e._v(" "),a("h3",{attrs:{id:"commission-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-size"}},[e._v("#")]),e._v(" commission size")]),e._v(" "),a("p",[e._v("Percentage of the commission.")]),e._v(" "),a("p",[e._v("The amount of the commission is calculated as a percentage of the total cost of implement the contract. The unit of the commission token is IBXC.")]),e._v(" "),a("p",[e._v("The commission will be transferred to the account address specified in the commission_wallet parameter.")]),e._v(" "),a("h3",{attrs:{id:"commission-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-wallet"}},[e._v("#")]),e._v(" commission wallet")]),e._v(" "),a("p",[e._v("The account address to receive the commission.")]),e._v(" "),a("p",[e._v("The amount of commission is specified by the commission_size parameter.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-contract"}},[e._v("#")]),e._v(" default ecosystem contract")]),e._v(" "),a("p",[e._v("The source code of the default contract in the new ecosystem.")]),e._v(" "),a("p",[e._v("This contract provides access to the ecosystem creator.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-menu"}},[e._v("#")]),e._v(" default ecosystem menu")]),e._v(" "),a("p",[e._v("The source code of the default menu of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-page"}},[e._v("#")]),e._v(" default ecosystem page")]),e._v(" "),a("p",[e._v("The source code of the default page of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"fuel-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fuel-rate"}},[e._v("#")]),e._v(" fuel rate")]),e._v(" "),a("p",[e._v("The exchange rates of different ecosystem tokens by fuel unit.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[["ecosystem_id", "token_to_fuel_rate"], ["ecosystem_id2", "token_to_fuel_rate2"], ...]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("ecosystem_id")])]),e._v(" "),a("p",[e._v("Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("token_to_fuel_rate")])]),e._v(" "),a("p",[e._v("Exchange rate of the token by fuel unit.")])])]),e._v(" "),a("p",[e._v("For example:")]),e._v(" "),a("p",[a("code",[e._v('[["1","1000000000000"], ["2", "1000"]]')])]),e._v(" "),a("p",[e._v("One token of Ecosystem 1 is exchanged for 1,000,000,000,000 fuel units. One token of Ecosystem 2 is exchanged for 1,000 fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-create-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-rate"}},[e._v("#")]),e._v(" price create rate")]),e._v(" "),a("p",[e._v("The fuel rate of a new element.")]),e._v(" "),a("h3",{attrs:{id:"full-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-nodes"}},[e._v("#")]),e._v(" full nodes")]),e._v(" "),a("p",[e._v("The list of honor nodes of the blockchain network.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[{"api_address":"https://apihost1:port1","public_key":"nodepub1","tcp_address":"tcphost1:port2"},{"api_address":"https://apihost2:port1","public_key":"nodepub2","tcp_address":"tcphost2:port2"}]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("tcp_address")])]),e._v(" "),a("p",[e._v("TCP address and port of the node host.\nTransactions and new blocks will be sent to this host address, which can also be used to obtain the complete blockchain from the first block.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("api_address")])]),e._v(" "),a("p",[e._v("API address and port of the node host.\nThrough the API address, you can access any function of the platform without using Weaver. See details in RESTful API.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("public_key")])]),e._v(" "),a("p",[e._v("Public key of the node, which is used to verify the block signature.")])])]),e._v(" "),a("h3",{attrs:{id:"gap-between-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gap-between-blocks"}},[e._v("#")]),e._v(" gap between blocks")]),e._v(" "),a("p",[e._v("The time interval (in seconds) of generating two blocks on a node.")]),e._v(" "),a("p",[e._v("All nodes in the network use it to determine when to generate a new block. If the current node does not generate a new block within this time period, the turn passes to the next node in the list of honor nodes.")]),e._v(" "),a("p",[e._v("The minimum value of this parameter is "),a("code",[e._v("1")]),e._v(" second.")]),e._v(" "),a("h3",{attrs:{id:"incorrect-blocks-per-day"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#incorrect-blocks-per-day"}},[e._v("#")]),e._v(" incorrect blocks per day")]),e._v(" "),a("p",[e._v("The number of bad blocks that a node is allowed to generate per day before being banned.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive the same number of bad blocks from a node, the node will be banned from the network within a time period specified in "),a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"max-block-generation-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-generation-time"}},[e._v("#")]),e._v(" max block generation time")]),e._v(" "),a("p",[e._v("The maximum time for generating a block, in milliseconds. If a block is not successfully generated within this time period, a timeout error will be reported.")]),e._v(" "),a("h3",{attrs:{id:"max-block-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-size"}},[e._v("#")]),e._v(" max block size")]),e._v(" "),a("p",[e._v("The maximum size of a block, in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-columns"}},[e._v("#")]),e._v(" max columns")]),e._v(" "),a("p",[e._v("The maximum number of fields in a single table.")]),e._v(" "),a("p",[e._v("However, it does not include the predefined "),a("code",[e._v("id")]),e._v(" column.")]),e._v(" "),a("h3",{attrs:{id:"max-forsign-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-forsign-size"}},[e._v("#")]),e._v(" max forsign size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction signature in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-block"}},[e._v("#")]),e._v(" max fuel block")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-tx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-tx"}},[e._v("#")]),e._v(" max fuel tx")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single transaction.")]),e._v(" "),a("h3",{attrs:{id:"max-indexes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-indexes"}},[e._v("#")]),e._v(" max indexes")]),e._v(" "),a("p",[e._v("The maximum number of primary key fields in a single table.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block"}},[e._v("#")]),e._v(" max tx block")]),e._v(" "),a("p",[e._v("The maximum number of transactions in a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block-per-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block-per-user"}},[e._v("#")]),e._v(" max tx block per user")]),e._v(" "),a("p",[e._v("The maximum number of transactions of an account in a block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-size"}},[e._v("#")]),e._v(" max tx size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction in bytes.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time"}},[e._v("#")]),e._v(" node ban time")]),e._v(" "),a("p",[e._v("The global ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive bad blocks from a node up to the number of "),a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")]),e._v(", the node will be banned in the network for this time period.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time-local"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time-local"}},[e._v("#")]),e._v(" node ban time local")]),e._v(" "),a("p",[e._v("The local ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When a node receives an incorrect block from another node, it will locally ban the sender's node during this time period.")]),e._v(" "),a("h3",{attrs:{id:"number-of-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#number-of-nodes"}},[e._v("#")]),e._v(" number of nodes")]),e._v(" "),a("p",[e._v("The maximum number of honor nodes in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"price-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-ecosystem"}},[e._v("#")]),e._v(" price create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single ecosystem.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewEcosystem")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-application"}},[e._v("#")]),e._v(" price create application")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single application.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewApplication")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-table"}},[e._v("#")]),e._v(" price create table")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewTable")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-column"}},[e._v("#")]),e._v(" price create column")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table field.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewColumn")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-contract"}},[e._v("#")]),e._v(" price create contract")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single contract.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewContract")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-menu"}},[e._v("#")]),e._v(" price create menu")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single menu.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewMenu")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-page"}},[e._v("#")]),e._v(" price create page")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single page.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewPage")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-address-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-address-to-id"}},[e._v("#")]),e._v(" price exec address to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("AddressToId()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-bind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-bind-wallet"}},[e._v("#")]),e._v(" price exec bind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Activate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-column-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-column-condition"}},[e._v("#")]),e._v(" price exec column condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ColumnCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-compile-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-compile-contract"}},[e._v("#")]),e._v(" price exec compile contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CompileContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contains"}},[e._v("#")]),e._v(" price exec contains")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Contains()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-id"}},[e._v("#")]),e._v(" price exec contract by id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("GetContractById()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-name"}},[e._v("#")]),e._v(" price exec contract by name")]),e._v(" "),a("p",[e._v("The fuel fee of calling the GetContractByName() function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contracts-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contracts-list"}},[e._v("#")]),e._v(" price exec contracts list")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ContractsList()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-column"}},[e._v("#")]),e._v(" price exec create column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-ecosystem"}},[e._v("#")]),e._v(" price exec create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateEcosystem()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-table"}},[e._v("#")]),e._v(" price exec create table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-ecosys-param"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-ecosys-param"}},[e._v("#")]),e._v(" price exec ecosys param")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EcosysParam()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval"}},[e._v("#")]),e._v(" price exec eval")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Eval()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval-condition"}},[e._v("#")]),e._v(" price exec eval condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EvalCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-flush-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-flush-contract"}},[e._v("#")]),e._v(" price exec flush contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("FlushContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-has-prefix"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-has-prefix"}},[e._v("#")]),e._v(" price exec has prefix")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("HasPrefix()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-id-to-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-id-to-address"}},[e._v("#")]),e._v(" price exec id to address")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IdToAddress()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-is-object"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-is-object"}},[e._v("#")]),e._v(" price exec is object")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IsObject()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-join"}},[e._v("#")]),e._v(" price exec join")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Join()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-json-to-map"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-json-to-map"}},[e._v("#")]),e._v(" price exec json to map")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("JSONToMap()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-len"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-len"}},[e._v("#")]),e._v(" price exec len")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Len()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-column"}},[e._v("#")]),e._v(" price exec perm column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-table"}},[e._v("#")]),e._v(" price exec perm table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-pub-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-pub-to-id"}},[e._v("#")]),e._v(" price exec pub to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PubToID()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-replace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-replace"}},[e._v("#")]),e._v(" price exec replace")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Replace()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sha256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sha256"}},[e._v("#")]),e._v(" price exec sha256")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Sha256()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-size"}},[e._v("#")]),e._v(" price exec size")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Size()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-substr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-substr"}},[e._v("#")]),e._v(" price exec substr")]),e._v(" "),a("p",[e._v("The fuel fee of calling "),a("code",[e._v("theSubstr()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-fuel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-fuel"}},[e._v("#")]),e._v(" price exec sys fuel")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysFuel()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-int"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-int"}},[e._v("#")]),e._v(" price exec sys param int")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamInt()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-string"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-string"}},[e._v("#")]),e._v(" price exec sys param string")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamString()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-table-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-table-conditions"}},[e._v("#")]),e._v(" price exec table conditions")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("TableConditions()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-unbind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-unbind-wallet"}},[e._v("#")]),e._v(" price exec unbind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Deactivate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-update-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-update-lang"}},[e._v("#")]),e._v(" price exec update lang")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("UpdateLang()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-validate-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-validate-condition"}},[e._v("#")]),e._v(" price exec validate condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ValidateCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-data"}},[e._v("#")]),e._v(" price tx data")]),e._v(" "),a("p",[e._v("The fuel fee for every 1024 bytes of a transaction, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-size-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-size-wallet"}},[e._v("#")]),e._v(" price tx size wallet")]),e._v(" "),a("p",[e._v("The fee by transaction size, its unit is the IBXC token.")]),e._v(" "),a("p",[e._v("Except the ecosystem 1, a block space usage fee will be incurred proportionally when implementing a contract in other ecosystems, and its rate is "),a("em",[e._v("price tx size wallet")]),e._v(" IBXC tokens per megabyte.")]),e._v(" "),a("h3",{attrs:{id:"rollback-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-blocks"}},[e._v("#")]),e._v(" rollback blocks")]),e._v(" "),a("p",[e._v("Maximum number of blocks that can be rolled back when detecting a fork in the blockchain.")])])}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{522:function(e,t,a){"use strict";a.r(t);var r=a(51),c=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#platform-parameters"}},[e._v("#")]),e._v(" Platform Parameters")]),e._v(" "),a("p",[e._v("These are parameters to configure IBAX. They are applicable to the blockchain network and all ecosystems within it.")]),e._v(" "),a("h2",{attrs:{id:"location-to-store-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#location-to-store-platform-parameters"}},[e._v("#")]),e._v(" Location to store platform parameters")]),e._v(" "),a("p",[e._v("Platform parameters are stored in the "),a("code",[e._v("system parameters")]),e._v(" table.")]),e._v(" "),a("p",[e._v("This table is located in the first (default) ecosystem created on the blockchain network.")]),e._v(" "),a("h2",{attrs:{id:"change-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#change-of-platform-parameters"}},[e._v("#")]),e._v(" Change of platform parameters")]),e._v(" "),a("p",[e._v("Change of platform parameters can only be made through voting. You can only use the UpdateSysParam contract to change any platform parameter, which is managed by definitions in the legal system of the platform.")]),e._v(" "),a("h2",{attrs:{id:"configure-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-platform-parameters"}},[e._v("#")]),e._v(" Configure platform parameters")]),e._v(" "),a("h3",{attrs:{id:"configure-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-blockchain-network"}},[e._v("#")]),e._v(" Configure the blockchain network")]),e._v(" "),a("p",[e._v("Nodes:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])])]),e._v(" "),a("p",[e._v("Node bans:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])])]),e._v(" "),a("h3",{attrs:{id:"configure-a-new-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-a-new-ecosystem"}},[e._v("#")]),e._v(" Configure a new ecosystem")]),e._v(" "),a("p",[e._v("Default page and menu:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])])]),e._v(" "),a("p",[e._v("Default contract:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-database"}},[e._v("#")]),e._v(" Configure the database")]),e._v(" "),a("p",[e._v("Table limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-generation-of-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("#")]),e._v(" Configure the generation of blocks")]),e._v(" "),a("p",[e._v("Time limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])])]),e._v(" "),a("p",[e._v("Transaction limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])])]),e._v(" "),a("p",[e._v("Size limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])])]),e._v(" "),a("p",[e._v("Fuel limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])])]),e._v(" "),a("p",[e._v("Block rollback limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-fuel-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-fuel-tokens"}},[e._v("#")]),e._v(" Configure the fuel tokens")]),e._v(" "),a("p",[e._v("Rewards and commissions:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])])]),e._v(" "),a("p",[e._v("Fuel rate conversion:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])])]),e._v(" "),a("p",[e._v("Transaction size and data price:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])])]),e._v(" "),a("p",[e._v("Price for new elements:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])])]),e._v(" "),a("p",[e._v("Price for operations:\n")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#platform-parameters"}},[e._v("Platform Parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#location-to-store-platform-parameters"}},[e._v("Location to store platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#change-of-platform-parameters"}},[e._v("Change of platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-platform-parameters"}},[e._v("Configure platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#configure-the-blockchain-network"}},[e._v("Configure the blockchain network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-a-new-ecosystem"}},[e._v("Configure a new ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-database"}},[e._v("Configure the database")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("Configure the generation of blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-fuel-tokens"}},[e._v("Configure the fuel tokens")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#depreciated"}},[e._v("Depreciated")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#details-of-platform-parameters"}},[e._v("Details of platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-address-to-id"}},[e._v("price exec address to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-bind-wallet"}},[e._v("price exec bind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-column-condition"}},[e._v("price exec column condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-compile-contract"}},[e._v("price exec compile contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contains"}},[e._v("price exec contains")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-id"}},[e._v("price exec contract by id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-name"}},[e._v("price exec contract by name")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contracts-list"}},[e._v("price exec contracts list")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-column"}},[e._v("price exec create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-ecosystem"}},[e._v("price exec create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-table"}},[e._v("price exec create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-ecosys-param"}},[e._v("price exec ecosys param")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval"}},[e._v("price exec eval")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval-condition"}},[e._v("price exec eval condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-flush-contract"}},[e._v("price exec flush contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-has-prefix"}},[e._v("price exec has prefix")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-id-to-address"}},[e._v("price exec id to address")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-is-object"}},[e._v("price exec is object")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-join"}},[e._v("price exec join")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-json-to-map"}},[e._v("price exec json to map")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-len"}},[e._v("price exec len")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-column"}},[e._v("price exec perm column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-table"}},[e._v("price exec perm table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-pub-to-id"}},[e._v("price exec pub to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-replace"}},[e._v("price exec replace")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sha256"}},[e._v("price exec sha256")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-size"}},[e._v("price exec size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-substr"}},[e._v("price exec substr")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-fuel"}},[e._v("price exec sys fuel")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-int"}},[e._v("price exec sys param int")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-string"}},[e._v("price exec sys param string")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-table-conditions"}},[e._v("price exec table conditions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-unbind-wallet"}},[e._v("price exec unbind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-update-lang"}},[e._v("price exec update lang")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-validate-condition"}},[e._v("price exec validate condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])])])])])]),e._v(" "),a("h3",{attrs:{id:"depreciated"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#depreciated"}},[e._v("#")]),e._v(" Depreciated")]),e._v(" "),a("p",[e._v("Depreciated parameters:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])])]),e._v(" "),a("h2",{attrs:{id:"details-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#details-of-platform-parameters"}},[e._v("#")]),e._v(" Details of platform parameters")]),e._v(" "),a("h3",{attrs:{id:"block-reward"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-reward"}},[e._v("#")]),e._v(" block reward")]),e._v(" "),a("p",[e._v("The number of IBXC tokens granted to the honor node that generates the block.")]),e._v(" "),a("p",[e._v("The account that receives the reward is specified in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-url"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-url"}},[e._v("#")]),e._v(" blockchain url")]),e._v(" "),a("p",[e._v("Depreciated.")]),e._v(" "),a("h3",{attrs:{id:"commission-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-size"}},[e._v("#")]),e._v(" commission size")]),e._v(" "),a("p",[e._v("Percentage of the commission.")]),e._v(" "),a("p",[e._v("The amount of the commission is calculated as a percentage of the total cost of implement the contract. The unit of the commission token is IBXC.")]),e._v(" "),a("p",[e._v("The commission will be transferred to the account address specified in the commission_wallet parameter.")]),e._v(" "),a("h3",{attrs:{id:"commission-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-wallet"}},[e._v("#")]),e._v(" commission wallet")]),e._v(" "),a("p",[e._v("The account address to receive the commission.")]),e._v(" "),a("p",[e._v("The amount of commission is specified by the commission_size parameter.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-contract"}},[e._v("#")]),e._v(" default ecosystem contract")]),e._v(" "),a("p",[e._v("The source code of the default contract in the new ecosystem.")]),e._v(" "),a("p",[e._v("This contract provides access to the ecosystem creator.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-menu"}},[e._v("#")]),e._v(" default ecosystem menu")]),e._v(" "),a("p",[e._v("The source code of the default menu of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-page"}},[e._v("#")]),e._v(" default ecosystem page")]),e._v(" "),a("p",[e._v("The source code of the default page of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"fuel-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fuel-rate"}},[e._v("#")]),e._v(" fuel rate")]),e._v(" "),a("p",[e._v("The exchange rates of different ecosystem tokens by fuel unit.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[["ecosystem_id", "token_to_fuel_rate"], ["ecosystem_id2", "token_to_fuel_rate2"], ...]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("ecosystem_id")])]),e._v(" "),a("p",[e._v("Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("token_to_fuel_rate")])]),e._v(" "),a("p",[e._v("Exchange rate of the token by fuel unit.")])])]),e._v(" "),a("p",[e._v("For example:")]),e._v(" "),a("p",[a("code",[e._v('[["1","1000000000000"], ["2", "1000"]]')])]),e._v(" "),a("p",[e._v("One token of Ecosystem 1 is exchanged for 1,000,000,000,000 fuel units. One token of Ecosystem 2 is exchanged for 1,000 fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-create-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-rate"}},[e._v("#")]),e._v(" price create rate")]),e._v(" "),a("p",[e._v("The fuel rate of a new element.")]),e._v(" "),a("h3",{attrs:{id:"full-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-nodes"}},[e._v("#")]),e._v(" full nodes")]),e._v(" "),a("p",[e._v("The list of honor nodes of the blockchain network.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[{"api_address":"https://apihost1:port1","public_key":"nodepub1","tcp_address":"tcphost1:port2"},{"api_address":"https://apihost2:port1","public_key":"nodepub2","tcp_address":"tcphost2:port2"}]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("tcp_address")])]),e._v(" "),a("p",[e._v("TCP address and port of the node host.\nTransactions and new blocks will be sent to this host address, which can also be used to obtain the complete blockchain from the first block.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("api_address")])]),e._v(" "),a("p",[e._v("API address and port of the node host.\nThrough the API address, you can access any function of the platform without using Weaver. See details in RESTful API.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("public_key")])]),e._v(" "),a("p",[e._v("Public key of the node, which is used to verify the block signature.")])])]),e._v(" "),a("h3",{attrs:{id:"gap-between-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gap-between-blocks"}},[e._v("#")]),e._v(" gap between blocks")]),e._v(" "),a("p",[e._v("The time interval (in seconds) of generating two blocks on a node.")]),e._v(" "),a("p",[e._v("All nodes in the network use it to determine when to generate a new block. If the current node does not generate a new block within this time period, the turn passes to the next node in the list of honor nodes.")]),e._v(" "),a("p",[e._v("The minimum value of this parameter is "),a("code",[e._v("1")]),e._v(" second.")]),e._v(" "),a("h3",{attrs:{id:"incorrect-blocks-per-day"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#incorrect-blocks-per-day"}},[e._v("#")]),e._v(" incorrect blocks per day")]),e._v(" "),a("p",[e._v("The number of bad blocks that a node is allowed to generate per day before being banned.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive the same number of bad blocks from a node, the node will be banned from the network within a time period specified in "),a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"max-block-generation-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-generation-time"}},[e._v("#")]),e._v(" max block generation time")]),e._v(" "),a("p",[e._v("The maximum time for generating a block, in milliseconds. If a block is not successfully generated within this time period, a timeout error will be reported.")]),e._v(" "),a("h3",{attrs:{id:"max-block-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-size"}},[e._v("#")]),e._v(" max block size")]),e._v(" "),a("p",[e._v("The maximum size of a block, in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-columns"}},[e._v("#")]),e._v(" max columns")]),e._v(" "),a("p",[e._v("The maximum number of fields in a single table.")]),e._v(" "),a("p",[e._v("However, it does not include the predefined "),a("code",[e._v("id")]),e._v(" column.")]),e._v(" "),a("h3",{attrs:{id:"max-forsign-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-forsign-size"}},[e._v("#")]),e._v(" max forsign size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction signature in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-block"}},[e._v("#")]),e._v(" max fuel block")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-tx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-tx"}},[e._v("#")]),e._v(" max fuel tx")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single transaction.")]),e._v(" "),a("h3",{attrs:{id:"max-indexes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-indexes"}},[e._v("#")]),e._v(" max indexes")]),e._v(" "),a("p",[e._v("The maximum number of primary key fields in a single table.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block"}},[e._v("#")]),e._v(" max tx block")]),e._v(" "),a("p",[e._v("The maximum number of transactions in a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block-per-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block-per-user"}},[e._v("#")]),e._v(" max tx block per user")]),e._v(" "),a("p",[e._v("The maximum number of transactions of an account in a block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-size"}},[e._v("#")]),e._v(" max tx size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction in bytes.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time"}},[e._v("#")]),e._v(" node ban time")]),e._v(" "),a("p",[e._v("The global ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive bad blocks from a node up to the number of "),a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")]),e._v(", the node will be banned in the network for this time period.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time-local"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time-local"}},[e._v("#")]),e._v(" node ban time local")]),e._v(" "),a("p",[e._v("The local ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When a node receives an incorrect block from another node, it will locally ban the sender's node during this time period.")]),e._v(" "),a("h3",{attrs:{id:"number-of-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#number-of-nodes"}},[e._v("#")]),e._v(" number of nodes")]),e._v(" "),a("p",[e._v("The maximum number of honor nodes in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"price-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-ecosystem"}},[e._v("#")]),e._v(" price create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single ecosystem.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewEcosystem")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-application"}},[e._v("#")]),e._v(" price create application")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single application.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewApplication")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-table"}},[e._v("#")]),e._v(" price create table")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewTable")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-column"}},[e._v("#")]),e._v(" price create column")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table field.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewColumn")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-contract"}},[e._v("#")]),e._v(" price create contract")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single contract.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewContract")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-menu"}},[e._v("#")]),e._v(" price create menu")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single menu.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewMenu")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-page"}},[e._v("#")]),e._v(" price create page")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single page.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewPage")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-address-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-address-to-id"}},[e._v("#")]),e._v(" price exec address to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("AddressToId()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-bind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-bind-wallet"}},[e._v("#")]),e._v(" price exec bind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Activate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-column-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-column-condition"}},[e._v("#")]),e._v(" price exec column condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ColumnCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-compile-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-compile-contract"}},[e._v("#")]),e._v(" price exec compile contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CompileContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contains"}},[e._v("#")]),e._v(" price exec contains")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Contains()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-id"}},[e._v("#")]),e._v(" price exec contract by id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("GetContractById()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-name"}},[e._v("#")]),e._v(" price exec contract by name")]),e._v(" "),a("p",[e._v("The fuel fee of calling the GetContractByName() function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contracts-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contracts-list"}},[e._v("#")]),e._v(" price exec contracts list")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ContractsList()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-column"}},[e._v("#")]),e._v(" price exec create column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-ecosystem"}},[e._v("#")]),e._v(" price exec create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateEcosystem()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-table"}},[e._v("#")]),e._v(" price exec create table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-ecosys-param"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-ecosys-param"}},[e._v("#")]),e._v(" price exec ecosys param")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EcosysParam()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval"}},[e._v("#")]),e._v(" price exec eval")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Eval()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval-condition"}},[e._v("#")]),e._v(" price exec eval condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EvalCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-flush-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-flush-contract"}},[e._v("#")]),e._v(" price exec flush contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("FlushContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-has-prefix"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-has-prefix"}},[e._v("#")]),e._v(" price exec has prefix")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("HasPrefix()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-id-to-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-id-to-address"}},[e._v("#")]),e._v(" price exec id to address")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IdToAddress()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-is-object"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-is-object"}},[e._v("#")]),e._v(" price exec is object")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IsObject()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-join"}},[e._v("#")]),e._v(" price exec join")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Join()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-json-to-map"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-json-to-map"}},[e._v("#")]),e._v(" price exec json to map")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("JSONToMap()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-len"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-len"}},[e._v("#")]),e._v(" price exec len")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Len()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-column"}},[e._v("#")]),e._v(" price exec perm column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-table"}},[e._v("#")]),e._v(" price exec perm table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-pub-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-pub-to-id"}},[e._v("#")]),e._v(" price exec pub to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PubToID()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-replace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-replace"}},[e._v("#")]),e._v(" price exec replace")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Replace()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sha256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sha256"}},[e._v("#")]),e._v(" price exec sha256")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Sha256()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-size"}},[e._v("#")]),e._v(" price exec size")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Size()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-substr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-substr"}},[e._v("#")]),e._v(" price exec substr")]),e._v(" "),a("p",[e._v("The fuel fee of calling "),a("code",[e._v("theSubstr()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-fuel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-fuel"}},[e._v("#")]),e._v(" price exec sys fuel")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysFuel()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-int"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-int"}},[e._v("#")]),e._v(" price exec sys param int")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamInt()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-string"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-string"}},[e._v("#")]),e._v(" price exec sys param string")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamString()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-table-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-table-conditions"}},[e._v("#")]),e._v(" price exec table conditions")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("TableConditions()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-unbind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-unbind-wallet"}},[e._v("#")]),e._v(" price exec unbind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Deactivate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-update-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-update-lang"}},[e._v("#")]),e._v(" price exec update lang")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("UpdateLang()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-validate-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-validate-condition"}},[e._v("#")]),e._v(" price exec validate condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ValidateCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-data"}},[e._v("#")]),e._v(" price tx data")]),e._v(" "),a("p",[e._v("The fuel fee for every 1024 bytes of a transaction, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-size-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-size-wallet"}},[e._v("#")]),e._v(" price tx size wallet")]),e._v(" "),a("p",[e._v("The fee by transaction size, its unit is the IBXC token.")]),e._v(" "),a("p",[e._v("Except the ecosystem 1, a block space usage fee will be incurred proportionally when implementing a contract in other ecosystems, and its rate is "),a("em",[e._v("price tx size wallet")]),e._v(" IBXC tokens per megabyte.")]),e._v(" "),a("h3",{attrs:{id:"rollback-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-blocks"}},[e._v("#")]),e._v(" rollback blocks")]),e._v(" "),a("p",[e._v("Maximum number of blocks that can be rolled back when detecting a fork in the blockchain.")])])}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file diff --git a/assets/js/145.9382ab60.js b/assets/js/145.ce11df15.js similarity index 99% rename from assets/js/145.9382ab60.js rename to assets/js/145.ce11df15.js index db94ab5..594f764 100644 --- a/assets/js/145.9382ab60.js +++ b/assets/js/145.ce11df15.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{522:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" Daemon")]),e._v(" "),a("p",[e._v("In this section, we will describe how IBax nodes interact with each other from a technical perspective.")]),e._v(" "),a("h2",{attrs:{id:"about-the-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#about-the-server-daemon"}},[e._v("#")]),e._v(" About the server daemon")]),e._v(" "),a("p",[e._v("The server daemon needs to run on every network node, which executes various server functions and supports IBax's blockchain protocol. In the blockchain network, the daemon distributes blocks and transactions, generates new blocks, and verifies blocks and transactions received, and it can avoid the fork issue.")]),e._v(" "),a("h3",{attrs:{id:"honor-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node-daemon"}},[e._v("#")]),e._v(" Honor node daemon")]),e._v(" "),a("p",[e._v("A honor node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-daemon"}},[e._v("BlockGenerator daemon")])]),e._v(" "),a("p",[e._v("Generating new blocks.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("p",[e._v("Downloading new blocks from other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("p",[e._v("Confirming that blocks on the node also exist on most other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("p",[e._v("Distributing transactions and blocks to other honor nodes.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks daemon")]),e._v(" "),a("p",[e._v("Blocks in the queue, which contains blocks from other nodes.")]),e._v(" "),a("p",[e._v("Block processing logic is the same as "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx daemon")]),e._v(" "),a("p",[e._v("Verifying the transactions in queue.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler daemon")]),e._v(" "),a("p",[e._v("Running contracts as scheduled.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node-daemon"}},[e._v("#")]),e._v(" Guardian node daemon")]),e._v(" "),a("p",[e._v("A guardian node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Scheduler")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection daemon")]),e._v(" "),a("p",[e._v("This daemon downloads blocks and synchronizes the blockchain with other network nodes.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronization"}},[e._v("#")]),e._v(" Blockchain synchronization")]),e._v(" "),a("p",[e._v("This daemon synchronizes the blockchain by determining the maximum block height in the blockchain network, requesting new blocks, and solving the fork issue in the blockchain.")]),e._v(" "),a("h4",{attrs:{id:"check-for-blockchain-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-for-blockchain-updates"}},[e._v("#")]),e._v(" Check for blockchain updates")]),e._v(" "),a("p",[e._v("This daemon sends requests from the current block ID to all honor nodes.")]),e._v(" "),a("p",[e._v("If the current block ID of the node running the daemon is less than the current block ID of any honor node, the blockchain network node is considered out of date.")]),e._v(" "),a("h4",{attrs:{id:"download-new-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-new-blocks"}},[e._v("#")]),e._v(" Download new blocks")]),e._v(" "),a("p",[e._v("The node that returns the largest current block height is considered the latest node.\nThe daemon downloads all unknown blocks.")]),e._v(" "),a("h4",{attrs:{id:"solving-the-fork-issue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[e._v("#")]),e._v(" Solving the fork issue")]),e._v(" "),a("p",[e._v("If a fork is detected in the blockchain, the daemon moves the fork backward by downloading all blocks to a common parent block.\nWhen found the common parent block, a blockchain rollback is performed on the node running the daemon, and the correct block is added to the blockchain until the latest one is included.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlocksCollection daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockCollection daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" points to the largest block ID among all honor nodes.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" points to the data with the largest block ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-daemon"}},[e._v("#")]),e._v(" BlockGenerator daemon")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon generates new blocks.")]),e._v(" "),a("h3",{attrs:{id:"pre-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pre-verification"}},[e._v("#")]),e._v(" Pre-verification")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon analyzes the latest blocks in the blockchain to make new block generation plans.")]),e._v(" "),a("p",[e._v("If the following conditions are met, a new block can be generated:")]),e._v(" "),a("ul",[a("li",[e._v("The node that generated the latest block is in a node within the honor node list and runs the daemon.")]),e._v(" "),a("li",[e._v("The shortest time since the latest unverified block was generated.")])]),e._v(" "),a("h3",{attrs:{id:"block-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-generation"}},[e._v("#")]),e._v(" Block generation")]),e._v(" "),a("p",[e._v("A new block generated by the daemon contains all new transactions, which can be received from the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(" of other nodes or generated by the node running the daemon. The block generated is stored in the node database.")]),e._v(" "),a("h3",{attrs:{id:"tables-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-2"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (saves new blocks)")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon does not make any request to other daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator daemon")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends transactions and blocks to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[e._v("#")]),e._v(" Guardian node")]),e._v(" "),a("p",[e._v("When working on a guardian node, the daemon sends transactions generated by its node to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),a("p",[e._v("When working on a honor node, the daemon sends blocks generated and transaction hashes to all honor nodes.")]),e._v(" "),a("p",[e._v("Then, the honor node responds to transaction requests unknown to it. The daemon sends the complete transaction data as a response.")]),e._v(" "),a("h3",{attrs:{id:"tables-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-3"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Disseminator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("transactions")])]),e._v(" "),a("h3",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Send transactions and block hashes to the honor node.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Receive transaction data from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"confirmations-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirmations-daemon"}},[e._v("#")]),e._v(" Confirmations daemon")]),e._v(" "),a("p",[e._v("The Confirmations daemon checks whether all the blocks in its node exist on most other nodes.")]),e._v(" "),a("h3",{attrs:{id:"block-confirmation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-confirmation"}},[e._v("#")]),e._v(" Block confirmation")]),e._v(" "),a("p",[e._v("A block confirmed by multiple node in the network is considered as a confirmed block.")]),e._v(" "),a("p",[e._v("The daemon confirms all blocks one by one starting from the first that is currently not confirmed in the database.")]),e._v(" "),a("p",[e._v("Each block is confirmed in the way as follows:")]),e._v(" "),a("ul",[a("li",[e._v("Sending a request containing the ID of the block being confirmed to all honor nodes.")]),e._v(" "),a("li",[e._v("All honor nodes respond to the block hash.")]),e._v(" "),a("li",[e._v("If the hash responded matches the hash of the block on the daemon node, the confirmation counter value is increased. If not, the cancellation counter value is increased.")])]),e._v(" "),a("h3",{attrs:{id:"tables-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-4"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Confirmations daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("confirmation")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Confirmations daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Request block hashes from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-service-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-service-protocol"}},[e._v("#")]),e._v(" TCP service protocol")]),e._v(" "),a("p",[e._v("The TCP service protocol works on honor nodes and guardian nodes, which uses the binary protocol on TCP to requests from the BlocksCollection, Disseminator, and Confirmation daemons.")]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[e._v("Each request has a type defined by the first two bytes of the request.")]),e._v(" "),a("h2",{attrs:{id:"type-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-1"}},[e._v("#")]),e._v(" Type 1")]),e._v(" "),a("h4",{attrs:{id:"request-sender"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Hashes of the transaction and block.")]),e._v(" "),a("h4",{attrs:{id:"request-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("The block hash is added to the block queue.")]),e._v(" "),a("p",[e._v("Analyzes and verifies the transaction hashes, and select transactions that have not yet appeared on the node.")]),e._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No. After processing the request, a "),a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" request is issued.")]),e._v(" "),a("h2",{attrs:{id:"type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-2"}},[e._v("#")]),e._v(" Type 2")]),e._v(" "),a("h4",{attrs:{id:"request-sender-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-2"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-2"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("The transaction data, including the data size:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the transaction data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The transaction data.")]),e._v(" "),a("h4",{attrs:{id:"request-processing-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing-2"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("Verifies the transaction and add it to the transaction queue.")]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h2",{attrs:{id:"type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-4"}},[e._v("#")]),e._v(" Type 4")]),e._v(" "),a("h4",{attrs:{id:"request-sender-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-3"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-3"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block hash.")]),e._v(" "),a("p",[e._v("Returns "),a("code",[e._v("0")]),e._v(" if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-7"}},[e._v("#")]),e._v(" Type 7")]),e._v(" "),a("h4",{attrs:{id:"request-sender-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-4"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-4"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The block data, including data size.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the block data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The block data.")]),e._v(" "),a("p",[e._v("The connection is closed if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-10"}},[e._v("#")]),e._v(" Type 10")]),e._v(" "),a("h4",{attrs:{id:"request-sender-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-5"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-5"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{525:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" Daemon")]),e._v(" "),a("p",[e._v("In this section, we will describe how IBax nodes interact with each other from a technical perspective.")]),e._v(" "),a("h2",{attrs:{id:"about-the-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#about-the-server-daemon"}},[e._v("#")]),e._v(" About the server daemon")]),e._v(" "),a("p",[e._v("The server daemon needs to run on every network node, which executes various server functions and supports IBax's blockchain protocol. In the blockchain network, the daemon distributes blocks and transactions, generates new blocks, and verifies blocks and transactions received, and it can avoid the fork issue.")]),e._v(" "),a("h3",{attrs:{id:"honor-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node-daemon"}},[e._v("#")]),e._v(" Honor node daemon")]),e._v(" "),a("p",[e._v("A honor node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-daemon"}},[e._v("BlockGenerator daemon")])]),e._v(" "),a("p",[e._v("Generating new blocks.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("p",[e._v("Downloading new blocks from other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("p",[e._v("Confirming that blocks on the node also exist on most other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("p",[e._v("Distributing transactions and blocks to other honor nodes.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks daemon")]),e._v(" "),a("p",[e._v("Blocks in the queue, which contains blocks from other nodes.")]),e._v(" "),a("p",[e._v("Block processing logic is the same as "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx daemon")]),e._v(" "),a("p",[e._v("Verifying the transactions in queue.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler daemon")]),e._v(" "),a("p",[e._v("Running contracts as scheduled.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node-daemon"}},[e._v("#")]),e._v(" Guardian node daemon")]),e._v(" "),a("p",[e._v("A guardian node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Scheduler")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection daemon")]),e._v(" "),a("p",[e._v("This daemon downloads blocks and synchronizes the blockchain with other network nodes.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronization"}},[e._v("#")]),e._v(" Blockchain synchronization")]),e._v(" "),a("p",[e._v("This daemon synchronizes the blockchain by determining the maximum block height in the blockchain network, requesting new blocks, and solving the fork issue in the blockchain.")]),e._v(" "),a("h4",{attrs:{id:"check-for-blockchain-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-for-blockchain-updates"}},[e._v("#")]),e._v(" Check for blockchain updates")]),e._v(" "),a("p",[e._v("This daemon sends requests from the current block ID to all honor nodes.")]),e._v(" "),a("p",[e._v("If the current block ID of the node running the daemon is less than the current block ID of any honor node, the blockchain network node is considered out of date.")]),e._v(" "),a("h4",{attrs:{id:"download-new-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-new-blocks"}},[e._v("#")]),e._v(" Download new blocks")]),e._v(" "),a("p",[e._v("The node that returns the largest current block height is considered the latest node.\nThe daemon downloads all unknown blocks.")]),e._v(" "),a("h4",{attrs:{id:"solving-the-fork-issue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[e._v("#")]),e._v(" Solving the fork issue")]),e._v(" "),a("p",[e._v("If a fork is detected in the blockchain, the daemon moves the fork backward by downloading all blocks to a common parent block.\nWhen found the common parent block, a blockchain rollback is performed on the node running the daemon, and the correct block is added to the blockchain until the latest one is included.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlocksCollection daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockCollection daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" points to the largest block ID among all honor nodes.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" points to the data with the largest block ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-daemon"}},[e._v("#")]),e._v(" BlockGenerator daemon")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon generates new blocks.")]),e._v(" "),a("h3",{attrs:{id:"pre-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pre-verification"}},[e._v("#")]),e._v(" Pre-verification")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon analyzes the latest blocks in the blockchain to make new block generation plans.")]),e._v(" "),a("p",[e._v("If the following conditions are met, a new block can be generated:")]),e._v(" "),a("ul",[a("li",[e._v("The node that generated the latest block is in a node within the honor node list and runs the daemon.")]),e._v(" "),a("li",[e._v("The shortest time since the latest unverified block was generated.")])]),e._v(" "),a("h3",{attrs:{id:"block-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-generation"}},[e._v("#")]),e._v(" Block generation")]),e._v(" "),a("p",[e._v("A new block generated by the daemon contains all new transactions, which can be received from the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(" of other nodes or generated by the node running the daemon. The block generated is stored in the node database.")]),e._v(" "),a("h3",{attrs:{id:"tables-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-2"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (saves new blocks)")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon does not make any request to other daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator daemon")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends transactions and blocks to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[e._v("#")]),e._v(" Guardian node")]),e._v(" "),a("p",[e._v("When working on a guardian node, the daemon sends transactions generated by its node to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),a("p",[e._v("When working on a honor node, the daemon sends blocks generated and transaction hashes to all honor nodes.")]),e._v(" "),a("p",[e._v("Then, the honor node responds to transaction requests unknown to it. The daemon sends the complete transaction data as a response.")]),e._v(" "),a("h3",{attrs:{id:"tables-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-3"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Disseminator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("transactions")])]),e._v(" "),a("h3",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Send transactions and block hashes to the honor node.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Receive transaction data from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"confirmations-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirmations-daemon"}},[e._v("#")]),e._v(" Confirmations daemon")]),e._v(" "),a("p",[e._v("The Confirmations daemon checks whether all the blocks in its node exist on most other nodes.")]),e._v(" "),a("h3",{attrs:{id:"block-confirmation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-confirmation"}},[e._v("#")]),e._v(" Block confirmation")]),e._v(" "),a("p",[e._v("A block confirmed by multiple node in the network is considered as a confirmed block.")]),e._v(" "),a("p",[e._v("The daemon confirms all blocks one by one starting from the first that is currently not confirmed in the database.")]),e._v(" "),a("p",[e._v("Each block is confirmed in the way as follows:")]),e._v(" "),a("ul",[a("li",[e._v("Sending a request containing the ID of the block being confirmed to all honor nodes.")]),e._v(" "),a("li",[e._v("All honor nodes respond to the block hash.")]),e._v(" "),a("li",[e._v("If the hash responded matches the hash of the block on the daemon node, the confirmation counter value is increased. If not, the cancellation counter value is increased.")])]),e._v(" "),a("h3",{attrs:{id:"tables-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-4"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Confirmations daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("confirmation")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Confirmations daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Request block hashes from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-service-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-service-protocol"}},[e._v("#")]),e._v(" TCP service protocol")]),e._v(" "),a("p",[e._v("The TCP service protocol works on honor nodes and guardian nodes, which uses the binary protocol on TCP to requests from the BlocksCollection, Disseminator, and Confirmation daemons.")]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[e._v("Each request has a type defined by the first two bytes of the request.")]),e._v(" "),a("h2",{attrs:{id:"type-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-1"}},[e._v("#")]),e._v(" Type 1")]),e._v(" "),a("h4",{attrs:{id:"request-sender"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Hashes of the transaction and block.")]),e._v(" "),a("h4",{attrs:{id:"request-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("The block hash is added to the block queue.")]),e._v(" "),a("p",[e._v("Analyzes and verifies the transaction hashes, and select transactions that have not yet appeared on the node.")]),e._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No. After processing the request, a "),a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" request is issued.")]),e._v(" "),a("h2",{attrs:{id:"type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-2"}},[e._v("#")]),e._v(" Type 2")]),e._v(" "),a("h4",{attrs:{id:"request-sender-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-2"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-2"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("The transaction data, including the data size:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the transaction data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The transaction data.")]),e._v(" "),a("h4",{attrs:{id:"request-processing-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing-2"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("Verifies the transaction and add it to the transaction queue.")]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h2",{attrs:{id:"type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-4"}},[e._v("#")]),e._v(" Type 4")]),e._v(" "),a("h4",{attrs:{id:"request-sender-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-3"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-3"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block hash.")]),e._v(" "),a("p",[e._v("Returns "),a("code",[e._v("0")]),e._v(" if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-7"}},[e._v("#")]),e._v(" Type 7")]),e._v(" "),a("h4",{attrs:{id:"request-sender-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-4"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-4"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The block data, including data size.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the block data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The block data.")]),e._v(" "),a("p",[e._v("The connection is closed if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-10"}},[e._v("#")]),e._v(" Type 10")]),e._v(" "),a("h4",{attrs:{id:"request-sender-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-5"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-5"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/15.97374dd5.js b/assets/js/15.04e9cdd9.js similarity index 99% rename from assets/js/15.97374dd5.js rename to assets/js/15.04e9cdd9.js index 8c44a5b..b8d2b35 100644 --- a/assets/js/15.97374dd5.js +++ b/assets/js/15.04e9cdd9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{395:function(e,n,t){"use strict";t.r(n);var i=t(51),r=Object(i.a)({},(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"the-ibax-netzwerk"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-netzwerk"}},[e._v("#")]),e._v(" The IBAX Netzwerk")]),e._v(" "),t("p",[e._v("In diesem Abschnitt werden wir Sie in die Verwendung von IBAX einweisen.")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#the-ibax-netzwerk"}},[e._v("The IBAX Netzwerk")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#anwendungsentwickler"}},[e._v("Anwendungsentwickler")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ecolib-mitglieder"}},[e._v("ECOLIB Mitglieder")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ecolib-anwendungen-und-plattformanwendungen%5D"}},[e._v("ECOLIB Anwendungen und Plattformanwendungen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#zugrunde-liegendes-modell"}},[e._v("Zugrunde liegendes Modell")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#implementierung"}},[e._v("Implementierung")])])])])]),e._v(" "),t("p",[e._v("Wenn Sie an der Entwicklung, Verwendung oder Verwaltung von Anwendungen in IBAX interessiert sind, müssen Sie es möglicherweise überhaupt nicht verstehen.")]),e._v(" "),t("p",[e._v("In IBAX sind die Blockchain und das Blockchain-Netzwerk vor ECOLIB-Mitgliedern, Administratoren und Anwendungsentwicklern verborgen. IBAX bietet für alle Benutzergruppen "),t("RouterLink",{attrs:{to:"/de/reference/api2.html"}},[e._v("RESTful API")]),e._v(" an, die einen manipulationssicheren und verteilten Zugriff auf den "),t("strong",[e._v("globalen Zustand")]),e._v(" der Blockchain ermöglichen.")],1),e._v(" "),t("h2",{attrs:{id:"anwendungsentwickler"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anwendungsentwickler"}},[e._v("#")]),e._v(" Anwendungsentwickler")]),e._v(" "),t("p",[e._v("Technisch gesehen ist der "),t("strong",[e._v("global state")]),e._v(" ein Datensatz, der über die Datenbank von IBAX implementiert wird. Aus der Perspektive von Anwendungsentwicklern interagiert eine Anwendung mit der Datenbank, indem sie Tabellen abfragt, einfügt und aktualisiert.")]),e._v(" "),t("p",[e._v("In IBAX werden Transaktionen in die Blockchain geschrieben, indem verschiedene Verträge implementiert werden. Diese Transaktionen rufen Vertragscodes auf, die von Blockchain-Netzwerkknoten implementiert werden, die den globalen Status (Datenbank) entsprechend aktualisieren.")]),e._v(" "),t("p",[e._v("Für Anwendungsentwickler ist ein Vertrag eine Funktion, dass Daten bei der Implementierung in die Datenbank geschrieben werden. Seiten sind wie Skripte und der Seitencode ist ein Satz von Seitenfunktionen "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html"}},[e._v("template")]),e._v(", einige dieser Funktionen zeigen Seitenelemente an, während andere Daten aus der Datenbank stammen. Anwendungsentwickler müssen nicht verstehen, was Transaktionen, Blockgenerierung und Konsensalgorithmen sind, verwenden Sie sie einfach.")],1),e._v(" "),t("h2",{attrs:{id:"ecolib-mitglieder"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-mitglieder"}},[e._v("#")]),e._v(" ECOLIB mitglieder")]),e._v(" "),t("p",[e._v("Von Entwicklern geschriebene Anwendungen werden in einer Umgebung namens "),t("RouterLink",{attrs:{to:"/de/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(" ausgeführt. Eine Anwendung dient in der Regel einem bestimmten Zweck und erledigt zusammen mit mehreren anderen Anwendungen verschiedene Aufgaben.")],1),e._v(" "),t("p",[e._v("Ein Benutzer muss Mitglied einer ECOLIB werden, wenn er auf Anwendungen darin zugreifen möchte, und er kann gleichzeitig Mitglied mehrerer verschiedener ECOLIBs sein.")]),e._v(" "),t("p",[e._v("ECOLIB-Mitglieder können die Datenbank von den Anwendungsseiten aus anzeigen und ändern, genau wie das Ausfüllen von Formularen, das Klicken auf Schaltflächen und das Navigieren durch Seiten in einer gemeinsamen Webanwendung.")]),e._v(" "),t("h2",{attrs:{id:"ecolib-anwendungen-und-plattformanwendungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-anwendungen-und-plattformanwendungen"}},[e._v("#")]),e._v(" ECOLIB Anwendungen und Plattformanwendungen")]),e._v(" "),t("p",[e._v("Anwendungen können in "),t("strong",[e._v("ECOLIB-Anwendungen")]),e._v(" und "),t("strong",[e._v("Plattformanwendungen")]),e._v(" fallen.")]),e._v(" "),t("p",[e._v("ECOLIB-Anwendungen")]),e._v(" "),t("p",[e._v("Eine ECOLIB-Anwendung implementiert bestimmte einzigartige Funktionen oder Geschäftsprozesse einer ECOLIB, ist aber nur in dieser ECOLIB verfügbar.\nPlattformanwendungen")]),e._v(" "),t("p",[e._v("Eine Plattformanwendung gilt für alle ECOLIBs. Jede Anwendung könnte als Plattformanwendung entwickelt werden. IBAX-Entwickler würden Plattformanwendungen bereitstellen, die die Kernfunktionen für ECOLIB-Governance unterstützen, wie z. B. Abstimmung, Benachrichtigung und ECOLIB-Mitgliederrollenverwaltung.")]),e._v(" "),t("h2",{attrs:{id:"liegendes-modell"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#liegendes-modell"}},[e._v("#")]),e._v(" Liegendes Modell]")]),e._v(" "),t("p",[e._v("Definition von Schichten")]),e._v(" "),t("p",[e._v("IBAX besteht aus mehreren Schichten:")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Benutzerinteraktionsebene")]),e._v(" "),t("p",[e._v("ECOLIB-Mitglieder interagieren mit der Anwendung über Seiten und Seitenelemente.")])]),e._v(" "),t("li",[t("p",[e._v("Anwendungsschicht")]),e._v(" "),t("p",[e._v("Anwendungsentwickler interagieren mit dem globalen Zustand (Datentabellen) über Vertragscodes und Seitencodes.")])]),e._v(" "),t("li",[t("p",[e._v("Globale Zustandsebene")]),e._v(" "),t("p",[e._v("Aktualisieren und synchronisieren Sie den globalen Status (Datenbank) basierend auf Operationen, die in das verteilte Ledger (Blockchain) geschrieben wurden.")])]),e._v(" "),t("li",[t("p",[e._v("Blockchain-Schicht")]),e._v(" "),t("p",[e._v("Aktualisieren Sie das Distributed Ledger mit neuen Blöcken. Operationen (Transaktionen), die in neuen Blöcken gespeichert werden, müssen auf dem globalen Zustand durchgeführt werden.")])]),e._v(" "),t("li",[t("p",[e._v("Knotennetzwerkschicht")]),e._v(" "),t("p",[e._v("Es implementierte das IBAX-Netzwerkprotokoll, das Transaktionen verteilt, verifiziert und neue Blöcke im Knotennetzwerk generiert. In ähnlicher Weise werden neue Blöcke vom Knotennetzwerk verteilt und verifiziert.")]),e._v(" "),t("p",[e._v("Das verteilte Hauptbuch aller Knoten wird synchron gehalten. Wenn Konflikte in einem Knoten auftreten, identifiziert der Knoten, welche Blockchains als gültig gelten, und ungültige Blockchains werden entsprechend zurückgesetzt.")])]),e._v(" "),t("li",[t("p",[e._v("Transaktionsschicht")]),e._v(" "),t("p",[e._v("Transaktionen sind die Grundlage für die Generierung von Blöcken und Blockchain-Protokollen, und Transaktionen selbst sind die Ergebnisse von Operationen, die auf der Benutzerinteraktionsebene ausgeführt werden. Transaktionen werden von Weaver generiert.")]),e._v(" "),t("p",[e._v("Wenn ein Benutzer oder Entwickler eine Operation durchführt, z. B. das Klicken auf eine Schaltfläche auf einer Seite oder das Implementieren eines Vertrags aus dem Code-Editor, wandelt Weaver diese Operation in eine Transaktion um und sendet sie an den damit verbundenen Netzwerkknoten.\nDaher ist der Transaktionsfluss wie folgt:")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Eine Benutzeroperation auf einer Benutzerseite wird zu einer Transaktion;")])]),e._v(" "),t("li",[t("p",[e._v("Die Transaktion ist in einem Block enthalten;")])]),e._v(" "),t("li",[t("p",[e._v("Der Block ist in der Blockchain enthalten;")])]),e._v(" "),t("li",[t("p",[e._v("Die Änderung der Operation bewirkt, dass sich der globale Zustand der Blockchain ändert, und diese Operation wird auf die Datenbank angewendet.")])]),e._v(" "),t("li",[t("p",[e._v("Jede Datenbankänderung wird in der Anwendung widergespiegelt.")])])])])]),e._v(" "),t("h2",{attrs:{id:"implementierung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#implementierung"}},[e._v("#")]),e._v(" Implementierung")]),e._v(" "),t("p",[e._v("IBAX besteht aus zwei Hauptkomponenten, nämlich Server "),t("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),t("OutboundLink")],1),e._v(" und Weaver "),t("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Quellcode"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Weber:")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Bereitstellung der Benutzerseiten;")])]),e._v(" "),t("li",[t("p",[e._v("Bereitstellung der IDE für die Anwendungsentwicklung;")])]),e._v(" "),t("li",[t("p",[e._v("Speichern öffentlicher Schlüssel von Benutzerkonten und Ausführen der Autorisierung;")])]),e._v(" "),t("li",[t("p",[e._v("Anfordern von Datenbankdaten von Anwendungsseiten und Anzeigen von Anwendungsseiten für Benutzer;")])]),e._v(" "),t("li",[t("p",[e._v("Senden von Transaktionen an den Server über "),t("RouterLink",{attrs:{to:"/de/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),t("p",[e._v("Um automatisch Transaktionen für Benutzeroperationen zu erstellen, wandelt Weaver solche Operationen in Transaktionen um, wenn Anwendungsentwickler einen Vertrag von der IDE implementieren.")])])]),e._v(" "),t("p",[e._v("Server:")]),e._v(" "),t("ul",[t("li",[e._v("Halten des globalen Zustands (Datenbank) des Knotens;")]),e._v(" "),t("li",[e._v("Implementierung des Blockchain-Protokolls;")]),e._v(" "),t("li",[e._v("Implementierung von Vertragscodes in der IBAX "),t("RouterLink",{attrs:{to:"/de/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),t("li",[e._v("Implementierung von Seitencodes in der "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),t("li",[e._v("Implementierung von "),t("RouterLink",{attrs:{to:"/de/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);n.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{396:function(e,n,t){"use strict";t.r(n);var i=t(51),r=Object(i.a)({},(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"the-ibax-netzwerk"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-netzwerk"}},[e._v("#")]),e._v(" The IBAX Netzwerk")]),e._v(" "),t("p",[e._v("In diesem Abschnitt werden wir Sie in die Verwendung von IBAX einweisen.")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#the-ibax-netzwerk"}},[e._v("The IBAX Netzwerk")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#anwendungsentwickler"}},[e._v("Anwendungsentwickler")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ecolib-mitglieder"}},[e._v("ECOLIB Mitglieder")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ecolib-anwendungen-und-plattformanwendungen%5D"}},[e._v("ECOLIB Anwendungen und Plattformanwendungen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#zugrunde-liegendes-modell"}},[e._v("Zugrunde liegendes Modell")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#implementierung"}},[e._v("Implementierung")])])])])]),e._v(" "),t("p",[e._v("Wenn Sie an der Entwicklung, Verwendung oder Verwaltung von Anwendungen in IBAX interessiert sind, müssen Sie es möglicherweise überhaupt nicht verstehen.")]),e._v(" "),t("p",[e._v("In IBAX sind die Blockchain und das Blockchain-Netzwerk vor ECOLIB-Mitgliedern, Administratoren und Anwendungsentwicklern verborgen. IBAX bietet für alle Benutzergruppen "),t("RouterLink",{attrs:{to:"/de/reference/api2.html"}},[e._v("RESTful API")]),e._v(" an, die einen manipulationssicheren und verteilten Zugriff auf den "),t("strong",[e._v("globalen Zustand")]),e._v(" der Blockchain ermöglichen.")],1),e._v(" "),t("h2",{attrs:{id:"anwendungsentwickler"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anwendungsentwickler"}},[e._v("#")]),e._v(" Anwendungsentwickler")]),e._v(" "),t("p",[e._v("Technisch gesehen ist der "),t("strong",[e._v("global state")]),e._v(" ein Datensatz, der über die Datenbank von IBAX implementiert wird. Aus der Perspektive von Anwendungsentwicklern interagiert eine Anwendung mit der Datenbank, indem sie Tabellen abfragt, einfügt und aktualisiert.")]),e._v(" "),t("p",[e._v("In IBAX werden Transaktionen in die Blockchain geschrieben, indem verschiedene Verträge implementiert werden. Diese Transaktionen rufen Vertragscodes auf, die von Blockchain-Netzwerkknoten implementiert werden, die den globalen Status (Datenbank) entsprechend aktualisieren.")]),e._v(" "),t("p",[e._v("Für Anwendungsentwickler ist ein Vertrag eine Funktion, dass Daten bei der Implementierung in die Datenbank geschrieben werden. Seiten sind wie Skripte und der Seitencode ist ein Satz von Seitenfunktionen "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html"}},[e._v("template")]),e._v(", einige dieser Funktionen zeigen Seitenelemente an, während andere Daten aus der Datenbank stammen. Anwendungsentwickler müssen nicht verstehen, was Transaktionen, Blockgenerierung und Konsensalgorithmen sind, verwenden Sie sie einfach.")],1),e._v(" "),t("h2",{attrs:{id:"ecolib-mitglieder"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-mitglieder"}},[e._v("#")]),e._v(" ECOLIB mitglieder")]),e._v(" "),t("p",[e._v("Von Entwicklern geschriebene Anwendungen werden in einer Umgebung namens "),t("RouterLink",{attrs:{to:"/de/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(" ausgeführt. Eine Anwendung dient in der Regel einem bestimmten Zweck und erledigt zusammen mit mehreren anderen Anwendungen verschiedene Aufgaben.")],1),e._v(" "),t("p",[e._v("Ein Benutzer muss Mitglied einer ECOLIB werden, wenn er auf Anwendungen darin zugreifen möchte, und er kann gleichzeitig Mitglied mehrerer verschiedener ECOLIBs sein.")]),e._v(" "),t("p",[e._v("ECOLIB-Mitglieder können die Datenbank von den Anwendungsseiten aus anzeigen und ändern, genau wie das Ausfüllen von Formularen, das Klicken auf Schaltflächen und das Navigieren durch Seiten in einer gemeinsamen Webanwendung.")]),e._v(" "),t("h2",{attrs:{id:"ecolib-anwendungen-und-plattformanwendungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-anwendungen-und-plattformanwendungen"}},[e._v("#")]),e._v(" ECOLIB Anwendungen und Plattformanwendungen")]),e._v(" "),t("p",[e._v("Anwendungen können in "),t("strong",[e._v("ECOLIB-Anwendungen")]),e._v(" und "),t("strong",[e._v("Plattformanwendungen")]),e._v(" fallen.")]),e._v(" "),t("p",[e._v("ECOLIB-Anwendungen")]),e._v(" "),t("p",[e._v("Eine ECOLIB-Anwendung implementiert bestimmte einzigartige Funktionen oder Geschäftsprozesse einer ECOLIB, ist aber nur in dieser ECOLIB verfügbar.\nPlattformanwendungen")]),e._v(" "),t("p",[e._v("Eine Plattformanwendung gilt für alle ECOLIBs. Jede Anwendung könnte als Plattformanwendung entwickelt werden. IBAX-Entwickler würden Plattformanwendungen bereitstellen, die die Kernfunktionen für ECOLIB-Governance unterstützen, wie z. B. Abstimmung, Benachrichtigung und ECOLIB-Mitgliederrollenverwaltung.")]),e._v(" "),t("h2",{attrs:{id:"liegendes-modell"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#liegendes-modell"}},[e._v("#")]),e._v(" Liegendes Modell]")]),e._v(" "),t("p",[e._v("Definition von Schichten")]),e._v(" "),t("p",[e._v("IBAX besteht aus mehreren Schichten:")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Benutzerinteraktionsebene")]),e._v(" "),t("p",[e._v("ECOLIB-Mitglieder interagieren mit der Anwendung über Seiten und Seitenelemente.")])]),e._v(" "),t("li",[t("p",[e._v("Anwendungsschicht")]),e._v(" "),t("p",[e._v("Anwendungsentwickler interagieren mit dem globalen Zustand (Datentabellen) über Vertragscodes und Seitencodes.")])]),e._v(" "),t("li",[t("p",[e._v("Globale Zustandsebene")]),e._v(" "),t("p",[e._v("Aktualisieren und synchronisieren Sie den globalen Status (Datenbank) basierend auf Operationen, die in das verteilte Ledger (Blockchain) geschrieben wurden.")])]),e._v(" "),t("li",[t("p",[e._v("Blockchain-Schicht")]),e._v(" "),t("p",[e._v("Aktualisieren Sie das Distributed Ledger mit neuen Blöcken. Operationen (Transaktionen), die in neuen Blöcken gespeichert werden, müssen auf dem globalen Zustand durchgeführt werden.")])]),e._v(" "),t("li",[t("p",[e._v("Knotennetzwerkschicht")]),e._v(" "),t("p",[e._v("Es implementierte das IBAX-Netzwerkprotokoll, das Transaktionen verteilt, verifiziert und neue Blöcke im Knotennetzwerk generiert. In ähnlicher Weise werden neue Blöcke vom Knotennetzwerk verteilt und verifiziert.")]),e._v(" "),t("p",[e._v("Das verteilte Hauptbuch aller Knoten wird synchron gehalten. Wenn Konflikte in einem Knoten auftreten, identifiziert der Knoten, welche Blockchains als gültig gelten, und ungültige Blockchains werden entsprechend zurückgesetzt.")])]),e._v(" "),t("li",[t("p",[e._v("Transaktionsschicht")]),e._v(" "),t("p",[e._v("Transaktionen sind die Grundlage für die Generierung von Blöcken und Blockchain-Protokollen, und Transaktionen selbst sind die Ergebnisse von Operationen, die auf der Benutzerinteraktionsebene ausgeführt werden. Transaktionen werden von Weaver generiert.")]),e._v(" "),t("p",[e._v("Wenn ein Benutzer oder Entwickler eine Operation durchführt, z. B. das Klicken auf eine Schaltfläche auf einer Seite oder das Implementieren eines Vertrags aus dem Code-Editor, wandelt Weaver diese Operation in eine Transaktion um und sendet sie an den damit verbundenen Netzwerkknoten.\nDaher ist der Transaktionsfluss wie folgt:")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Eine Benutzeroperation auf einer Benutzerseite wird zu einer Transaktion;")])]),e._v(" "),t("li",[t("p",[e._v("Die Transaktion ist in einem Block enthalten;")])]),e._v(" "),t("li",[t("p",[e._v("Der Block ist in der Blockchain enthalten;")])]),e._v(" "),t("li",[t("p",[e._v("Die Änderung der Operation bewirkt, dass sich der globale Zustand der Blockchain ändert, und diese Operation wird auf die Datenbank angewendet.")])]),e._v(" "),t("li",[t("p",[e._v("Jede Datenbankänderung wird in der Anwendung widergespiegelt.")])])])])]),e._v(" "),t("h2",{attrs:{id:"implementierung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#implementierung"}},[e._v("#")]),e._v(" Implementierung")]),e._v(" "),t("p",[e._v("IBAX besteht aus zwei Hauptkomponenten, nämlich Server "),t("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),t("OutboundLink")],1),e._v(" und Weaver "),t("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Quellcode"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Weber:")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Bereitstellung der Benutzerseiten;")])]),e._v(" "),t("li",[t("p",[e._v("Bereitstellung der IDE für die Anwendungsentwicklung;")])]),e._v(" "),t("li",[t("p",[e._v("Speichern öffentlicher Schlüssel von Benutzerkonten und Ausführen der Autorisierung;")])]),e._v(" "),t("li",[t("p",[e._v("Anfordern von Datenbankdaten von Anwendungsseiten und Anzeigen von Anwendungsseiten für Benutzer;")])]),e._v(" "),t("li",[t("p",[e._v("Senden von Transaktionen an den Server über "),t("RouterLink",{attrs:{to:"/de/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),t("p",[e._v("Um automatisch Transaktionen für Benutzeroperationen zu erstellen, wandelt Weaver solche Operationen in Transaktionen um, wenn Anwendungsentwickler einen Vertrag von der IDE implementieren.")])])]),e._v(" "),t("p",[e._v("Server:")]),e._v(" "),t("ul",[t("li",[e._v("Halten des globalen Zustands (Datenbank) des Knotens;")]),e._v(" "),t("li",[e._v("Implementierung des Blockchain-Protokolls;")]),e._v(" "),t("li",[e._v("Implementierung von Vertragscodes in der IBAX "),t("RouterLink",{attrs:{to:"/de/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),t("li",[e._v("Implementierung von Seitencodes in der "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),t("li",[e._v("Implementierung von "),t("RouterLink",{attrs:{to:"/de/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);n.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/16.d5fadb1f.js b/assets/js/16.1a8393dc.js similarity index 99% rename from assets/js/16.d5fadb1f.js rename to assets/js/16.1a8393dc.js index e3db4f8..666dc19 100644 --- a/assets/js/16.d5fadb1f.js +++ b/assets/js/16.1a8393dc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{396:function(e,n,r){"use strict";r.r(n);var t=r(51),i=Object(t.a)({},(function(){var e=this,n=e.$createElement,r=e._self._c||n;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"dezentraler-proof-of-authority-konsens"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#dezentraler-proof-of-authority-konsens"}},[e._v("#")]),e._v(" Dezentraler Proof-of-Authority-Konsens")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Was ist ein Konsens über einen dezentralen Berechtigungsnachweis?")])]),e._v(" "),r("li",[r("p",[e._v("Vorteile des DPoA-Konsenses")])]),e._v(" "),r("li",[r("p",[e._v("DPoA-Konsens und gemeinsame Angriffsmittel")])]),e._v(" "),r("li",[r("p",[e._v("Implementierung des DPoA-Konsenses in IBAX")])])]),e._v(" "),r("p",[e._v("In diesem Abschnitt beschreiben wir den Konsens zum dezentralen Proof-of-Authority und seine Implementierung in IBAX.")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#was-ist-ein-dezentraler-proof-of-authority-konsens?"}},[e._v("Was ist ein dezentraler Proof-of-Authority-Konsens?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#vertoile-des-dpoa-konsensus"}},[e._v("Vorteile des DPoA-Konsenses")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#dpoa-consensus-and-common-means-of-attack"}},[e._v("DPoA consensus and common means of attack")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#dos"}},[e._v("DoS")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#percent-attack-51"}},[e._v("51 percent attack")])])])]),e._v(" "),r("li",[r("a",{attrs:{href:"#implementation-of-dpoa-consensus-in-ibax"}},[e._v("Implementation of DPoA consensus in IBAX")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#honor-knoten"}},[e._v("Honor-Knoten")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#leader-knoten"}},[e._v("Leader-Knoten")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#generation-of-new-blocks"}},[e._v("Generierung neuer Blöcke")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#gabeln"}},[e._v("Gabeln")])])])])]),e._v(" "),r("h2",{attrs:{id:"was-ist-ein-dezentraler-proof-of-authority-konsens"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#was-ist-ein-dezentraler-proof-of-authority-konsens"}},[e._v("#")]),e._v(" Was ist ein dezentraler Proof-of-Authority-Konsens?")]),e._v(" "),r("p",[e._v("Unter Berücksichtigung kommerzieller Anwendungsszenarien und realer Umgebungen hat IBAX Network einen neuen Konsensmechanismus entwickelt, DPoA (Decentralized Proof of Authority).")]),e._v(" "),r("p",[e._v("Dezentralisierung war schon immer unsere feste Überzeugung. Es bezieht sich nicht nur auf die Infrastruktur-Netzwerkumgebung von IBAX. Stattdessen werden wir die Dezentralisierung in jeder im IBAX-Netzwerk erstellten ecoLib verwurzeln lassen und technische Lösungen verwenden, um in jeder von ihnen ein hohes Maß an Selbstverwaltung zu erreichen. Zum Zweck der hochgradig verteilten Selbstverwaltung haben wir viele Änderungen in der Gesamtarchitektur und der technischen Umsetzung vorgenommen. In der Praxis kommen wir jedoch um das Konzept der zentralen Verwaltung nicht herum. Um ein Gleichgewicht zwischen Zentralisierung und Dezentralisierung zu finden, haben wir neben dem DPoA-Konsensmechanismus auch bestimmte Belohnungs- und Anreizprogramme formuliert.")]),e._v(" "),r("p",[e._v("IBAX Network hat einen neuen Konsensmechanismus geschaffen, der Verteilung, schwache Zentralisierung und eine Zertifizierungsstelle kombiniert. Wir nennen es DPoA (Decentralized Proof of Authority). Um die Kontinuität für das gesamte IBAX-Netzwerk zu gewährleisten, umfasst der Konsens nicht nur das IBAX Public Network, sondern auch ecoLibs, die von jedem Benutzer und jeder Benutzergruppe erstellt wurden. Dadurch entsteht eine wirklich selbstverwaltete, dezentrale, faire, transparente und betrugssichere Decentralized Autonomous Organization (DAO).")]),e._v(" "),r("p",[e._v("DPoA verfügt über einen Präventionsmechanismus gegen Netzwerkangriffe und ermöglicht die Erstellung von Mint Nodes, die das Netzwerk schützen und neue IBXC-Coins prägen. IBAXCoin-Inhaber können einen Teil ihres IBXC-Liquiditätsguthabens in Mint Nodes für Mint & Stake Emission Rewards einsetzen. Das Prägen und Abstecken dient dazu, die Kosten und die Schwierigkeit von Angriffen zu erhöhen und den Gesamtwert der IBXC-Münzen proportional zu erhöhen. Mit diesem Mechanismus sind die Wahrscheinlichkeit und der Schaden jedes Angriffs unendlich nahe bei Null.")]),e._v(" "),r("h2",{attrs:{id:"vorteile-des-dpoa-konsenses"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#vorteile-des-dpoa-konsenses"}},[e._v("#")]),e._v(" Vorteile des DPoA-Konsenses")]),e._v(" "),r("p",[e._v("Im Vergleich zum Proof-of-Work (PoW)- oder Proof-of-Stake (PoS)-Konsens hat der DPoA-Konsens folgende Vorteile:")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Keine Hochleistungshardware erforderlich. Im Vergleich zum PoW-Konsens verbrauchen Knoten, die den DPoA-Konsens implementieren, keine Rechenressourcen zum Lösen komplexer mathematischer Logikaufgaben;")])]),e._v(" "),r("li",[r("p",[e._v("Das Zeitintervall zum Generieren neuer Blöcke ist vorhersehbar, aber das für PoW- und PoS-Konsens sind unterschiedlich;")])]),e._v(" "),r("li",[r("p",[e._v("Hohe Transaktionsrate. Blöcke werden nacheinander in festgelegten Zeitintervallen von autorisierten Netzwerkknoten generiert, was die Geschwindigkeit der Transaktionsverifizierung erhöht.")])]),e._v(" "),r("li",[r("p",[e._v("Toleranz gegenüber kompromittierten und bösartigen Knoten, solange 51 % der Knoten nicht kompromittiert sind. IBAX implementiert einen Mechanismus zum Sperren von Knoten und Widerrufen von Rechten zur Blockgenerierung.")])])]),e._v(" "),r("h2",{attrs:{id:"dpoa-konsens-und-gemeinsame-angriffsmittel"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#dpoa-konsens-und-gemeinsame-angriffsmittel"}},[e._v("#")]),e._v(" DPoA-Konsens und gemeinsame Angriffsmittel")]),e._v(" "),r("h3",{attrs:{id:"dos"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#dos"}},[e._v("#")]),e._v(" DoS")]),e._v(" "),r("p",[e._v("Ein Angreifer kann große Mengen an Transaktionen und Blöcken an einen Zielknoten im Netzwerk senden und versuchen, dessen Betrieb zu stören und seine Dienste nicht verfügbar zu machen.")]),e._v(" "),r("p",[e._v("Der DPoA-Mechanismus ist zur Abwehr von DoS-Angriffen möglich:")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Da Netzwerkknoten vorab authentifiziert werden, können Blockgenerierungsrechte nur Knoten gewährt werden, die DoS-Angriffen standhalten können.")])]),e._v(" "),r("li",[r("p",[e._v("Wenn ein Ehrenknoten für einen bestimmten Zeitraum nicht verfügbar ist, kann er von der Liste der Ehrenknoten ausgeschlossen werden.")])])]),e._v(" "),r("h3",{attrs:{id:"_51-percent-attack"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_51-percent-attack"}},[e._v("#")]),e._v(" "),r("spn",{attrs:{id:"percent-attack-51"}},[e._v("51 percent attack")])],1),e._v(" "),r("p",[e._v("Was das Szenario mit dem DPoA-Konsens betrifft, erfordert der 51-%-Angriff, dass ein Angreifer die Kontrolle über 51 % der Netzwerkknoten erlangt. Aber das Szenario für den PoW-Konsens ist anders, den ein Angreifer benötigt, um 51 % der Rechenleistung des Netzwerks zu erhalten. Die Kontrolle über Knoten in einem zugelassenen Blockchain-Netzwerk zu erlangen, ist viel schwieriger als die Erlangung der Rechenleistung.")]),e._v(" "),r("p",[e._v("Beispielsweise kann ein Angreifer in einem Netzwerk, das den PoW-Konsens implementiert, die Rechenleistung (Leistung) des kontrollierten Netzwerksegments erhöhen und somit den Prozentsatz der kontrollierten Knoten erhöhen. Dies macht für den DPoA-Konsens keinen Sinn, da die Rechenleistung des Knotens keinen Einfluss auf die Blockchain-Netzwerkentscheidungen hat.")]),e._v(" "),r("h2",{attrs:{id:"implementierung-des-dpoa-konsenses-in-ibax"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#implementierung-des-dpoa-konsenses-in-ibax"}},[e._v("#")]),e._v(" Implementierung des DPoA-Konsenses in IBAX")]),e._v(" "),r("h3",{attrs:{id:"honor-knoten"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#honor-knoten"}},[e._v("#")]),e._v(" Honor-knoten")]),e._v(" "),r("p",[e._v("In IBAX können nur Ehrenknoten neue Blöcke generieren, die das Blockchain-Netzwerk und das verteilte Hauptbuch aufrechterhalten.")]),e._v(" "),r("p",[e._v("Die Liste der Ehrenknoten wird in der Blockchain-Registrierung geführt. Die Reihenfolge der Knoten bestimmt die Reihenfolge, in der Knoten neue Blöcke erzeugen.")]),e._v(" "),r("h3",{attrs:{id:"leader-knoten"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#leader-knoten"}},[e._v("#")]),e._v(" Leader-Knoten")]),e._v(" "),r("p",[e._v("Die folgende Formel bestimmt den aktuellen "),r("strong",[e._v("Leader-Knoten")]),e._v(", also einen Knoten, der zum aktuellen Zeitpunkt einen neuen Block erzeugen muss.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("leader = ((time - first) / step) % nodes\n")])])]),r("blockquote",[r("p",[e._v("Führer")])]),e._v(" "),r("p",[e._v("Aktueller Führungsknoten.")]),e._v(" "),r("blockquote",[r("p",[e._v("Zeit")])]),e._v(" "),r("p",[e._v("Aktuelle Uhrzeit (UNIX).")]),e._v(" "),r("blockquote",[r("p",[e._v("zuerst")])]),e._v(" "),r("p",[e._v("Generierungszeit des ersten Blocks (UNIX).")]),e._v(" "),r("blockquote",[r("p",[e._v("Schritt")])]),e._v(" "),r("p",[e._v("Anzahl der Sekunden im Blockgenerierungsintervall.")]),e._v(" "),r("blockquote",[r("p",[e._v("Knoten")])]),e._v(" "),r("p",[e._v("Gesamtzahl der Ehrenknoten.")]),e._v(" "),r("h3",{attrs:{id:"generierung-neuer-blocke"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#generierung-neuer-blocke"}},[e._v("#")]),e._v(" Generierung neuer Blöcke")]),e._v(" "),r("p",[e._v("Neue Blöcke werden durch einen [Leader-Knoten] (#Leader-Node) des aktuellen Zeitintervalls generiert. Bei jedem Zeitintervall wird die Führungsrolle an den nächsten Ehrenknoten aus der Liste der Ehrenknoten weitergegeben.\n"),r("img",{attrs:{src:"/block-generation.png",alt:"avatar"}})]),e._v(" "),r("p",[e._v("a) Schritte zur Generierung neuer Blöcke")]),e._v(" "),r("p",[e._v("Die Hauptschritte zum Generieren eines neuen Blocks sind wie folgt:")]),e._v(" "),r("ol",[r("li",[r("p",[e._v("Sammelt alle neuen Transaktionen aus der Transaktionswarteschlange des Knotens;")])]),e._v(" "),r("li",[r("p",[e._v("Führt Transaktionen einzeln aus. Ungültige oder nicht ausführbare Transaktionen werden zurückgewiesen;")])]),e._v(" "),r("li",[r("p",[e._v("Prüft, ob die "),r("RouterLink",{attrs:{to:"/de/reference/platform-parameters.html#configure-the-generation-of-blocks"}},[e._v("Blockgenerierungsgrenzen")]),e._v(" konform sind;")],1)]),e._v(" "),r("li",[r("p",[e._v("Generiert einen Block mit gültigen Transaktionen und signiert ihn mit dem privaten Schlüssel des Ehrenknotens durch den ECDSA-Algorithmus;")])]),e._v(" "),r("li",[r("p",[e._v("Sendet diesen Block an andere Ehrenknoten.")])])]),e._v(" "),r("p",[e._v("b) Überprüfung neuer Blöcke")]),e._v(" "),r("p",[e._v("Schritte zum Verifizieren neuer Blöcke auf anderen Ehrenknoten:")]),e._v(" "),r("ol",[r("li",[r("p",[e._v("Empfangen Sie einen neuen Block und überprüfen Sie:")]),e._v(" "),r("p",[e._v("– ob der neue Block vom Leader-Knoten eines aktuellen Intervalls generiert wurde;")]),e._v(" "),r("p",[e._v("– ob es keine anderen Blöcke gibt, die vom Leader-Knoten eines aktuellen Intervalls generiert werden;")]),e._v(" "),r("p",[e._v("– ob der neue Block richtig signiert ist.")])]),e._v(" "),r("li",[r("p",[e._v("Führen Sie Transaktionen aus dem Block einzeln aus. Überprüfen Sie, ob die Transaktionen erfolgreich und innerhalb der "),r("RouterLink",{attrs:{to:"/de/reference/platform-parameters.html#configure-the-generation-of-blocks"}},[e._v("Blockgenerierungsgrenzen")]),e._v(" ausgeführt werden.")],1)]),e._v(" "),r("li",[r("p",[e._v("Fügen Sie den Block hinzu oder lehnen Sie ihn ab, abhängig vom vorherigen Schritt:")]),e._v(" "),r("p",[e._v("– Wenn die Blockvalidierung erfolgreich ist, fügen Sie den neuen Block zur Blockchain des aktuellen Knotens hinzu;")]),e._v(" "),r("p",[e._v("– Wenn die Blockvalidierung fehlgeschlagen ist, lehnen Sie den Block ab und senden Sie eine "),r("strong",[e._v("Bad Block")]),e._v("-Transaktion;")]),e._v(" "),r("p",[e._v("– Wenn der Ehrenknoten, der diesen ungültigen Block erstellt hat, weiterhin fehlerhafte Blöcke generiert, kann er gesperrt oder von der Liste der Ehrenknoten ausgeschlossen werden.")])])]),e._v(" "),r("h3",{attrs:{id:"gabeln"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#gabeln"}},[e._v("#")]),e._v(" Gabeln")]),e._v(" "),r("p",[e._v("Ein "),r("strong",[e._v("Fork")]),e._v(" ist eine alternative Version der Blockchain, die einen oder mehrere Blöcke enthält, die unabhängig vom Rest der Blockchain generiert wurden.")]),e._v(" "),r("p",[e._v("Forks treten normalerweise auf, wenn ein Teil des Netzwerks desynchronisiert wird. Faktoren, die wahrscheinlich zu Forks führen, sind hohe Netzwerklatenz, absichtliche oder unbeabsichtigte Verletzung von Zeitlimits, Zeitdesynchronisierung an Knoten. Wenn Netzwerkknoten eine signifikante geografische Verteilung haben, muss das Blockgenerierungsintervall erhöht werden.")]),e._v(" "),r("p",[e._v("Forks werden aufgelöst, indem die längste Blockchain-Regel befolgt wird. Wenn zwei Blockchain-Versionen erkannt werden, setzen die Honor-Knoten die kürzere zurück und akzeptieren die längere.")]),e._v(" "),r("p",[r("img",{attrs:{src:"/block-fork-resolution.png",alt:"avatar"}})])])}),[],!1,null,null,null);n.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{395:function(e,n,r){"use strict";r.r(n);var t=r(51),i=Object(t.a)({},(function(){var e=this,n=e.$createElement,r=e._self._c||n;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"dezentraler-proof-of-authority-konsens"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#dezentraler-proof-of-authority-konsens"}},[e._v("#")]),e._v(" Dezentraler Proof-of-Authority-Konsens")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Was ist ein Konsens über einen dezentralen Berechtigungsnachweis?")])]),e._v(" "),r("li",[r("p",[e._v("Vorteile des DPoA-Konsenses")])]),e._v(" "),r("li",[r("p",[e._v("DPoA-Konsens und gemeinsame Angriffsmittel")])]),e._v(" "),r("li",[r("p",[e._v("Implementierung des DPoA-Konsenses in IBAX")])])]),e._v(" "),r("p",[e._v("In diesem Abschnitt beschreiben wir den Konsens zum dezentralen Proof-of-Authority und seine Implementierung in IBAX.")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#was-ist-ein-dezentraler-proof-of-authority-konsens?"}},[e._v("Was ist ein dezentraler Proof-of-Authority-Konsens?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#vertoile-des-dpoa-konsensus"}},[e._v("Vorteile des DPoA-Konsenses")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#dpoa-consensus-and-common-means-of-attack"}},[e._v("DPoA consensus and common means of attack")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#dos"}},[e._v("DoS")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#percent-attack-51"}},[e._v("51 percent attack")])])])]),e._v(" "),r("li",[r("a",{attrs:{href:"#implementation-of-dpoa-consensus-in-ibax"}},[e._v("Implementation of DPoA consensus in IBAX")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#honor-knoten"}},[e._v("Honor-Knoten")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#leader-knoten"}},[e._v("Leader-Knoten")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#generation-of-new-blocks"}},[e._v("Generierung neuer Blöcke")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#gabeln"}},[e._v("Gabeln")])])])])]),e._v(" "),r("h2",{attrs:{id:"was-ist-ein-dezentraler-proof-of-authority-konsens"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#was-ist-ein-dezentraler-proof-of-authority-konsens"}},[e._v("#")]),e._v(" Was ist ein dezentraler Proof-of-Authority-Konsens?")]),e._v(" "),r("p",[e._v("Unter Berücksichtigung kommerzieller Anwendungsszenarien und realer Umgebungen hat IBAX Network einen neuen Konsensmechanismus entwickelt, DPoA (Decentralized Proof of Authority).")]),e._v(" "),r("p",[e._v("Dezentralisierung war schon immer unsere feste Überzeugung. Es bezieht sich nicht nur auf die Infrastruktur-Netzwerkumgebung von IBAX. Stattdessen werden wir die Dezentralisierung in jeder im IBAX-Netzwerk erstellten ecoLib verwurzeln lassen und technische Lösungen verwenden, um in jeder von ihnen ein hohes Maß an Selbstverwaltung zu erreichen. Zum Zweck der hochgradig verteilten Selbstverwaltung haben wir viele Änderungen in der Gesamtarchitektur und der technischen Umsetzung vorgenommen. In der Praxis kommen wir jedoch um das Konzept der zentralen Verwaltung nicht herum. Um ein Gleichgewicht zwischen Zentralisierung und Dezentralisierung zu finden, haben wir neben dem DPoA-Konsensmechanismus auch bestimmte Belohnungs- und Anreizprogramme formuliert.")]),e._v(" "),r("p",[e._v("IBAX Network hat einen neuen Konsensmechanismus geschaffen, der Verteilung, schwache Zentralisierung und eine Zertifizierungsstelle kombiniert. Wir nennen es DPoA (Decentralized Proof of Authority). Um die Kontinuität für das gesamte IBAX-Netzwerk zu gewährleisten, umfasst der Konsens nicht nur das IBAX Public Network, sondern auch ecoLibs, die von jedem Benutzer und jeder Benutzergruppe erstellt wurden. Dadurch entsteht eine wirklich selbstverwaltete, dezentrale, faire, transparente und betrugssichere Decentralized Autonomous Organization (DAO).")]),e._v(" "),r("p",[e._v("DPoA verfügt über einen Präventionsmechanismus gegen Netzwerkangriffe und ermöglicht die Erstellung von Mint Nodes, die das Netzwerk schützen und neue IBXC-Coins prägen. IBAXCoin-Inhaber können einen Teil ihres IBXC-Liquiditätsguthabens in Mint Nodes für Mint & Stake Emission Rewards einsetzen. Das Prägen und Abstecken dient dazu, die Kosten und die Schwierigkeit von Angriffen zu erhöhen und den Gesamtwert der IBXC-Münzen proportional zu erhöhen. Mit diesem Mechanismus sind die Wahrscheinlichkeit und der Schaden jedes Angriffs unendlich nahe bei Null.")]),e._v(" "),r("h2",{attrs:{id:"vorteile-des-dpoa-konsenses"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#vorteile-des-dpoa-konsenses"}},[e._v("#")]),e._v(" Vorteile des DPoA-Konsenses")]),e._v(" "),r("p",[e._v("Im Vergleich zum Proof-of-Work (PoW)- oder Proof-of-Stake (PoS)-Konsens hat der DPoA-Konsens folgende Vorteile:")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Keine Hochleistungshardware erforderlich. Im Vergleich zum PoW-Konsens verbrauchen Knoten, die den DPoA-Konsens implementieren, keine Rechenressourcen zum Lösen komplexer mathematischer Logikaufgaben;")])]),e._v(" "),r("li",[r("p",[e._v("Das Zeitintervall zum Generieren neuer Blöcke ist vorhersehbar, aber das für PoW- und PoS-Konsens sind unterschiedlich;")])]),e._v(" "),r("li",[r("p",[e._v("Hohe Transaktionsrate. Blöcke werden nacheinander in festgelegten Zeitintervallen von autorisierten Netzwerkknoten generiert, was die Geschwindigkeit der Transaktionsverifizierung erhöht.")])]),e._v(" "),r("li",[r("p",[e._v("Toleranz gegenüber kompromittierten und bösartigen Knoten, solange 51 % der Knoten nicht kompromittiert sind. IBAX implementiert einen Mechanismus zum Sperren von Knoten und Widerrufen von Rechten zur Blockgenerierung.")])])]),e._v(" "),r("h2",{attrs:{id:"dpoa-konsens-und-gemeinsame-angriffsmittel"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#dpoa-konsens-und-gemeinsame-angriffsmittel"}},[e._v("#")]),e._v(" DPoA-Konsens und gemeinsame Angriffsmittel")]),e._v(" "),r("h3",{attrs:{id:"dos"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#dos"}},[e._v("#")]),e._v(" DoS")]),e._v(" "),r("p",[e._v("Ein Angreifer kann große Mengen an Transaktionen und Blöcken an einen Zielknoten im Netzwerk senden und versuchen, dessen Betrieb zu stören und seine Dienste nicht verfügbar zu machen.")]),e._v(" "),r("p",[e._v("Der DPoA-Mechanismus ist zur Abwehr von DoS-Angriffen möglich:")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Da Netzwerkknoten vorab authentifiziert werden, können Blockgenerierungsrechte nur Knoten gewährt werden, die DoS-Angriffen standhalten können.")])]),e._v(" "),r("li",[r("p",[e._v("Wenn ein Ehrenknoten für einen bestimmten Zeitraum nicht verfügbar ist, kann er von der Liste der Ehrenknoten ausgeschlossen werden.")])])]),e._v(" "),r("h3",{attrs:{id:"_51-percent-attack"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_51-percent-attack"}},[e._v("#")]),e._v(" "),r("spn",{attrs:{id:"percent-attack-51"}},[e._v("51 percent attack")])],1),e._v(" "),r("p",[e._v("Was das Szenario mit dem DPoA-Konsens betrifft, erfordert der 51-%-Angriff, dass ein Angreifer die Kontrolle über 51 % der Netzwerkknoten erlangt. Aber das Szenario für den PoW-Konsens ist anders, den ein Angreifer benötigt, um 51 % der Rechenleistung des Netzwerks zu erhalten. Die Kontrolle über Knoten in einem zugelassenen Blockchain-Netzwerk zu erlangen, ist viel schwieriger als die Erlangung der Rechenleistung.")]),e._v(" "),r("p",[e._v("Beispielsweise kann ein Angreifer in einem Netzwerk, das den PoW-Konsens implementiert, die Rechenleistung (Leistung) des kontrollierten Netzwerksegments erhöhen und somit den Prozentsatz der kontrollierten Knoten erhöhen. Dies macht für den DPoA-Konsens keinen Sinn, da die Rechenleistung des Knotens keinen Einfluss auf die Blockchain-Netzwerkentscheidungen hat.")]),e._v(" "),r("h2",{attrs:{id:"implementierung-des-dpoa-konsenses-in-ibax"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#implementierung-des-dpoa-konsenses-in-ibax"}},[e._v("#")]),e._v(" Implementierung des DPoA-Konsenses in IBAX")]),e._v(" "),r("h3",{attrs:{id:"honor-knoten"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#honor-knoten"}},[e._v("#")]),e._v(" Honor-knoten")]),e._v(" "),r("p",[e._v("In IBAX können nur Ehrenknoten neue Blöcke generieren, die das Blockchain-Netzwerk und das verteilte Hauptbuch aufrechterhalten.")]),e._v(" "),r("p",[e._v("Die Liste der Ehrenknoten wird in der Blockchain-Registrierung geführt. Die Reihenfolge der Knoten bestimmt die Reihenfolge, in der Knoten neue Blöcke erzeugen.")]),e._v(" "),r("h3",{attrs:{id:"leader-knoten"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#leader-knoten"}},[e._v("#")]),e._v(" Leader-Knoten")]),e._v(" "),r("p",[e._v("Die folgende Formel bestimmt den aktuellen "),r("strong",[e._v("Leader-Knoten")]),e._v(", also einen Knoten, der zum aktuellen Zeitpunkt einen neuen Block erzeugen muss.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("leader = ((time - first) / step) % nodes\n")])])]),r("blockquote",[r("p",[e._v("Führer")])]),e._v(" "),r("p",[e._v("Aktueller Führungsknoten.")]),e._v(" "),r("blockquote",[r("p",[e._v("Zeit")])]),e._v(" "),r("p",[e._v("Aktuelle Uhrzeit (UNIX).")]),e._v(" "),r("blockquote",[r("p",[e._v("zuerst")])]),e._v(" "),r("p",[e._v("Generierungszeit des ersten Blocks (UNIX).")]),e._v(" "),r("blockquote",[r("p",[e._v("Schritt")])]),e._v(" "),r("p",[e._v("Anzahl der Sekunden im Blockgenerierungsintervall.")]),e._v(" "),r("blockquote",[r("p",[e._v("Knoten")])]),e._v(" "),r("p",[e._v("Gesamtzahl der Ehrenknoten.")]),e._v(" "),r("h3",{attrs:{id:"generierung-neuer-blocke"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#generierung-neuer-blocke"}},[e._v("#")]),e._v(" Generierung neuer Blöcke")]),e._v(" "),r("p",[e._v("Neue Blöcke werden durch einen [Leader-Knoten] (#Leader-Node) des aktuellen Zeitintervalls generiert. Bei jedem Zeitintervall wird die Führungsrolle an den nächsten Ehrenknoten aus der Liste der Ehrenknoten weitergegeben.\n"),r("img",{attrs:{src:"/block-generation.png",alt:"avatar"}})]),e._v(" "),r("p",[e._v("a) Schritte zur Generierung neuer Blöcke")]),e._v(" "),r("p",[e._v("Die Hauptschritte zum Generieren eines neuen Blocks sind wie folgt:")]),e._v(" "),r("ol",[r("li",[r("p",[e._v("Sammelt alle neuen Transaktionen aus der Transaktionswarteschlange des Knotens;")])]),e._v(" "),r("li",[r("p",[e._v("Führt Transaktionen einzeln aus. Ungültige oder nicht ausführbare Transaktionen werden zurückgewiesen;")])]),e._v(" "),r("li",[r("p",[e._v("Prüft, ob die "),r("RouterLink",{attrs:{to:"/de/reference/platform-parameters.html#configure-the-generation-of-blocks"}},[e._v("Blockgenerierungsgrenzen")]),e._v(" konform sind;")],1)]),e._v(" "),r("li",[r("p",[e._v("Generiert einen Block mit gültigen Transaktionen und signiert ihn mit dem privaten Schlüssel des Ehrenknotens durch den ECDSA-Algorithmus;")])]),e._v(" "),r("li",[r("p",[e._v("Sendet diesen Block an andere Ehrenknoten.")])])]),e._v(" "),r("p",[e._v("b) Überprüfung neuer Blöcke")]),e._v(" "),r("p",[e._v("Schritte zum Verifizieren neuer Blöcke auf anderen Ehrenknoten:")]),e._v(" "),r("ol",[r("li",[r("p",[e._v("Empfangen Sie einen neuen Block und überprüfen Sie:")]),e._v(" "),r("p",[e._v("– ob der neue Block vom Leader-Knoten eines aktuellen Intervalls generiert wurde;")]),e._v(" "),r("p",[e._v("– ob es keine anderen Blöcke gibt, die vom Leader-Knoten eines aktuellen Intervalls generiert werden;")]),e._v(" "),r("p",[e._v("– ob der neue Block richtig signiert ist.")])]),e._v(" "),r("li",[r("p",[e._v("Führen Sie Transaktionen aus dem Block einzeln aus. Überprüfen Sie, ob die Transaktionen erfolgreich und innerhalb der "),r("RouterLink",{attrs:{to:"/de/reference/platform-parameters.html#configure-the-generation-of-blocks"}},[e._v("Blockgenerierungsgrenzen")]),e._v(" ausgeführt werden.")],1)]),e._v(" "),r("li",[r("p",[e._v("Fügen Sie den Block hinzu oder lehnen Sie ihn ab, abhängig vom vorherigen Schritt:")]),e._v(" "),r("p",[e._v("– Wenn die Blockvalidierung erfolgreich ist, fügen Sie den neuen Block zur Blockchain des aktuellen Knotens hinzu;")]),e._v(" "),r("p",[e._v("– Wenn die Blockvalidierung fehlgeschlagen ist, lehnen Sie den Block ab und senden Sie eine "),r("strong",[e._v("Bad Block")]),e._v("-Transaktion;")]),e._v(" "),r("p",[e._v("– Wenn der Ehrenknoten, der diesen ungültigen Block erstellt hat, weiterhin fehlerhafte Blöcke generiert, kann er gesperrt oder von der Liste der Ehrenknoten ausgeschlossen werden.")])])]),e._v(" "),r("h3",{attrs:{id:"gabeln"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#gabeln"}},[e._v("#")]),e._v(" Gabeln")]),e._v(" "),r("p",[e._v("Ein "),r("strong",[e._v("Fork")]),e._v(" ist eine alternative Version der Blockchain, die einen oder mehrere Blöcke enthält, die unabhängig vom Rest der Blockchain generiert wurden.")]),e._v(" "),r("p",[e._v("Forks treten normalerweise auf, wenn ein Teil des Netzwerks desynchronisiert wird. Faktoren, die wahrscheinlich zu Forks führen, sind hohe Netzwerklatenz, absichtliche oder unbeabsichtigte Verletzung von Zeitlimits, Zeitdesynchronisierung an Knoten. Wenn Netzwerkknoten eine signifikante geografische Verteilung haben, muss das Blockgenerierungsintervall erhöht werden.")]),e._v(" "),r("p",[e._v("Forks werden aufgelöst, indem die längste Blockchain-Regel befolgt wird. Wenn zwei Blockchain-Versionen erkannt werden, setzen die Honor-Knoten die kürzere zurück und akzeptieren die längere.")]),e._v(" "),r("p",[r("img",{attrs:{src:"/block-fork-resolution.png",alt:"avatar"}})])])}),[],!1,null,null,null);n.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/17.85070bd8.js b/assets/js/17.abddf148.js similarity index 99% rename from assets/js/17.85070bd8.js rename to assets/js/17.abddf148.js index af43b49..c33a2d2 100644 --- a/assets/js/17.85070bd8.js +++ b/assets/js/17.abddf148.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{397:function(e,n,r){"use strict";r.r(n);var t=r(51),a=Object(t.a)({},(function(){var e=this,n=e.$createElement,r=e._self._c||n;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"faq"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[e._v("#")]),e._v(" FAQ")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#frage-1"}},[e._v("1. Bitte IBAX kurz beschreiben?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-2"}},[e._v("2. Ist IBax für Bitcoin, Ethereum oder andere Blockchains anwendbar?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-3"}},[e._v("3.Was sind die Hauptunterschiede zwischen IBax und anderen öffentlichen Blockchain-Plattformen mit integrierten Mechanismen zur Ausführung von Smart Contracts?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-4"}},[e._v("4. Haben Sie eine eigene Kryptowährung?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-5"}},[e._v("5. Was ist ein Ehrenknoten und wer kann ihn pflegen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-6"}},[e._v("6. Was ist ein Plattform-Ökosystem?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-7"}},[e._v("7. Wer kann ein Ökosystem schaffen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-8"}},[e._v("8. Wie werden Nutzer Mitglieder des Ökosystems?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-9"}},[e._v("9. Kann ein Benutzer mehrere Ökosysteme erstellen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-10"}},[e._v("10. Was ist eine Plattformanwendung?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-11"}},[e._v("11. Mit welcher Programmiersprache wird die Anwendung erstellt?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-12"}},[e._v("12. Welche Software wird verwendet, um Anwendungen zu erstellen und mit Benutzern zu interagieren?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-13"}},[e._v("13. Can platform contracts use third-party APIs to access data?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-14"}},[e._v("14. Kann der in der Blockchain gespeicherte Vertrag geändert werden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-15"}},[e._v("15. What is smart law?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-16"}},[e._v("16. Kann der Vertrag andere Verträge aufrufen und ausführen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-17"}},[e._v("17. Does the application run with a master contract?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-18"}},[e._v("18. Kann die Anwendung für verschiedene Sprachen lokalisiert werden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-19"}},[e._v("19. Kann ich eine Seite erstellen, ohne eine Vorlagensprache zu verwenden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-20"}},[e._v("20. Are the pages stored in the blockchain?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-21"}},[e._v("21. Welche Arten von Datenbanken können für Vertragsoperationen verwendet werden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-22"}},[e._v("22. Wie verwaltet man den Zugriff auf die Daten in der Datenbanktabelle?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#question-23"}},[e._v("23. Kann eine Anwendung in einem Ökosystem Daten mit anderen Anwendungen aus einem anderen Ökosystem austauschen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-24"}},[e._v("24. Sollten alle Anwendungen in einem neuen Ökosystem von Grund auf neu geschrieben werden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-25"}},[e._v("25. Fallen Gebühren für den Betrieb von Anwendungen an?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-26"}},[e._v("26. Wer bezahlt den Betrieb von Anwendungen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-27"}},[e._v("27. Wie können die Anwendungen im Ökosystem vor Angriffen aufgrund von Schwachstellen geschützt werden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-28"}},[e._v("28. Welche neuen Funktionen werden in zukünftigen Plänen implementiert")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-29"}},[e._v("29. Wie kann die Funktionsfähigkeit nachgewiesen werden?")])])]),e._v(" "),r("h3",{attrs:{id:"_1-bitte-ibax-kurz-beschreiben"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_1-bitte-ibax-kurz-beschreiben"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-1"}},[e._v("1. Bitte IBAX kurz beschreiben?")])]),e._v(" "),r("ul",[r("li",[e._v("Es handelt sich um eine Blockchain-Plattform, die darauf abzielt, ein digitales Ökosystem aufzubauen, das auf einer integrierten Anwendungsentwicklungsumgebung basiert, die über ein mehrstufiges Berechtigungssystem zur Verwaltung der Zugriffsrechte auf Daten, Schnittstellen und Smart Contracts verfügt.")])]),e._v(" "),r("h3",{attrs:{id:"_2-ist-ibax-fur-bitcoin-ethereum-oder-andere-blockchains-anwendbar"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_2-ist-ibax-fur-bitcoin-ethereum-oder-andere-blockchains-anwendbar"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-2"}},[e._v("2. Ist IBax für Bitcoin, Ethereum oder andere Blockchains anwendbar?")])]),e._v(" "),r("ul",[r("li",[e._v("Unzutreffend. IBax ist auf der Grundlage einer eigenen ursprünglichen Blockchain aufgebaut.")])]),e._v(" "),r("h3",{attrs:{id:"_3-was-sind-die-hauptunterschiede-zwischen-ibax-und-anderen-offentlichen-blockchain-plattformen-mit-integrierten-mechanismen-zur-ausfuhrung-von-smart-contracts"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_3-was-sind-die-hauptunterschiede-zwischen-ibax-und-anderen-offentlichen-blockchain-plattformen-mit-integrierten-mechanismen-zur-ausfuhrung-von-smart-contracts"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-3"}},[e._v("3.Was sind die Hauptunterschiede zwischen IBax und anderen öffentlichen Blockchain-Plattformen mit integrierten Mechanismen zur Ausführung von Smart Contracts?")])]),e._v(" "),r("ul",[r("li",[e._v("IBax hat einzigartige Eigenschaften, die in den oben genannten Blockchains nicht zu finden sind:\n"),r("ul",[r("li",[e._v("verfügt über eine integrierte Anwendungsentwicklungsumgebung in einer einzigen Client-Software;\n"),r("ul",[r("li",[e._v("die spezielle Template-Sprache Logicor zur Seitengestaltung und die Vertragssprache Needle sind aufeinander abgestimmt;")]),e._v(" "),r("li",[e._v("verfügt über ein mehrstufiges Berechtigungssystem zur Verwaltung der Zugriffsrechte auf Daten, Schnittstellen und Smart Contracts, in dem Berechtigungen an Mitglieder, Rollen und Verträge vergeben werden können;")]),e._v(" "),r("li",[e._v("das Ökosystem, das verwendet wird, um Blockchain-Anwendungen und autonome Softwareumgebungen zu erstellen, mit denen Benutzer mit ihnen interagieren können;")]),e._v(" "),r("li",[e._v("Das Rechtssystem, eine Reihe von Regeln, die in Smart Laws (dedizierte Smart Contracts) niedergeschrieben sind, regelt die Beziehung zwischen Plattformbenutzern und definiert den Prozess der Änderung von Protokollparametern zur Problemlösung.")])])])])])]),e._v(" "),r("h3",{attrs:{id:"_4-haben-sie-eine-eigene-kryptowahrung"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_4-haben-sie-eine-eigene-kryptowahrung"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-4"}},[e._v("4.Haben Sie eine eigene Kryptowährung?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, IBax verwendet seinen eigenen Token, IBXC.")])]),e._v(" "),r("h3",{attrs:{id:"_5-was-ist-ein-ehrenknoten-und-wer-kann-ihn-pflegen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_5-was-ist-ein-ehrenknoten-und-wer-kann-ihn-pflegen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-5"}},[e._v("5. Was ist ein Ehrenknoten und wer kann ihn pflegen?")])]),e._v(" "),r("ul",[r("li",[e._v("Der Ehrenknoten ist der Netzwerkknoten, der befugt ist, Transaktionen zu überprüfen und neue Blöcke zu generieren.")]),e._v(" "),r("li",[e._v("Jeder Netzwerkknoten mit ausreichender Verarbeitungsleistung und Fehlertoleranz kann ein Ehrenknoten werden. IBax verwendet einen Proof of Authority (PoA) Konsensmechanismus. Knoten können basierend auf Ökosystemabstimmungen zu Verifizierungsknoten werden, aber nur Ökosysteme, die vom Token-Eigentümer der Plattform nachweislich über normale Betriebsfähigkeiten verfügen, können an einer solchen Abstimmung teilnehmen. Mit diesem Autorisierungsalgorithmus wird der Masterknoten von großen Ökosystemen betrieben, da es in ihrem besten Interesse ist, den Netzwerkbetrieb aufrechtzuerhalten.")])]),e._v(" "),r("h3",{attrs:{id:"_6-was-ist-ein-plattform-okosystem"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_6-was-ist-ein-plattform-okosystem"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-6"}},[e._v("6. Was ist ein Plattform-Ökosystem?")])]),e._v(" "),r("ul",[r("li",[e._v("An ecosystem is actually an autonomous software environment used to create blockchain applications and the operations of users in them.")])]),e._v(" "),r("h3",{attrs:{id:"_7-wer-kann-ein-okosystem-schaffen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_7-wer-kann-ein-okosystem-schaffen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-7"}},[e._v("7. Wer kann ein Ökosystem schaffen?")])]),e._v(" "),r("ul",[r("li",[e._v("Alle Benutzer der Plattform können neue Ökosysteme erstellen.")])]),e._v(" "),r("h3",{attrs:{id:"_8-wie-werden-nutzer-mitglieder-des-okosystems"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_8-wie-werden-nutzer-mitglieder-des-okosystems"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-8"}},[e._v("8. Wie werden Nutzer Mitglieder des Ökosystems?")])]),e._v(" "),r("ul",[r("li",[e._v("Benutzer können als Mitglieder eines beliebigen bestehenden Ökosystems registriert werden. Die Ökosystemstrategie definiert verschiedene Mitgliederaufnahmeverfahren, die wichtige öffentliche Informationen des neuen Ökosystems in einem speziellen Ökosystemkatalog veröffentlichen.")])]),e._v(" "),r("h3",{attrs:{id:"_9-kann-ein-benutzer-mehrere-okosysteme-erstellen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_9-kann-ein-benutzer-mehrere-okosysteme-erstellen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-9"}},[e._v("9. Kann ein Benutzer mehrere Ökosysteme erstellen?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, jeder Benutzer kann beliebig viele Ökosysteme erstellen und auch Mitglied mehrerer Ökosysteme werden.")])]),e._v(" "),r("h3",{attrs:{id:"_10-what-is-a-platform-application"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_10-what-is-a-platform-application"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-10"}},[e._v("10. What is a platform application?")])]),e._v(" "),r("ul",[r("li",[e._v("Eine Anwendung ist ein vollständiges Softwareprodukt, das eine Funktion oder einen Dienst implementiert. Die Anwendung besteht aus Datenbanktabellen, Verträgen und Seiten.")])]),e._v(" "),r("h3",{attrs:{id:"_11-mit-welcher-programmiersprache-wird-die-anwendung-erstellt"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_11-mit-welcher-programmiersprache-wird-die-anwendung-erstellt"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-11"}},[e._v("11. Mit welcher Programmiersprache wird die Anwendung erstellt?")])]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Der Vertrag ist in der Needle-Sprache verfasst, die vom Plattformteam entwickelt wird. Weitere Informationen finden Sie unter: "),r("RouterLink",{attrs:{to:"/de/topics/script.html"}},[e._v("Smart Contract")]),e._v(".")],1)]),e._v(" "),r("li",[r("p",[e._v("Die Seite ist in der Sprache Logicor geschrieben, einer Seitenvorlagensprache. Weitere Informationen finden Sie unter: "),r("RouterLink",{attrs:{to:"/de/topics/templates2.html"}},[e._v("Template Language")]),e._v(".")],1)])]),e._v(" "),r("h3",{attrs:{id:"_12-welche-software-wird-verwendet-um-anwendungen-zu-erstellen-und-mit-benutzern-zu-interagieren"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_12-welche-software-wird-verwendet-um-anwendungen-zu-erstellen-und-mit-benutzern-zu-interagieren"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-12"}},[e._v("12.Welche Software wird verwendet, um Anwendungen zu erstellen und mit Benutzern zu interagieren?")])]),e._v(" "),r("ul",[r("li",[e._v("Das Anwendungsprogramm wird in Weaver geschrieben und ausgeführt, es ist keine weitere Software erforderlich.")])]),e._v(" "),r("h3",{attrs:{id:"_13-konnen-plattformvertrage-apis-von-drittanbietern-verwenden-um-auf-daten-zuzugreifen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_13-konnen-plattformvertrage-apis-von-drittanbietern-verwenden-um-auf-daten-zuzugreifen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-13"}},[e._v("13. Können Plattformverträge APIs von Drittanbietern verwenden, um auf Daten zuzugreifen?")])]),e._v(" "),r("ul",[r("li",[e._v("Nein, der Vertrag kann nur direkt auf die in der Blockchain gespeicherten Daten zugreifen. "),r("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#virtual-private-ecosystem"}},[e._v("CLB")]),e._v(" wird verwendet, um externe Datenquellen zu verarbeiten.")],1)]),e._v(" "),r("h3",{attrs:{id:"_14-kann-der-in-der-blockchain-gespeicherte-vertrag-geandert-werden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_14-kann-der-in-der-blockchain-gespeicherte-vertrag-geandert-werden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-14"}},[e._v("14. Kann der in der Blockchain gespeicherte Vertrag geändert werden?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, der Vertrag kann geändert werden. Die Erlaubnis, den Vertrag zu ändern, wird von seinem Ersteller festgelegt, der die Erlaubnis erteilen kann, Änderungen zu verweigern oder die Erlaubnis zu erteilen, Änderungen mit Verträgen oder Mitgliedern vorzunehmen, oder eine komplexe Reihe von Bedingungen im Smart Law konfiguriert.")]),e._v(" "),r("li",[e._v("Weaver bietet Zugriff auf alle Versionen von Verträgen.")])]),e._v(" "),r("h3",{attrs:{id:"_15-was-ist-intelligentes-recht"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_15-was-ist-intelligentes-recht"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-15"}},[e._v("15. Was ist intelligentes Recht?")])]),e._v(" "),r("ul",[r("li",[e._v("Smart Law ist ein Vertrag, der darauf abzielt, den Betrieb konventioneller Verträge zu kontrollieren und einzuschränken und dadurch die Aktivitäten der Mitglieder des Ökosystems zu kontrollieren und einzuschränken.")]),e._v(" "),r("li",[e._v("Eine Reihe intelligenter Gesetze kann als Rechtssystem eines Ökosystems betrachtet werden.")])]),e._v(" "),r("h3",{attrs:{id:"_16-kann-der-vertrag-andere-vertrage-aufrufen-und-ausfuhren"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_16-kann-der-vertrag-andere-vertrage-aufrufen-und-ausfuhren"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-16"}},[e._v("16. Kann der Vertrag andere Verträge aufrufen und ausführen?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, der Vertrag kann andere Verträge durch direkte Adressierung aufrufen und Parameter dafür bereitstellen oder den Vertrag per Linknamen aufrufen. Weitere Informationen finden Sie unter: "),r("RouterLink",{attrs:{to:"/de/topics/script.html"}},[e._v("Smart Contract")]),e._v(".")],1)]),e._v(" "),r("h3",{attrs:{id:"_17-lauft-die-anwendung-mit-einem-rahmenvertrag"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_17-lauft-die-anwendung-mit-einem-rahmenvertrag"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-17"}},[e._v("17. Läuft die Anwendung mit einem Rahmenvertrag?")])]),e._v(" "),r("ul",[r("li",[e._v("Nein, der Vertrag ist ein eigenständiges Programmmodul, das bestimmte Funktionen erfüllt. Jeder Vertrag ist so konfiguriert, dass er bestimmte Daten empfängt, dann die Richtigkeit dieser Daten überprüft und einige Operationen ausführt, die in der Datenbank als Transaktionen aufgezeichnet werden.")])]),e._v(" "),r("h3",{attrs:{id:"_18-kann-die-anwendung-fur-verschiedene-sprachen-lokalisiert-werden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_18-kann-die-anwendung-fur-verschiedene-sprachen-lokalisiert-werden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-18"}},[e._v("18. Kann die Anwendung für verschiedene Sprachen lokalisiert werden?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, Weaver hat einen eingebauten Lokalisierungsunterstützungsmechanismus und kann Seiten in jeder Sprache erstellen.")])]),e._v(" "),r("h3",{attrs:{id:"_19-kann-ich-eine-seite-erstellen-ohne-eine-vorlagensprache-zu-verwenden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_19-kann-ich-eine-seite-erstellen-ohne-eine-vorlagensprache-zu-verwenden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-19"}},[e._v("19. Kann ich eine Seite erstellen, ohne eine Vorlagensprache zu verwenden?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, dies kann mit der Plattform "),r("RouterLink",{attrs:{to:"/de/reference/api2.html"}},[e._v("RESTful API")]),e._v(" v2 erfolgen.")],1)]),e._v(" "),r("h3",{attrs:{id:"_20-are-the-pages-stored-in-the-blockchain"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_20-are-the-pages-stored-in-the-blockchain"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-20"}},[e._v("20. Are the pages stored in the blockchain?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, die Seiten und Verträge werden in der Blockchain gespeichert, wodurch sie nicht gefälscht werden können.")])]),e._v(" "),r("h3",{attrs:{id:"_21-welche-arten-von-datenbanken-konnen-fur-vertragsoperationen-verwendet-werden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_21-welche-arten-von-datenbanken-konnen-fur-vertragsoperationen-verwendet-werden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-21"}},[e._v("21. Welche Arten von Datenbanken können für Vertragsoperationen verwendet werden?")])]),e._v(" "),r("ul",[r("li",[e._v("Derzeit wird PostgreSQL verwendet.")])]),e._v(" "),r("h3",{attrs:{id:"_22-wie-verwaltet-man-den-zugriff-auf-die-daten-in-der-datenbanktabelle"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_22-wie-verwaltet-man-den-zugriff-auf-die-daten-in-der-datenbanktabelle"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-22"}},[e._v("22. Wie verwaltet man den Zugriff auf die Daten in der Datenbanktabelle?")])]),e._v(" "),r("ul",[r("li",[e._v("You can add new fields, new entries, or change the permissions of the data in columns for ecosystem members, roles, or specified contract configurations. Except for contracts created by performing specific operations.")])]),e._v(" "),r("h3",{attrs:{id:"_23-kann-eine-anwendung-in-einem-okosystem-daten-mit-anderen-anwendungen-aus-einem-anderen-okosystem-austauschen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_23-kann-eine-anwendung-in-einem-okosystem-daten-mit-anderen-anwendungen-aus-einem-anderen-okosystem-austauschen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-23"}},[e._v("23. Kann eine Anwendung in einem Ökosystem Daten mit anderen Anwendungen aus einem anderen Ökosystem austauschen?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, der Datenaustausch kann über globale Datentabellen organisiert werden, die für alle Ökosysteme gelten.")])]),e._v(" "),r("h3",{attrs:{id:"_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-24"}},[e._v("24. Should all applications in a new ecosystem be written from scratch?")])]),e._v(" "),r("ul",[r("li",[e._v("No, every new ecosystem has some applications out of the box:\n"),r("ul",[r("li",[e._v("A mechanism to manage ecosystem members and roles;")]),e._v(" "),r("li",[e._v("Issuing and configuring other tokens;")]),e._v(" "),r("li",[e._v("A voting system;")]),e._v(" "),r("li",[e._v("A notification system;")]),e._v(" "),r("li",[e._v("A messenger between ecosystem members.")])])])]),e._v(" "),r("p",[e._v("These applications can be edited and configured to meet the special needs of any ecosystem.")]),e._v(" "),r("h3",{attrs:{id:"_25-fallen-gebuhren-fur-den-betrieb-von-anwendungen-an"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_25-fallen-gebuhren-fur-den-betrieb-von-anwendungen-an"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-25"}},[e._v("25. Fallen Gebühren für den Betrieb von Anwendungen an?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, die Nutzung der Ressourcen des Ehrenknotens erfordert eine Zahlung auf der Plattform.")])]),e._v(" "),r("h3",{attrs:{id:"_26-wer-bezahlt-den-betrieb-von-anwendungen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_26-wer-bezahlt-den-betrieb-von-anwendungen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-26"}},[e._v("26. Wer bezahlt den Betrieb von Anwendungen?")])]),e._v(" "),r("p",[e._v("Für entsprechende Kontoadressen gibt es derzeit 4 Möglichkeiten, den Betrieb von Anwendungen zu bezahlen:")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Bei Vertragsanrufern wird die Gebühr standardmäßig vom Konto des Nutzers bezahlt, wenn der Nutzer den Vertrag anruft;")])]),e._v(" "),r("li",[r("p",[e._v("Für vertragsbindende Parteien wird die Gebühr von dem vom Vertragsersteller angegebenen verbindlichen Konto gezahlt;")])]),e._v(" "),r("li",[r("p",[e._v("Für Ersteller von Ökosystemen wird die Gebühr für alle Anträge innerhalb eines Ökosystems jeweils vom Ersteller des Ökosystems bezahlt;")])]),e._v(" "),r("li",[r("p",[e._v("Exklusive Ökosystem-Brieftasche. Jedes Ökosystem hat ein exklusives Konto. Wenn der Ersteller des Ökosystems es aktiviert hat, wird die Gebühr aller Anwendungen innerhalb des Ökosystems von diesem Konto bezahlt.")])])]),e._v(" "),r("p",[e._v("Reihenfolge der Zahlungspriorität: Exklusive Ökosystem-Geldbörse > Ökosystem-Ersteller > Vertragsverbindliche Partei > Vertragsaufrufer.")]),e._v(" "),r("h3",{attrs:{id:"_27-wie-konnen-die-anwendungen-im-okosystem-vor-angriffen-aufgrund-von-schwachstellen-geschutzt-werden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_27-wie-konnen-die-anwendungen-im-okosystem-vor-angriffen-aufgrund-von-schwachstellen-geschutzt-werden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-27"}},[e._v("27. Wie können die Anwendungen im Ökosystem vor Angriffen aufgrund von Schwachstellen geschützt werden?")])]),e._v(" "),r("ul",[r("li",[e._v("Das Plattformteam weiß auch, dass es keine Möglichkeit gibt, Fehler im Anwendungscode vollständig zu vermeiden, insbesondere wenn man bedenkt, dass die Anwendung von jedem Benutzer geschrieben werden kann. Aus diesem Grund haben wir uns entschieden, einen Mechanismus zu etablieren, um die Folgen der Ausnutzung von Schwachstellen zu beseitigen. Das Rechtssystem kann den Angriffsvorgang der Anwendung stoppen und einige Transaktionen verwenden, um den ursprünglichen Zustand wiederherzustellen. Das Rechtssystem legt die Genehmigungen zum Abschluss solcher Verträge und die Abstimmungsverfahren für die Erteilung dieser Genehmigungen fest.")])]),e._v(" "),r("h3",{attrs:{id:"_28-welche-neuen-funktionen-werden-in-zukunftigen-planen-implementiert"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_28-welche-neuen-funktionen-werden-in-zukunftigen-planen-implementiert"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-28"}},[e._v("28. Welche neuen Funktionen werden in zukünftigen Plänen implementiert?")])]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Visueller Smart-Contract-Designer;")])]),e._v(" "),r("li",[r("p",[e._v("Unterstützung für hybride Datenbanken (SQL und NoSQL);")])]),e._v(" "),r("li",[r("p",[e._v("Parallele Multithread-Verarbeitung von Transaktionen aus verschiedenen Ökosystemen;")])]),e._v(" "),r("li",[r("p",[e._v("Führen Sie ressourcenintensive Berechnungen auf dem Client durch;")])]),e._v(" "),r("li",[r("p",[e._v("Ökosystem-Hosting und Rechenleistungsaustausch;")])]),e._v(" "),r("li",[r("p",[e._v("Untergeordnete Knoten, speichern nur einige Blöcke auf dem Server;")])]),e._v(" "),r("li",[r("p",[e._v("Semantische Referenzen (Ontologie) werden verwendet, um den Betrieb von Daten in der Plattform zu vereinheitlichen.")])])]),e._v(" "),r("h3",{attrs:{id:"_29-wie-kann-die-funktionsfahigkeit-nachgewiesen-werden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_29-wie-kann-die-funktionsfahigkeit-nachgewiesen-werden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-29"}},[e._v("29. Wie kann die Funktionsfähigkeit nachgewiesen werden?")])]),e._v(" "),r("ul",[r("li",[e._v("Im IBax-Netzwerk wurden eine Reihe von Proof-of-Concept-Projekten und -Fällen implementiert: ein sozialisiertes Steuererhebungs- und elektronisches Rechnungserstellungs- und -zirkulationssystem, ein Überwachungssystem für medizinische Apparate und Instrumente, ein System zur Verhinderung und Verfolgung von Fälschungen, ein Finanzierungs- und Überwachungssystem, a Abstimmungs-/Umfragesystem, Unternehmensregistrierung, Handelsfinanzierungstools, Vertragsverwaltungssystem für die Registrierung von Vermögenswerten usw.")])])])}),[],!1,null,null,null);n.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{399:function(e,n,r){"use strict";r.r(n);var t=r(51),a=Object(t.a)({},(function(){var e=this,n=e.$createElement,r=e._self._c||n;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"faq"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[e._v("#")]),e._v(" FAQ")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"#frage-1"}},[e._v("1. Bitte IBAX kurz beschreiben?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-2"}},[e._v("2. Ist IBax für Bitcoin, Ethereum oder andere Blockchains anwendbar?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-3"}},[e._v("3.Was sind die Hauptunterschiede zwischen IBax und anderen öffentlichen Blockchain-Plattformen mit integrierten Mechanismen zur Ausführung von Smart Contracts?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-4"}},[e._v("4. Haben Sie eine eigene Kryptowährung?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-5"}},[e._v("5. Was ist ein Ehrenknoten und wer kann ihn pflegen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-6"}},[e._v("6. Was ist ein Plattform-Ökosystem?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-7"}},[e._v("7. Wer kann ein Ökosystem schaffen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-8"}},[e._v("8. Wie werden Nutzer Mitglieder des Ökosystems?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-9"}},[e._v("9. Kann ein Benutzer mehrere Ökosysteme erstellen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-10"}},[e._v("10. Was ist eine Plattformanwendung?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-11"}},[e._v("11. Mit welcher Programmiersprache wird die Anwendung erstellt?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-12"}},[e._v("12. Welche Software wird verwendet, um Anwendungen zu erstellen und mit Benutzern zu interagieren?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-13"}},[e._v("13. Can platform contracts use third-party APIs to access data?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-14"}},[e._v("14. Kann der in der Blockchain gespeicherte Vertrag geändert werden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-15"}},[e._v("15. What is smart law?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-16"}},[e._v("16. Kann der Vertrag andere Verträge aufrufen und ausführen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-17"}},[e._v("17. Does the application run with a master contract?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-18"}},[e._v("18. Kann die Anwendung für verschiedene Sprachen lokalisiert werden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-19"}},[e._v("19. Kann ich eine Seite erstellen, ohne eine Vorlagensprache zu verwenden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-20"}},[e._v("20. Are the pages stored in the blockchain?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-21"}},[e._v("21. Welche Arten von Datenbanken können für Vertragsoperationen verwendet werden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-22"}},[e._v("22. Wie verwaltet man den Zugriff auf die Daten in der Datenbanktabelle?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#question-23"}},[e._v("23. Kann eine Anwendung in einem Ökosystem Daten mit anderen Anwendungen aus einem anderen Ökosystem austauschen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-24"}},[e._v("24. Sollten alle Anwendungen in einem neuen Ökosystem von Grund auf neu geschrieben werden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-25"}},[e._v("25. Fallen Gebühren für den Betrieb von Anwendungen an?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-26"}},[e._v("26. Wer bezahlt den Betrieb von Anwendungen?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-27"}},[e._v("27. Wie können die Anwendungen im Ökosystem vor Angriffen aufgrund von Schwachstellen geschützt werden?")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-28"}},[e._v("28. Welche neuen Funktionen werden in zukünftigen Plänen implementiert")])]),e._v(" "),r("li",[r("a",{attrs:{href:"#frage-29"}},[e._v("29. Wie kann die Funktionsfähigkeit nachgewiesen werden?")])])]),e._v(" "),r("h3",{attrs:{id:"_1-bitte-ibax-kurz-beschreiben"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_1-bitte-ibax-kurz-beschreiben"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-1"}},[e._v("1. Bitte IBAX kurz beschreiben?")])]),e._v(" "),r("ul",[r("li",[e._v("Es handelt sich um eine Blockchain-Plattform, die darauf abzielt, ein digitales Ökosystem aufzubauen, das auf einer integrierten Anwendungsentwicklungsumgebung basiert, die über ein mehrstufiges Berechtigungssystem zur Verwaltung der Zugriffsrechte auf Daten, Schnittstellen und Smart Contracts verfügt.")])]),e._v(" "),r("h3",{attrs:{id:"_2-ist-ibax-fur-bitcoin-ethereum-oder-andere-blockchains-anwendbar"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_2-ist-ibax-fur-bitcoin-ethereum-oder-andere-blockchains-anwendbar"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-2"}},[e._v("2. Ist IBax für Bitcoin, Ethereum oder andere Blockchains anwendbar?")])]),e._v(" "),r("ul",[r("li",[e._v("Unzutreffend. IBax ist auf der Grundlage einer eigenen ursprünglichen Blockchain aufgebaut.")])]),e._v(" "),r("h3",{attrs:{id:"_3-was-sind-die-hauptunterschiede-zwischen-ibax-und-anderen-offentlichen-blockchain-plattformen-mit-integrierten-mechanismen-zur-ausfuhrung-von-smart-contracts"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_3-was-sind-die-hauptunterschiede-zwischen-ibax-und-anderen-offentlichen-blockchain-plattformen-mit-integrierten-mechanismen-zur-ausfuhrung-von-smart-contracts"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-3"}},[e._v("3.Was sind die Hauptunterschiede zwischen IBax und anderen öffentlichen Blockchain-Plattformen mit integrierten Mechanismen zur Ausführung von Smart Contracts?")])]),e._v(" "),r("ul",[r("li",[e._v("IBax hat einzigartige Eigenschaften, die in den oben genannten Blockchains nicht zu finden sind:\n"),r("ul",[r("li",[e._v("verfügt über eine integrierte Anwendungsentwicklungsumgebung in einer einzigen Client-Software;\n"),r("ul",[r("li",[e._v("die spezielle Template-Sprache Logicor zur Seitengestaltung und die Vertragssprache Needle sind aufeinander abgestimmt;")]),e._v(" "),r("li",[e._v("verfügt über ein mehrstufiges Berechtigungssystem zur Verwaltung der Zugriffsrechte auf Daten, Schnittstellen und Smart Contracts, in dem Berechtigungen an Mitglieder, Rollen und Verträge vergeben werden können;")]),e._v(" "),r("li",[e._v("das Ökosystem, das verwendet wird, um Blockchain-Anwendungen und autonome Softwareumgebungen zu erstellen, mit denen Benutzer mit ihnen interagieren können;")]),e._v(" "),r("li",[e._v("Das Rechtssystem, eine Reihe von Regeln, die in Smart Laws (dedizierte Smart Contracts) niedergeschrieben sind, regelt die Beziehung zwischen Plattformbenutzern und definiert den Prozess der Änderung von Protokollparametern zur Problemlösung.")])])])])])]),e._v(" "),r("h3",{attrs:{id:"_4-haben-sie-eine-eigene-kryptowahrung"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_4-haben-sie-eine-eigene-kryptowahrung"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-4"}},[e._v("4.Haben Sie eine eigene Kryptowährung?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, IBax verwendet seinen eigenen Token, IBXC.")])]),e._v(" "),r("h3",{attrs:{id:"_5-was-ist-ein-ehrenknoten-und-wer-kann-ihn-pflegen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_5-was-ist-ein-ehrenknoten-und-wer-kann-ihn-pflegen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-5"}},[e._v("5. Was ist ein Ehrenknoten und wer kann ihn pflegen?")])]),e._v(" "),r("ul",[r("li",[e._v("Der Ehrenknoten ist der Netzwerkknoten, der befugt ist, Transaktionen zu überprüfen und neue Blöcke zu generieren.")]),e._v(" "),r("li",[e._v("Jeder Netzwerkknoten mit ausreichender Verarbeitungsleistung und Fehlertoleranz kann ein Ehrenknoten werden. IBax verwendet einen Proof of Authority (PoA) Konsensmechanismus. Knoten können basierend auf Ökosystemabstimmungen zu Verifizierungsknoten werden, aber nur Ökosysteme, die vom Token-Eigentümer der Plattform nachweislich über normale Betriebsfähigkeiten verfügen, können an einer solchen Abstimmung teilnehmen. Mit diesem Autorisierungsalgorithmus wird der Masterknoten von großen Ökosystemen betrieben, da es in ihrem besten Interesse ist, den Netzwerkbetrieb aufrechtzuerhalten.")])]),e._v(" "),r("h3",{attrs:{id:"_6-was-ist-ein-plattform-okosystem"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_6-was-ist-ein-plattform-okosystem"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-6"}},[e._v("6. Was ist ein Plattform-Ökosystem?")])]),e._v(" "),r("ul",[r("li",[e._v("An ecosystem is actually an autonomous software environment used to create blockchain applications and the operations of users in them.")])]),e._v(" "),r("h3",{attrs:{id:"_7-wer-kann-ein-okosystem-schaffen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_7-wer-kann-ein-okosystem-schaffen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-7"}},[e._v("7. Wer kann ein Ökosystem schaffen?")])]),e._v(" "),r("ul",[r("li",[e._v("Alle Benutzer der Plattform können neue Ökosysteme erstellen.")])]),e._v(" "),r("h3",{attrs:{id:"_8-wie-werden-nutzer-mitglieder-des-okosystems"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_8-wie-werden-nutzer-mitglieder-des-okosystems"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-8"}},[e._v("8. Wie werden Nutzer Mitglieder des Ökosystems?")])]),e._v(" "),r("ul",[r("li",[e._v("Benutzer können als Mitglieder eines beliebigen bestehenden Ökosystems registriert werden. Die Ökosystemstrategie definiert verschiedene Mitgliederaufnahmeverfahren, die wichtige öffentliche Informationen des neuen Ökosystems in einem speziellen Ökosystemkatalog veröffentlichen.")])]),e._v(" "),r("h3",{attrs:{id:"_9-kann-ein-benutzer-mehrere-okosysteme-erstellen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_9-kann-ein-benutzer-mehrere-okosysteme-erstellen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-9"}},[e._v("9. Kann ein Benutzer mehrere Ökosysteme erstellen?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, jeder Benutzer kann beliebig viele Ökosysteme erstellen und auch Mitglied mehrerer Ökosysteme werden.")])]),e._v(" "),r("h3",{attrs:{id:"_10-what-is-a-platform-application"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_10-what-is-a-platform-application"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-10"}},[e._v("10. What is a platform application?")])]),e._v(" "),r("ul",[r("li",[e._v("Eine Anwendung ist ein vollständiges Softwareprodukt, das eine Funktion oder einen Dienst implementiert. Die Anwendung besteht aus Datenbanktabellen, Verträgen und Seiten.")])]),e._v(" "),r("h3",{attrs:{id:"_11-mit-welcher-programmiersprache-wird-die-anwendung-erstellt"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_11-mit-welcher-programmiersprache-wird-die-anwendung-erstellt"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-11"}},[e._v("11. Mit welcher Programmiersprache wird die Anwendung erstellt?")])]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Der Vertrag ist in der Needle-Sprache verfasst, die vom Plattformteam entwickelt wird. Weitere Informationen finden Sie unter: "),r("RouterLink",{attrs:{to:"/de/topics/script.html"}},[e._v("Smart Contract")]),e._v(".")],1)]),e._v(" "),r("li",[r("p",[e._v("Die Seite ist in der Sprache Logicor geschrieben, einer Seitenvorlagensprache. Weitere Informationen finden Sie unter: "),r("RouterLink",{attrs:{to:"/de/topics/templates2.html"}},[e._v("Template Language")]),e._v(".")],1)])]),e._v(" "),r("h3",{attrs:{id:"_12-welche-software-wird-verwendet-um-anwendungen-zu-erstellen-und-mit-benutzern-zu-interagieren"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_12-welche-software-wird-verwendet-um-anwendungen-zu-erstellen-und-mit-benutzern-zu-interagieren"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-12"}},[e._v("12.Welche Software wird verwendet, um Anwendungen zu erstellen und mit Benutzern zu interagieren?")])]),e._v(" "),r("ul",[r("li",[e._v("Das Anwendungsprogramm wird in Weaver geschrieben und ausgeführt, es ist keine weitere Software erforderlich.")])]),e._v(" "),r("h3",{attrs:{id:"_13-konnen-plattformvertrage-apis-von-drittanbietern-verwenden-um-auf-daten-zuzugreifen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_13-konnen-plattformvertrage-apis-von-drittanbietern-verwenden-um-auf-daten-zuzugreifen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-13"}},[e._v("13. Können Plattformverträge APIs von Drittanbietern verwenden, um auf Daten zuzugreifen?")])]),e._v(" "),r("ul",[r("li",[e._v("Nein, der Vertrag kann nur direkt auf die in der Blockchain gespeicherten Daten zugreifen. "),r("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#virtual-private-ecosystem"}},[e._v("CLB")]),e._v(" wird verwendet, um externe Datenquellen zu verarbeiten.")],1)]),e._v(" "),r("h3",{attrs:{id:"_14-kann-der-in-der-blockchain-gespeicherte-vertrag-geandert-werden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_14-kann-der-in-der-blockchain-gespeicherte-vertrag-geandert-werden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-14"}},[e._v("14. Kann der in der Blockchain gespeicherte Vertrag geändert werden?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, der Vertrag kann geändert werden. Die Erlaubnis, den Vertrag zu ändern, wird von seinem Ersteller festgelegt, der die Erlaubnis erteilen kann, Änderungen zu verweigern oder die Erlaubnis zu erteilen, Änderungen mit Verträgen oder Mitgliedern vorzunehmen, oder eine komplexe Reihe von Bedingungen im Smart Law konfiguriert.")]),e._v(" "),r("li",[e._v("Weaver bietet Zugriff auf alle Versionen von Verträgen.")])]),e._v(" "),r("h3",{attrs:{id:"_15-was-ist-intelligentes-recht"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_15-was-ist-intelligentes-recht"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-15"}},[e._v("15. Was ist intelligentes Recht?")])]),e._v(" "),r("ul",[r("li",[e._v("Smart Law ist ein Vertrag, der darauf abzielt, den Betrieb konventioneller Verträge zu kontrollieren und einzuschränken und dadurch die Aktivitäten der Mitglieder des Ökosystems zu kontrollieren und einzuschränken.")]),e._v(" "),r("li",[e._v("Eine Reihe intelligenter Gesetze kann als Rechtssystem eines Ökosystems betrachtet werden.")])]),e._v(" "),r("h3",{attrs:{id:"_16-kann-der-vertrag-andere-vertrage-aufrufen-und-ausfuhren"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_16-kann-der-vertrag-andere-vertrage-aufrufen-und-ausfuhren"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-16"}},[e._v("16. Kann der Vertrag andere Verträge aufrufen und ausführen?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, der Vertrag kann andere Verträge durch direkte Adressierung aufrufen und Parameter dafür bereitstellen oder den Vertrag per Linknamen aufrufen. Weitere Informationen finden Sie unter: "),r("RouterLink",{attrs:{to:"/de/topics/script.html"}},[e._v("Smart Contract")]),e._v(".")],1)]),e._v(" "),r("h3",{attrs:{id:"_17-lauft-die-anwendung-mit-einem-rahmenvertrag"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_17-lauft-die-anwendung-mit-einem-rahmenvertrag"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-17"}},[e._v("17. Läuft die Anwendung mit einem Rahmenvertrag?")])]),e._v(" "),r("ul",[r("li",[e._v("Nein, der Vertrag ist ein eigenständiges Programmmodul, das bestimmte Funktionen erfüllt. Jeder Vertrag ist so konfiguriert, dass er bestimmte Daten empfängt, dann die Richtigkeit dieser Daten überprüft und einige Operationen ausführt, die in der Datenbank als Transaktionen aufgezeichnet werden.")])]),e._v(" "),r("h3",{attrs:{id:"_18-kann-die-anwendung-fur-verschiedene-sprachen-lokalisiert-werden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_18-kann-die-anwendung-fur-verschiedene-sprachen-lokalisiert-werden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-18"}},[e._v("18. Kann die Anwendung für verschiedene Sprachen lokalisiert werden?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, Weaver hat einen eingebauten Lokalisierungsunterstützungsmechanismus und kann Seiten in jeder Sprache erstellen.")])]),e._v(" "),r("h3",{attrs:{id:"_19-kann-ich-eine-seite-erstellen-ohne-eine-vorlagensprache-zu-verwenden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_19-kann-ich-eine-seite-erstellen-ohne-eine-vorlagensprache-zu-verwenden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-19"}},[e._v("19. Kann ich eine Seite erstellen, ohne eine Vorlagensprache zu verwenden?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, dies kann mit der Plattform "),r("RouterLink",{attrs:{to:"/de/reference/api2.html"}},[e._v("RESTful API")]),e._v(" v2 erfolgen.")],1)]),e._v(" "),r("h3",{attrs:{id:"_20-are-the-pages-stored-in-the-blockchain"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_20-are-the-pages-stored-in-the-blockchain"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-20"}},[e._v("20. Are the pages stored in the blockchain?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, die Seiten und Verträge werden in der Blockchain gespeichert, wodurch sie nicht gefälscht werden können.")])]),e._v(" "),r("h3",{attrs:{id:"_21-welche-arten-von-datenbanken-konnen-fur-vertragsoperationen-verwendet-werden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_21-welche-arten-von-datenbanken-konnen-fur-vertragsoperationen-verwendet-werden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-21"}},[e._v("21. Welche Arten von Datenbanken können für Vertragsoperationen verwendet werden?")])]),e._v(" "),r("ul",[r("li",[e._v("Derzeit wird PostgreSQL verwendet.")])]),e._v(" "),r("h3",{attrs:{id:"_22-wie-verwaltet-man-den-zugriff-auf-die-daten-in-der-datenbanktabelle"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_22-wie-verwaltet-man-den-zugriff-auf-die-daten-in-der-datenbanktabelle"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-22"}},[e._v("22. Wie verwaltet man den Zugriff auf die Daten in der Datenbanktabelle?")])]),e._v(" "),r("ul",[r("li",[e._v("You can add new fields, new entries, or change the permissions of the data in columns for ecosystem members, roles, or specified contract configurations. Except for contracts created by performing specific operations.")])]),e._v(" "),r("h3",{attrs:{id:"_23-kann-eine-anwendung-in-einem-okosystem-daten-mit-anderen-anwendungen-aus-einem-anderen-okosystem-austauschen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_23-kann-eine-anwendung-in-einem-okosystem-daten-mit-anderen-anwendungen-aus-einem-anderen-okosystem-austauschen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-23"}},[e._v("23. Kann eine Anwendung in einem Ökosystem Daten mit anderen Anwendungen aus einem anderen Ökosystem austauschen?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, der Datenaustausch kann über globale Datentabellen organisiert werden, die für alle Ökosysteme gelten.")])]),e._v(" "),r("h3",{attrs:{id:"_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-24"}},[e._v("24. Should all applications in a new ecosystem be written from scratch?")])]),e._v(" "),r("ul",[r("li",[e._v("No, every new ecosystem has some applications out of the box:\n"),r("ul",[r("li",[e._v("A mechanism to manage ecosystem members and roles;")]),e._v(" "),r("li",[e._v("Issuing and configuring other tokens;")]),e._v(" "),r("li",[e._v("A voting system;")]),e._v(" "),r("li",[e._v("A notification system;")]),e._v(" "),r("li",[e._v("A messenger between ecosystem members.")])])])]),e._v(" "),r("p",[e._v("These applications can be edited and configured to meet the special needs of any ecosystem.")]),e._v(" "),r("h3",{attrs:{id:"_25-fallen-gebuhren-fur-den-betrieb-von-anwendungen-an"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_25-fallen-gebuhren-fur-den-betrieb-von-anwendungen-an"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-25"}},[e._v("25. Fallen Gebühren für den Betrieb von Anwendungen an?")])]),e._v(" "),r("ul",[r("li",[e._v("Ja, die Nutzung der Ressourcen des Ehrenknotens erfordert eine Zahlung auf der Plattform.")])]),e._v(" "),r("h3",{attrs:{id:"_26-wer-bezahlt-den-betrieb-von-anwendungen"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_26-wer-bezahlt-den-betrieb-von-anwendungen"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-26"}},[e._v("26. Wer bezahlt den Betrieb von Anwendungen?")])]),e._v(" "),r("p",[e._v("Für entsprechende Kontoadressen gibt es derzeit 4 Möglichkeiten, den Betrieb von Anwendungen zu bezahlen:")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Bei Vertragsanrufern wird die Gebühr standardmäßig vom Konto des Nutzers bezahlt, wenn der Nutzer den Vertrag anruft;")])]),e._v(" "),r("li",[r("p",[e._v("Für vertragsbindende Parteien wird die Gebühr von dem vom Vertragsersteller angegebenen verbindlichen Konto gezahlt;")])]),e._v(" "),r("li",[r("p",[e._v("Für Ersteller von Ökosystemen wird die Gebühr für alle Anträge innerhalb eines Ökosystems jeweils vom Ersteller des Ökosystems bezahlt;")])]),e._v(" "),r("li",[r("p",[e._v("Exklusive Ökosystem-Brieftasche. Jedes Ökosystem hat ein exklusives Konto. Wenn der Ersteller des Ökosystems es aktiviert hat, wird die Gebühr aller Anwendungen innerhalb des Ökosystems von diesem Konto bezahlt.")])])]),e._v(" "),r("p",[e._v("Reihenfolge der Zahlungspriorität: Exklusive Ökosystem-Geldbörse > Ökosystem-Ersteller > Vertragsverbindliche Partei > Vertragsaufrufer.")]),e._v(" "),r("h3",{attrs:{id:"_27-wie-konnen-die-anwendungen-im-okosystem-vor-angriffen-aufgrund-von-schwachstellen-geschutzt-werden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_27-wie-konnen-die-anwendungen-im-okosystem-vor-angriffen-aufgrund-von-schwachstellen-geschutzt-werden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-27"}},[e._v("27. Wie können die Anwendungen im Ökosystem vor Angriffen aufgrund von Schwachstellen geschützt werden?")])]),e._v(" "),r("ul",[r("li",[e._v("Das Plattformteam weiß auch, dass es keine Möglichkeit gibt, Fehler im Anwendungscode vollständig zu vermeiden, insbesondere wenn man bedenkt, dass die Anwendung von jedem Benutzer geschrieben werden kann. Aus diesem Grund haben wir uns entschieden, einen Mechanismus zu etablieren, um die Folgen der Ausnutzung von Schwachstellen zu beseitigen. Das Rechtssystem kann den Angriffsvorgang der Anwendung stoppen und einige Transaktionen verwenden, um den ursprünglichen Zustand wiederherzustellen. Das Rechtssystem legt die Genehmigungen zum Abschluss solcher Verträge und die Abstimmungsverfahren für die Erteilung dieser Genehmigungen fest.")])]),e._v(" "),r("h3",{attrs:{id:"_28-welche-neuen-funktionen-werden-in-zukunftigen-planen-implementiert"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_28-welche-neuen-funktionen-werden-in-zukunftigen-planen-implementiert"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-28"}},[e._v("28. Welche neuen Funktionen werden in zukünftigen Plänen implementiert?")])]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Visueller Smart-Contract-Designer;")])]),e._v(" "),r("li",[r("p",[e._v("Unterstützung für hybride Datenbanken (SQL und NoSQL);")])]),e._v(" "),r("li",[r("p",[e._v("Parallele Multithread-Verarbeitung von Transaktionen aus verschiedenen Ökosystemen;")])]),e._v(" "),r("li",[r("p",[e._v("Führen Sie ressourcenintensive Berechnungen auf dem Client durch;")])]),e._v(" "),r("li",[r("p",[e._v("Ökosystem-Hosting und Rechenleistungsaustausch;")])]),e._v(" "),r("li",[r("p",[e._v("Untergeordnete Knoten, speichern nur einige Blöcke auf dem Server;")])]),e._v(" "),r("li",[r("p",[e._v("Semantische Referenzen (Ontologie) werden verwendet, um den Betrieb von Daten in der Plattform zu vereinheitlichen.")])])]),e._v(" "),r("h3",{attrs:{id:"_29-wie-kann-die-funktionsfahigkeit-nachgewiesen-werden"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_29-wie-kann-die-funktionsfahigkeit-nachgewiesen-werden"}},[e._v("#")]),e._v(" "),r("span",{attrs:{id:"frage-29"}},[e._v("29. Wie kann die Funktionsfähigkeit nachgewiesen werden?")])]),e._v(" "),r("ul",[r("li",[e._v("Im IBax-Netzwerk wurden eine Reihe von Proof-of-Concept-Projekten und -Fällen implementiert: ein sozialisiertes Steuererhebungs- und elektronisches Rechnungserstellungs- und -zirkulationssystem, ein Überwachungssystem für medizinische Apparate und Instrumente, ein System zur Verhinderung und Verfolgung von Fälschungen, ein Finanzierungs- und Überwachungssystem, a Abstimmungs-/Umfragesystem, Unternehmensregistrierung, Handelsfinanzierungstools, Vertragsverwaltungssystem für die Registrierung von Vermögenswerten usw.")])])])}),[],!1,null,null,null);n.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/19.142e1664.js b/assets/js/19.0e2cfbc3.js similarity index 99% rename from assets/js/19.142e1664.js rename to assets/js/19.0e2cfbc3.js index c17d09b..9876ed6 100644 --- a/assets/js/19.142e1664.js +++ b/assets/js/19.0e2cfbc3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{399:function(e,t,n){"use strict";n.r(t);var s=n(51),a=Object(s.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"bereitstellung-eines-ibax-netzwerks"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#bereitstellung-eines-ibax-netzwerks"}},[e._v("#")]),e._v(" Bereitstellung eines IBAX-Netzwerks")]),e._v(" "),n("p",[e._v("In diesem Abschnitt zeigen wir Ihnen, wie Sie Ihr eigenes Blockchain-Netzwerk bereitstellen.")]),e._v(" "),n("h2",{attrs:{id:"ein-bereitstellungsbeispiel"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#ein-bereitstellungsbeispiel"}},[e._v("#")]),e._v(" Ein Bereitstellungsbeispiel")]),e._v(" "),n("p",[e._v("Als Beispiel wird ein Blockchain-Netzwerk mit den folgenden drei Knoten bereitgestellt.")]),e._v(" "),n("p",[e._v("Drei Netzwerkknoten:")]),e._v(" "),n("ul",[n("li",[e._v("Knoten 1 ist der erste Knoten im Blockchain-Netzwerk, der neue Blöcke generieren und Transaktionen von mit ihm verbundenen Clients senden kann;\n"),n("ul",[n("li",[e._v("Knoten 2 ist ein weiterer Ehrenknoten, der neue Blöcke generieren und Transaktionen von mit ihm verbundenen Clients senden kann;")]),e._v(" "),n("li",[e._v("Knoten 3 ist ein Wächterknoten, der keine neuen Blöcke generieren kann, aber Transaktionen von mit ihm verbundenen Clients senden kann.")])])])]),e._v(" "),n("p",[e._v("Konfigurationen der drei bereitzustellenden Knoten:")]),e._v(" "),n("ul",[n("li",[e._v("Jeder Knoten verwendet seine eigene PostgreSQL-Datenbanksysteminstanz;")]),e._v(" "),n("li",[e._v("Jeder Knoten verwendet seine eigene Centrifugo-Dienstinstanz;")]),e._v(" "),n("li",[e._v("Das serverseitige Github-Backend wird auf demselben Host bereitgestellt wie andere Backend-Komponenten.")])]),e._v(" "),n("p",[e._v("Die von den Knoten verwendeten Beispieladressen und Ports sind in der folgenden Tabelle beschrieben:")]),e._v(" "),n("table",[n("thead",[n("tr",[n("th",{staticStyle:{"text-align":"center"}},[e._v("Node")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("Component")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("IP & port")])])]),e._v(" "),n("tbody",[n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("PostgreSQL")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("127.0.0.1:5432")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("Centrifugo")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.1:8000")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (TCP service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.1:7078")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (API service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.1:7079")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("2")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("PostgreSQL")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("127.0.0.1:5432")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("2")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("Centrifugo")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.2:8000")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("2")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (TCP service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.2:7078")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("2")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (API service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.2:7079")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("3")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("PostgreSQL")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("127.0.0.1:5432")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("3")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("Centrifugo")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.3:8000")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("3")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (TCP service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.3:7078")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("3")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (API service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.3:7079")])])])]),e._v(" "),n("h2",{attrs:{id:"bereitstellungsphase"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#bereitstellungsphase"}},[e._v("#")]),e._v(" Bereitstellungsphase")]),e._v(" "),n("p",[e._v("Ihr eigenes Blockchain-Netzwerk muss in mehreren Schritten bereitgestellt werden:")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#bereitstellung-eines-ibax-netzwerk"}},[e._v("Bereitstellung eines IBAX-Netzwerks")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#ein-bereitstellungsbeispiel"}},[e._v("Ein Bereitstellungsbeispiel")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#bereitstellungsphase"}},[e._v("Bereitstellungsphase")])]),e._v(" "),n("li",[e._v("[Serverbereitstellung](#serverbereitstellung\n"),n("ul",[n("li",[n("a",{attrs:{href:"#stellen-sie-den-ersten-knoten-bereit%5D"}},[e._v("Stellen Sie den ersten Knoten bereit")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#abh%C3%A4ngigkeiten-und-umgebungseinstellungen"}},[e._v("Abhängigkeiten und Umgebungseinstellungen")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#sudo"}},[e._v("sudo")])])])]),e._v(" "),n("li",[n("a",{attrs:{href:"#golang"}},[e._v("Golang")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#postgresql"}},[e._v("PostgreSQL")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#centrifugo"}},[e._v("Centrifugo")])]),e._v(" "),n("li",[e._v("[Verzeichnisaufbau](#verzeichnisaufbau")]),e._v(" "),n("li",[n("a",{attrs:{href:"#eine-datenbank-erstellen"}},[e._v("Eine Datenbank erstellen")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#konfigurieren-centrifugo"}},[e._v("Konfigurieren Centrifugo")])]),e._v(" "),n("li",[e._v("[Go-ibax installieren](#go-ibax installieren)")]),e._v(" "),n("li",[n("a",{attrs:{href:"#konfigurieren-sie-den-ersten-Knoten"}},[e._v("Konfigurieren Sie den ersten Knoten")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#initiieren-sie-den-ersten-knotenserver"}},[e._v("Initiieren Sie den ersten Knotenserver")])])])]),e._v(" "),n("li",[n("a",{attrs:{href:"#andere-knoten-bereitstellen%5D"}},[e._v("Andere Knoten bereitstellen")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#knoten-2"}},[e._v("Knoten 2")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#knoten-3"}},[e._v("Knoten 3")])])])]),e._v(" "),n("li",[n("a",{attrs:{href:"#front-end-bereitstellung"}},[e._v("Front-End-Bereitstellung")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#software-voraussetzungen"}},[e._v("Software-Voraussetzungen")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#erstellen-sie-eine-weaver-anwendung"}},[e._v("Erstellen Sie eine Weaver-Anwendung")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#F%C3%BCgen-sie-die-Konfigurationsdatei-f%C3%BCr-das-Blockchain-netzwerk-hinzu%5D"}},[e._v("Fügen Sie die Konfigurationsdatei für das Blockchain-Netzwerk hinzu")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#erstellen-sie-eine-weaver-webanwendung"}},[e._v("Erstellen Sie eine Weaver-Webanwendung")])])])]),e._v(" "),n("li",[n("a",{attrs:{href:"#konfigurieren-sie-das-blockchain-netzwerk"}},[e._v("Konfigurieren Sie das Blockchain-Netzwerk")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#erstellen-sie-das-creator-konto"}},[e._v("Erstellen Sie das Creator-Konto")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#importieren-sie-anwendungen,rollen-und-vorlagen"}},[e._v("Importieren Sie Anwendungen, Rollen und Vorlagen")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#F%C3%BCgen-sie-den-ersten-knoten-zur-knotenliste-hinzu"}},[e._v("Fügen Sie den ersten Knoten zur Knotenliste hinzu")])])])]),e._v(" "),n("li",[n("a",{attrs:{href:"#f%C3%BCge-weitere-ehrenknoten-hinzu"}},[e._v("Füge weitere Ehrenknoten hinzu")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#F%C3%BCgen-sie-der-consensus-rollengruppe-mitglieder-hinzu"}},[e._v("Fügen Sie der Consensus-Rollengruppe Mitglieder hinzu")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#erstellen-sie-das-eigent%C3%BCmerkonto-f%C3%BCr-andere-knoten"}},[e._v("Erstellen Sie das Eigentümerkonto für andere Knoten")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#weisen-sie-dem-knoteneigent%C3%BCmer-die-rolle-validierer-zu"}},[e._v("Weisen Sie dem Knoteneigentümer die Rolle „Validierer“ zu")])])])])])])]),e._v(" "),n("h2",{attrs:{id:"serverbereitstellung"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#serverbereitstellung"}},[e._v("#")]),e._v(" Serverbereitstellung")]),e._v(" "),n("h3",{attrs:{id:"stellen-sie-den-ersten-knoten-bereit"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#stellen-sie-den-ersten-knoten-bereit"}},[e._v("#")]),e._v(" Stellen Sie den ersten Knoten bereit")]),e._v(" "),n("p",[e._v("Der erste Knoten ist ein besonderer, da er für den Start des Blockchain-Netzwerks unerlässlich ist. Der erste Block der Blockchain wird vom ersten Knoten generiert, und alle anderen Knoten würden die Blockchain von ihm herunterladen. Der Eigentümer des ersten Knotens ist der Plattformersteller.")]),e._v(" "),n("h3",{attrs:{id:"abhangigkeiten-und-umgebungseinstellungen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#abhangigkeiten-und-umgebungseinstellungen"}},[e._v("#")]),e._v(" Abhängigkeiten und Umgebungseinstellungen")]),e._v(" "),n("h4",{attrs:{id:"sudo"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sudo"}},[e._v("#")]),e._v(" sudo")]),e._v(" "),n("p",[e._v("Alle Befehle von Debian 9 müssen als Nicht-Root-Benutzer ausgeführt werden. Einige Systembefehle erfordern jedoch zur Ausführung Superuser-Berechtigungen. Standardmäßig ist sudo nicht auf Debian 9 installiert, Sie müssen es zuerst installieren.")]),e._v(" "),n("ol",[n("li",[e._v("Superuser werden.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Aktualisieren Sie Ihr System.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" update -y "),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" upgrade -y "),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" dist-upgrade -y\n")])])]),n("ol",{attrs:{start:"3"}},[n("li",[e._v("Sudo installieren")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" -y\n")])])]),n("ol",{attrs:{start:"4"}},[n("li",[e._v("Fügen Sie Ihren Benutzer der sudo-Gruppe hinzu.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("usermod")]),e._v(" -a -G "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" user\n")])])]),n("ol",{attrs:{start:"5"}},[n("li",[e._v("Nach dem Neustart werden die Änderungen wirksam.")])]),e._v(" "),n("h3",{attrs:{id:"golang"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#golang"}},[e._v("#")]),e._v(" Golang")]),e._v(" "),n("p",[e._v("Installieren Sie Go gemäß der "),n("a",{attrs:{href:"https://golang.org/doc/install#tarball",target:"_blank",rel:"noopener noreferrer"}},[e._v("Official Documents"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("ol",[n("li",[e._v("Laden Sie die neueste stabile Version von Go (> 1.10.x) von der [offiziellen Golang-Website] (https://golang.org/dl/) oder über die Befehlszeile herunter:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("wget")]),e._v(" https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Verwenden Sie tar, um den Tarball in das Verzeichnis "),n("code",[e._v("/usr/local")]),e._v(" zu extrahieren.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz\n")])])]),n("ol",{attrs:{start:"3"}},[n("li",[e._v("Fügen Sie "),n("code",[e._v("/usr/local/go/bin")]),e._v(" zu den PATH-Umgebungsvariablen hinzu (zu finden unter "),n("code",[e._v("/etc/profile")]),e._v(" oder "),n("code",[e._v("$HOME/.profile")]),e._v(").")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token assign-left variable"}},[n("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("PATH")])]),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("$PATH")]),e._v(":/usr/local/go/bin\n")])])]),n("ol",[n("li",[e._v("Führen Sie die "),n("code",[e._v("source")]),e._v(" aus, damit die Änderungen wirksam werden, zum Beispiel:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("source")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("$HOME")]),e._v("/.profile\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Temporäre Dateien löschen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" go1.11.2.linux-amd64.tar.gz\n")])])]),n("h3",{attrs:{id:"postgresql"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#postgresql"}},[e._v("#")]),e._v(" PostgreSQL")]),e._v(" "),n("ol",[n("li",[e._v("Installieren Sie PostgreSQL (> v.10) and psql:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -y postgresql\n")])])]),n("h3",{attrs:{id:"centrifugo"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#centrifugo"}},[e._v("#")]),e._v(" Centrifugo")]),e._v(" "),n("ol",[n("li",[e._v("Download Centrifugo V.1.8.0 aus "),n("a",{attrs:{href:"https://github.com/centrifugal/centrifugo/releases/",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),n("OutboundLink")],1),e._v(" oder über die Kommandozeile:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("wget")]),e._v(" https://github.com/centrifugal/centrifugo/releases/download/v1.8.0/centrifugo-1.8.0-linux-amd64.zip "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("unzip")]),e._v(" centrifugo-1.8.0-linux-amd64.zip "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" centrifugo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mv")]),e._v(" centrifugo-1.8.0-linux-amd64/* centrifugo/\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Temporäre Dateien löschen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -R centrifugo-1.8.0-linux-amd64 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" centrifugo-1.8.0-linux-amd64.zip\n")])])]),n("h3",{attrs:{id:"verzeichnisaufbau"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#verzeichnisaufbau"}},[e._v("#")]),e._v(" Verzeichnisaufbau")]),e._v(" "),n("p",[e._v("Für das Debian 9-System wird empfohlen, die gesamte von der Blockchain-Plattform verwendete Software in einem separaten Verzeichnis zu speichern.\nHier wird das Verzeichnis "),n("code",[e._v("/opt/backenddir")]),e._v(" verwendet, aber Sie können jedes Verzeichnis verwenden. Bitte ändern Sie in diesem Fall alle Befehle und Konfigurationsdateien entsprechend.")]),e._v(" "),n("ol",[n("li",[e._v("Erstellen Sie ein Verzeichnis für die Blockchain-Plattform:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" /opt/backenddir\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Machen Sie Ihren Benutzer zum Eigentümer des Verzeichnisses:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" user /opt/backenddir/\n")])])]),n("ol",{attrs:{start:"3"}},[n("li",[e._v("Erstellen Sie Unterverzeichnisse für Centrifugo, go-ibax und Knotendaten. Alle Knotendaten werden in einem Verzeichnis namens "),n("code",[e._v("nodeX")]),e._v(" gespeichert, wobei "),n("code",[e._v("X")]),e._v(" die Knotennummer ist. Gemäß dem bereitzustellenden Knoten ist "),n("code",[e._v("node1")]),e._v(" Knoten 1, "),n("code",[e._v("node2")]),e._v(" ist Knoten 2 und so weiter.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" /opt/backenddir/go-ibax "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" /opt/backenddir/go-ibax/node1 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" /opt/backenddir/centrifugo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n")])])]),n("h3",{attrs:{id:"erstellen-sie-eine-datenbank"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#erstellen-sie-eine-datenbank"}},[e._v("#")]),e._v(" Erstellen Sie eine Datenbank")]),e._v(" "),n("ol",[n("li",[e._v("Ändern Sie das Benutzerpasswort postgres auf das Standardpasswort "),n("em",[e._v("123456")]),e._v(". Sie können Ihr eigenes Passwort festlegen, aber Sie müssen es in der Knotenkonfigurationsdatei "),n("em",[e._v("config.toml")]),e._v(" ändern.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" -u postgres psql -c "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v("\"ALTER USER postgres WITH PASSWORD '123456'\"")]),e._v("\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Erstellen Sie eine aktuelle Zustandsdatenbank für den Knoten, zum Beispiel "),n("strong",[e._v("chaindb")]),e._v(":")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" -u postgres psql -c "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"CREATE DATABASE chaindb"')]),e._v("\n")])])]),n("h3",{attrs:{id:"konfigurieren-centrifugo"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-centrifugo"}},[e._v("#")]),e._v(" Konfigurieren Centrifugo")]),e._v(" "),n("ol",[n("li",[e._v("Erstellen Sie die Centrifugo-Konfigurationsdatei:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("echo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('\'{"secret":"CENT_SECRET"}\'')]),e._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" /opt/backenddir/centrifugo/config.json\n")])])]),n("p",[e._v("Sie können Ihr eigenes "),n("em",[e._v("Geheimnis")]),e._v(" festlegen, aber Sie müssen es auch in der Knotenkonfigurationsdatei "),n("em",[e._v("config.toml")]),e._v(" ändern.")]),e._v(" "),n("h3",{attrs:{id:"go-ibax-installieren"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#go-ibax-installieren"}},[e._v("#")]),e._v(" go-ibax installieren")]),e._v(" "),n("ol",[n("li",[e._v("Github-Backend von GitHub herunterladen:")]),e._v(" "),n("li",[e._v("Kopieren Sie die go-ibax-Binärdatei in das Verzeichnis "),n("code",[e._v("/opt/backenddir/go-ibax")]),e._v(". Wenn Sie den standardmäßigen Go-Arbeitsbereich verwenden, befinden sich die Binärdateien im Verzeichnis "),n("code",[e._v("$HOME/go/bin")]),e._v(" :")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("cp")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("$HOME")]),e._v("/go/bin/go-ibax /opt/backenddir/go-ibax\n")])])]),n("h3",{attrs:{id:"konfigurieren-sie-den-ersten-knoten"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-den-ersten-knoten"}},[e._v("#")]),e._v(" Konfigurieren Sie den ersten Knoten")]),e._v(" "),n("ol",{attrs:{start:"3"}},[n("li",[e._v("Erstellen Sie die Konfigurationsdatei für Knoten 1:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax config "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --dataDir"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node1 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --dbName"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("chaindb "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --centSecret"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"CENT_SECRET"')]),e._v(" --centUrl"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("http://192.168.1.1:8000 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --httpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.1 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --httpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7079")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --tcpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.1 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --tcpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7078")]),e._v("\n")])])]),n("ol",{attrs:{start:"4"}},[n("li",[e._v("Generieren Sie die Schlüssel von Knoten 1, einschließlich der öffentlichen und privaten Schlüssel des Knotens und des Kontos:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax generateKeys "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node1/config.toml\n")])])]),n("ol",{attrs:{start:"5"}},[n("li",[e._v("Generieren Sie den ersten Block:")])]),e._v(" "),n("blockquote",[n("p",[e._v("Hinweis")]),e._v(" "),n("p",[e._v("Wenn Sie Ihr eigenes Blockchain-Netzwerk erstellen möchten, müssen Sie die Option "),n("code",[e._v("--test=true")]),e._v(" verwenden. Andernfalls können Sie kein neues Konto erstellen.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax generateFirstBlock "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node1/config.toml "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --test"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("true\n")])])]),n("ol",{attrs:{start:"6"}},[n("li",[e._v("Initialisieren Sie die Datenbank:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax initDatabase "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node1/config.toml\n")])])]),n("h3",{attrs:{id:"initiiere-den-ersten-node-server"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#initiiere-den-ersten-node-server"}},[e._v("#")]),e._v(" Initiiere den ersten Node-Server")]),e._v(" "),n("p",[e._v("Um den ersten Knotenserver zu starten, müssen Sie die folgenden zwei Dienste starten:")]),e._v(" "),n("ul",[n("li",[e._v("centrifugo")]),e._v(" "),n("li",[e._v("go-ibax")])]),e._v(" "),n("p",[e._v("Wenn Sie mit diesen Dateien "),n("a",{attrs:{href:"#https://wiki.debian.org/systemd/Services"}},[e._v("Dienste")]),e._v(" nicht erstellen konnten, können Sie Binärdateien aus Verzeichnissen in verschiedenen Konsolen ausführen.")]),e._v(" "),n("ol",[n("li",[e._v("Lauf centrifugo:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/centrifugo/centrifugo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n -a "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.1 -p "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("8000")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config /opt/backenddir/centrifugo/config.json\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Lauf go-ibax:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax start "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node1/config.toml\n")])])]),n("h2",{attrs:{id:"andere-knoten-bereitstellen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#andere-knoten-bereitstellen"}},[e._v("#")]),e._v(" Andere Knoten bereitstellen")]),e._v(" "),n("p",[e._v("Obwohl die Bereitstellung aller anderen Knoten (Knoten 2 und Knoten 3) der ersten ähnlich ist, gibt es drei Unterschiede:")]),e._v(" "),n("ul",[n("li",[e._v("Sie müssen den ersten Block nicht generieren. Aber es muss von Knoten 1 in das aktuelle Knotendatenverzeichnis kopiert werden;")]),e._v(" "),n("li",[e._v("Der Knoten muss Blöcke von Knoten 1 herunterladen, indem er die Option "),n("code",[e._v("--nodesAddr")]),e._v(" konfiguriert;")]),e._v(" "),n("li",[e._v("Der Knoten muss seine eigenen Adressen und Ports verwenden.")])]),e._v(" "),n("h3",{attrs:{id:"knoten-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#knoten-2"}},[e._v("#")]),e._v(" Knoten 2")]),e._v(" "),n("p",[e._v("Befolgen Sie die nachstehenden Betriebsanweisungen:")]),e._v(" "),n("ol",[n("li",[n("a",{attrs:{href:"#dependencies-and-environment-settings"}},[e._v("Abhängigkeiten und Umgebungseinstellungen")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#create-a-database"}},[e._v("Datenbank erstellen")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#Zentrifuge"}},[e._v("Zentrifuge")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#install-go-ibax"}},[e._v("go-ibax installieren")])]),e._v(" "),n("li",[e._v("Erstellen Sie die Konfigurationsdatei für Knoten 2:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/go-ibax config "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--dataDir"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node2 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--dbName"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("chaindb "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--centSecret"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"CENT_SECRET"')]),e._v(" --centUrl"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("http://192.168.1.2:8000 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--httpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.2 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--httpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7079")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--tcpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.2 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--tcpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7078")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--nodesAddr"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.1\n")])])]),n("ol",{attrs:{start:"6"}},[n("li",[e._v("Kopieren Sie die erste Blockdatei auf Knoten 2. Sie können diese Operation beispielsweise auf Knoten 2 über scp ausführen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("scp")]),e._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node2/\n")])])]),n("ol",{attrs:{start:"7"}},[n("li",[e._v("Generieren Sie die Schlüssel von Knoten 2, einschließlich der öffentlichen und privaten Schlüssel des Knotens und des Kontos:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/go-ibax generateKeys "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node2/config.toml\n")])])]),n("ol",{attrs:{start:"8"}},[n("li",[e._v("Starten Sie die Datenbank:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" ./go-ibax initDatabase --config"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("node2/config.toml\n")])])]),n("ol",{attrs:{start:"9"}},[n("li",[e._v("Lauf centrifugo:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/centrifugo/centrifugo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n-a "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.2 -p "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("8000")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),n("ol",{attrs:{start:"10"}},[n("li",[e._v("Lauf go-ibax:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax start "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node2/config.toml\n")])])]),n("p",[e._v("As a result, the node downloads the block from the first node. As this node is not a verification node, it cannot generate a new block. Node 2 will be added to the list of verification nodes later.")]),e._v(" "),n("h3",{attrs:{id:"knoten-3"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#knoten-3"}},[e._v("#")]),e._v(" Knoten 3")]),e._v(" "),n("p",[e._v("Befolgen Sie die nachstehenden Betriebsanweisungen:")]),e._v(" "),n("ol",[n("li",[n("p",[n("a",{attrs:{href:"#dependencies-and-environment-settings"}},[e._v("Abhängigkeiten und Umgebungseinstellungen")])])]),e._v(" "),n("li",[n("p",[n("a",{attrs:{href:"#create-a-database"}},[e._v("Datenbank erstellen")])])]),e._v(" "),n("li",[n("p",[n("a",{attrs:{href:"#Zentrifuge"}},[e._v("Zentrifuge")])])]),e._v(" "),n("li",[n("p",[n("a",{attrs:{href:"#install-go-ibax"}},[e._v("go-ibax installieren")])])]),e._v(" "),n("li",[n("p",[e._v("Erstellen Sie die Konfigurationsdatei für Knoten 3:")])])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/go-ibax config "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--dataDir"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node3 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--dbName"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("chaindb "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--centSecret"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"CENT_SECRET"')]),e._v(" --centUrl"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("http://192.168.1.3:8000 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--httpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.3 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--httpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7079")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--tcpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.3 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--tcpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7078")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--nodesAddr"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.1\n")])])]),n("ol",{attrs:{start:"6"}},[n("li",[e._v("Kopieren Sie die erste Blockdatei auf Knoten 3. Sie können diese Operation beispielsweise auf Knoten 3 über scp ausführen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("scp")]),e._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node3/\n")])])]),n("p",[e._v("7.Generieren Sie den Schlüssel von Knoten 3, einschließlich der öffentlichen und privaten Schlüssel des Knotens und des Kontos:")]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/go-ibax generateKeys "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node3/config.toml\n")])])]),n("p",[e._v("8.Initiieren Sie die Datenbank:")]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" ./go-ibax initDatabase --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("node3/config.toml\n")])])]),n("p",[e._v("9.Lauf centrifugo:")]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/centrifugo/centrifugo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n-a "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.3 -p "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("8000")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),n("p",[e._v("10.Lauf go-ibax:")]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/go-ibax start "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node3/config.toml\n")])])]),n("p",[e._v("Als Ergebnis lädt der Knoten den Block vom ersten Knoten herunter. Da dieser Knoten kein Verifizierungsknoten ist, kann er keinen neuen Block erzeugen. Der Client kann mit dem Knoten verbunden sein und Transaktionen an das Netzwerk senden.")]),e._v(" "),n("h2",{attrs:{id:"front-end-bereitstellung"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#front-end-bereitstellung"}},[e._v("#")]),e._v(" Front-End-Bereitstellung")]),e._v(" "),n("p",[e._v("Erst nach der Installation von "),n("strong",[e._v("GNOME GUI")]),e._v(" auf Debian 9 (Stretch) 64-Bit Official Release kann der Govis-Client mit dem "),n("code",[e._v("Yarn")]),e._v("-Paketmanager erstellt werden.")]),e._v(" "),n("h3",{attrs:{id:"softwarevoraussetzungen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#softwarevoraussetzungen"}},[e._v("#")]),e._v(" Softwarevoraussetzungen")]),e._v(" "),n("ol",[n("li",[e._v("Laden Sie Node.js LTS Version 8.11 von der offiziellen Website von Node.js oder über die Befehlszeile herunter:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sL https://deb.nodesource.com/setup_8.x "),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" -E "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("bash")]),e._v("\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Installieren Node.js:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -y nodejs\n")])])]),n("ol",[n("li",[e._v("Laden Sie Yarn Version 1.7.0 aus dem "),n("a",{attrs:{href:"https://github.com/yarnpkg/yarn/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),n("OutboundLink")],1),e._v("-Repository von Garn oder über die Befehlszeile herunter:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("wget")]),e._v(" https://github.com/yarnpkg/yarn/releases/download/v1.7.0/yarn_1.7.0_all.deb\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Installieren Yarn:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" dpkg -i yarn_1.7.0_all.deb "),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" yarn_1.7.0_all.deb\n")])])]),n("h3",{attrs:{id:"erstellen-sie-eine-weaver-anwendung"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#erstellen-sie-eine-weaver-anwendung"}},[e._v("#")]),e._v(" Erstellen Sie eine Weaver-Anwendung")]),e._v(" "),n("ol",[n("li",[e._v("Laden Sie die neueste Version von Weaver vom Github-Frontend über Git herunter:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone https://github.com/ibax-io/ibax-front.git\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Installieren Sie Weaver-Abhängigkeiten über Yarn:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir/ibax-front/ "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v("\n")])])]),n("h3",{attrs:{id:"fugen-sie-die-konfigurationsdatei-fur-das-blockchain-netzwerk-hinzu"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#fugen-sie-die-konfigurationsdatei-fur-das-blockchain-netzwerk-hinzu"}},[e._v("#")]),e._v(" Fügen Sie die Konfigurationsdatei für das Blockchain-Netzwerk hinzu")]),e._v(" "),n("ol",[n("li",[e._v("Erstellen Sie eine "),n("em",[e._v("settings.json")]),e._v("-Datei, die Informationen zur Knotenverbindung enthält:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cp/opt/backenddir/ibax-front/public/settings.json.dist "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n /opt/backenddir/ibax-front/public/public/settings.json\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Bearbeiten Sie die Datei "),n("em",[e._v("settings.json")]),e._v(" in einem beliebigen Texteditor und fügen Sie die erforderlichen Einstellungen in diesem Format hinzu:")])]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v("http://Node_IP-address:Node_HTTP-Port\n")])])]),n("p",[e._v("Beispiele für "),n("em",[e._v("settings.json")]),e._v("-Dateien für die drei Knoten:")]),e._v(" "),n("div",{staticClass:"language-json extra-class"},[n("pre",{pre:!0,attrs:{class:"language-json"}},[n("code",[n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[e._v('"fullNodes"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://192.168.1.1:7079"')]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://192.168.1.2:7079"')]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://192.168.1.3:7079"')]),e._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),n("p",[e._v("Erstellen Sie die Weaver Desktop-Anwendung")]),e._v(" "),n("ol",[n("li",[e._v("Verwenden Sie Garn, um die Desktop-Version zu erstellen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir/ibax-front "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" build-desktop\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Die Desktop-Version wird im AppImage-Suffixformat gepackt:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" release --publish never -l\n")])])]),n("p",[e._v("Nach dem Erstellen kann Ihre Anwendung verwendet werden, aber ihre Verbindungskonfiguration kann nicht geändert werden. Wenn diese Einstellungen geändert werden müssen, muss eine neue Version der Anwendung erstellt werden.")]),e._v(" "),n("h3",{attrs:{id:"weaver-webanwendung-erstellen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#weaver-webanwendung-erstellen"}},[e._v("#")]),e._v(" Weaver-Webanwendung erstellen")]),e._v(" "),n("ol",[n("li",[e._v("Erstellen Sie eine Webanwendung:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir/ibax-front/ "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" build\n")])])]),n("p",[e._v("Nach dem Erstellen werden die verteilbaren Dateien im Verzeichnis /build abgelegt. Sie können einen beliebigen Webserver Ihrer Wahl für die Bereitstellung verwenden, und die Datei "),n("em",[e._v("settings.json")]),e._v(" muss ebenfalls in diesem Verzeichnis abgelegt werden. Beachten Sie, dass bei einer Änderung der Verbindungseinstellungen die Anwendung nicht erneut erstellt werden muss. Bearbeiten Sie stattdessen die Datei "),n("em",[e._v("settings.json")]),e._v(" und starten Sie den Webserver neu.")]),e._v(" "),n("ol",[n("li",[e._v("Für Entwicklungs- oder Testzwecke können Sie den Webserver von Yarn erstellen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" global "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("add")]),e._v(" serve "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" serve -s build\n")])])]),n("p",[e._v("Danach ist Ihre Weaver-Webanwendung an folgendem Ort verfügbar: "),n("code",[e._v("http://localhost:5000")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"konfigurieren-sie-das-blockchain-netzwerk"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-das-blockchain-netzwerk"}},[e._v("#")]),e._v(" Konfigurieren Sie das Blockchain-Netzwerk")]),e._v(" "),n("h3",{attrs:{id:"erstellerkonto-erstellen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#erstellerkonto-erstellen"}},[e._v("#")]),e._v(" Erstellerkonto erstellen")]),e._v(" "),n("p",[e._v("Erstellen Sie ein Konto für den ersten Knoteneigentümer. Dieses Konto ist der Ersteller der neuen Blockchain-Plattform und hat Administratorzugriff.")]),e._v(" "),n("p",[e._v("1.Weaver ausführen;")]),e._v(" "),n("p",[e._v("2.Importieren Sie das vorhandene Konto mit den folgenden Daten:")]),e._v(" "),n("p",[e._v("–Laden Sie die Sicherung des privaten Schlüssels des Knoteneigentümers, der sich in der Datei "),n("code",[e._v("/opt/backenddir/node1/PrivateKey")]),e._v(" befindet.")]),e._v(" "),n("blockquote",[n("p",[e._v("Hinweis")]),e._v(" "),n("p",[e._v("In diesem Verzeichnis befinden sich zwei private Schlüsseldateien. Die Datei "),n("code",[e._v("PrivateKey")]),e._v(" wird verwendet, um das Konto des Knoteneigentümers zu erstellen. Die "),n("code",[e._v("NodePrivateKey")]),e._v("-Datei ist der private Schlüssel des Knotens selbst und muss geheim gehalten werden.")])]),e._v(" "),n("ol",{attrs:{start:"3"}},[n("li",[e._v("Nachdem Sie sich beim Konto angemeldet haben, wählen Sie bitte die Option Ohne Rolle, da zu diesem Zeitpunkt noch keine Rolle erstellt wurde.")])]),e._v(" "),n("h3",{attrs:{id:"anwendungen-rollen-und-vorlagen-importieren"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#anwendungen-rollen-und-vorlagen-importieren"}},[e._v("#")]),e._v(" Anwendungen, Rollen und Vorlagen importieren")]),e._v(" "),n("p",[e._v("Zu diesem Zeitpunkt befindet sich die Blockchain-Plattform in einem leeren Zustand. Sie können es konfigurieren, indem Sie Rollen, Vorlagen und Anwendungsframeworks hinzufügen, die grundlegende Ökosystemfunktionen unterstützen.")]),e._v(" "),n("ol",[n("li",[e._v("Klonen Sie das Anwendungs-Repository;")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone https://github.com/ibax-io/dapps.git\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[n("p",[e._v("Navigieren Sie zu Entwickler> Importieren in Weaver;")])]),e._v(" "),n("li",[n("p",[e._v("Importieren Sie Anwendungen gemäß der folgenden Reihenfolge:")])])]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v(" A./opt/backenddir/dapps/system.json \n B./opt/backenddir/dapps/conditions.json \n C./opt/backenddir/dapps/basic.json \n D./opt/backenddir/dapps/lang_res.json\n")])])]),n("ol",{attrs:{start:"4"}},[n("li",[n("p",[e._v("Navigieren Sie zu Admin > Rolle und klicken Sie auf Standardrolle installieren;")])]),e._v(" "),n("li",[n("p",[e._v("Verlassen Sie das System über das Konfigurationsdateimenü in der oberen rechten Ecke;")])])]),e._v(" "),n("p",[e._v("6.Melden Sie sich als Admin beim System an;")]),e._v(" "),n("ol",{attrs:{start:"7"}},[n("li",[e._v("Navigieren Sie zu Start > Abstimmung > Vorlagenliste und klicken Sie auf Standardvorlage installieren.")])]),e._v(" "),n("h3",{attrs:{id:"den-ersten-knoten-zur-knotenliste-hinzufugen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#den-ersten-knoten-zur-knotenliste-hinzufugen"}},[e._v("#")]),e._v(" Den ersten Knoten zur Knotenliste hinzufügen")]),e._v(" "),n("ol",[n("li",[e._v("Navigieren Sie zu Entwickler > Plattformparameter und klicken Sie auf den Parameter first_nodes;")])]),e._v(" "),n("p",[e._v("2.Geben Sie die Parameter des ersten Blockchain-Netzwerkknotens an.")]),e._v(" "),n("ul",[n("li",[e._v("public_key - The public key of the node is located in the "),n("code",[e._v("/opt/backenddir/node1/NodePublicKey")]),e._v(" file;")])]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('{"api_address":"http://192.168.1.1:7079","public_key":"%node_public_key%","tcp_address":"192.168.1.1:7078"}\n')])])]),n("h2",{attrs:{id:"weitere-ehrenknoten-hinzufugen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#weitere-ehrenknoten-hinzufugen"}},[e._v("#")]),e._v(" Weitere Ehrenknoten hinzufügen")]),e._v(" "),n("h3",{attrs:{id:"mitglieder-zur-consensus-rollengruppe-hinzufugen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#mitglieder-zur-consensus-rollengruppe-hinzufugen"}},[e._v("#")]),e._v(" Mitglieder zur Consensus-Rollengruppe hinzufügen")]),e._v(" "),n("p",[e._v("Standardmäßig können nur Mitglieder in der Konsensus-Rollengruppe (Consensus) an der Abstimmung teilnehmen, die erforderlich ist, um andere Master-Knoten hinzuzufügen. Das bedeutet, dass vor dem Hinzufügen einer neuen Masternode Mitglieder des Ökosystems der Rolle zugewiesen werden müssen.\nIn diesem Abschnitt wird das Konto des Erstellers als einziges Mitglied der Konsens-Rollengruppe festgelegt. In einer Produktionsumgebung muss diese Rolle Plattformmitgliedern zugewiesen werden, die Governance durchführen.")]),e._v(" "),n("ol",[n("li",[e._v("Navigieren Sie zu Start > Rolle und klicken Sie auf Konsens;")])]),e._v(" "),n("p",[e._v("2.Klicken Sie auf Zuweisen, um das Konto des Erstellers der Rolle zuzuweisen.")]),e._v(" "),n("h3",{attrs:{id:"erstellen-sie-das-eigentumerkonto-fur-andere-knoten"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#erstellen-sie-das-eigentumerkonto-fur-andere-knoten"}},[e._v("#")]),e._v(" Erstellen Sie das Eigentümerkonto für andere Knoten")]),e._v(" "),n("ol",[n("li",[n("p",[e._v("Weber ausführen;")])]),e._v(" "),n("li",[n("p",[e._v("Importieren Sie das bestehende Konto mit den folgenden Daten:\n– Laden Sie die Sicherung des privaten Schlüssels des Node-Eigentümers, der sich in der Datei "),n("code",[e._v("/opt/backenddir/node2/PrivateKey")])])]),e._v(" "),n("li",[n("p",[e._v("Nachdem Sie sich beim Konto angemeldet haben, wählen Sie bitte die Option Ohne Rolle, da zu diesem Zeitpunkt noch keine Rolle erstellt wurde.")])]),e._v(" "),n("li",[n("p",[e._v("Navigieren Sie zu Startseite > Persönliche Informationen und klicken Sie auf den Titel der persönlichen Informationen;")])]),e._v(" "),n("li",[n("p",[e._v("Fügen Sie Kontodetails hinzu (persönliche Informationen, Titel, Beschreibung usw.).")])]),e._v(" "),n("li",[n("p",[e._v("Operationen des neuen Knoteneigentümers:")]),e._v(" "),n("ol",[n("li",[e._v("Navigieren Sie zu Start > Prüfer;")]),e._v(" "),n("li",[e._v("Klicken Sie auf Anfrage erstellen und füllen Sie das Antragsformular des Prüferkandidaten aus;")]),e._v(" "),n("li",[e._v("Klicken Sie auf Anfrage senden.")])])]),e._v(" "),n("li",[n("p",[e._v("Operationen des Erstellers:")]),e._v(" "),n("ol",[n("li",[e._v("Melden Sie sich mit einer Konsensrolle an (Consensus);")]),e._v(" "),n("li",[e._v("Navigieren Sie zu Start > Prüfer;")]),e._v(" "),n("li",[e._v("Klicken Sie auf das Symbol „Spielen“, um die Abstimmung gemäß der Anfrage des Kandidaten zu starten;")]),e._v(" "),n("li",[e._v("Navigieren Sie zu Startseite > Abstimmen und klicken Sie auf Abstimmungsstatus aktualisieren;")]),e._v(" "),n("li",[e._v("Klicken Sie auf den Abstimmungsnamen und stimmen Sie für den Knoteneigentümer ab.")])])])]),e._v(" "),n("p",[e._v("Als Ergebnis wird dem Konto des Eigentümers des neuen Knotens die Validator-Rolle zugewiesen, und der neue Knoten wird der Liste der Master-Knoten hinzugefügt.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{397:function(e,t,n){"use strict";n.r(t);var s=n(51),a=Object(s.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"bereitstellung-eines-ibax-netzwerks"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#bereitstellung-eines-ibax-netzwerks"}},[e._v("#")]),e._v(" Bereitstellung eines IBAX-Netzwerks")]),e._v(" "),n("p",[e._v("In diesem Abschnitt zeigen wir Ihnen, wie Sie Ihr eigenes Blockchain-Netzwerk bereitstellen.")]),e._v(" "),n("h2",{attrs:{id:"ein-bereitstellungsbeispiel"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#ein-bereitstellungsbeispiel"}},[e._v("#")]),e._v(" Ein Bereitstellungsbeispiel")]),e._v(" "),n("p",[e._v("Als Beispiel wird ein Blockchain-Netzwerk mit den folgenden drei Knoten bereitgestellt.")]),e._v(" "),n("p",[e._v("Drei Netzwerkknoten:")]),e._v(" "),n("ul",[n("li",[e._v("Knoten 1 ist der erste Knoten im Blockchain-Netzwerk, der neue Blöcke generieren und Transaktionen von mit ihm verbundenen Clients senden kann;\n"),n("ul",[n("li",[e._v("Knoten 2 ist ein weiterer Ehrenknoten, der neue Blöcke generieren und Transaktionen von mit ihm verbundenen Clients senden kann;")]),e._v(" "),n("li",[e._v("Knoten 3 ist ein Wächterknoten, der keine neuen Blöcke generieren kann, aber Transaktionen von mit ihm verbundenen Clients senden kann.")])])])]),e._v(" "),n("p",[e._v("Konfigurationen der drei bereitzustellenden Knoten:")]),e._v(" "),n("ul",[n("li",[e._v("Jeder Knoten verwendet seine eigene PostgreSQL-Datenbanksysteminstanz;")]),e._v(" "),n("li",[e._v("Jeder Knoten verwendet seine eigene Centrifugo-Dienstinstanz;")]),e._v(" "),n("li",[e._v("Das serverseitige Github-Backend wird auf demselben Host bereitgestellt wie andere Backend-Komponenten.")])]),e._v(" "),n("p",[e._v("Die von den Knoten verwendeten Beispieladressen und Ports sind in der folgenden Tabelle beschrieben:")]),e._v(" "),n("table",[n("thead",[n("tr",[n("th",{staticStyle:{"text-align":"center"}},[e._v("Node")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("Component")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("IP & port")])])]),e._v(" "),n("tbody",[n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("PostgreSQL")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("127.0.0.1:5432")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("Centrifugo")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.1:8000")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (TCP service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.1:7078")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (API service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.1:7079")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("2")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("PostgreSQL")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("127.0.0.1:5432")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("2")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("Centrifugo")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.2:8000")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("2")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (TCP service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.2:7078")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("2")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (API service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.2:7079")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("3")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("PostgreSQL")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("127.0.0.1:5432")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("3")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("Centrifugo")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.3:8000")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("3")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (TCP service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.3:7078")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("3")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("go-ibax (API service)")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("192.168.1.3:7079")])])])]),e._v(" "),n("h2",{attrs:{id:"bereitstellungsphase"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#bereitstellungsphase"}},[e._v("#")]),e._v(" Bereitstellungsphase")]),e._v(" "),n("p",[e._v("Ihr eigenes Blockchain-Netzwerk muss in mehreren Schritten bereitgestellt werden:")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#bereitstellung-eines-ibax-netzwerk"}},[e._v("Bereitstellung eines IBAX-Netzwerks")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#ein-bereitstellungsbeispiel"}},[e._v("Ein Bereitstellungsbeispiel")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#bereitstellungsphase"}},[e._v("Bereitstellungsphase")])]),e._v(" "),n("li",[e._v("[Serverbereitstellung](#serverbereitstellung\n"),n("ul",[n("li",[n("a",{attrs:{href:"#stellen-sie-den-ersten-knoten-bereit%5D"}},[e._v("Stellen Sie den ersten Knoten bereit")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#abh%C3%A4ngigkeiten-und-umgebungseinstellungen"}},[e._v("Abhängigkeiten und Umgebungseinstellungen")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#sudo"}},[e._v("sudo")])])])]),e._v(" "),n("li",[n("a",{attrs:{href:"#golang"}},[e._v("Golang")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#postgresql"}},[e._v("PostgreSQL")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#centrifugo"}},[e._v("Centrifugo")])]),e._v(" "),n("li",[e._v("[Verzeichnisaufbau](#verzeichnisaufbau")]),e._v(" "),n("li",[n("a",{attrs:{href:"#eine-datenbank-erstellen"}},[e._v("Eine Datenbank erstellen")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#konfigurieren-centrifugo"}},[e._v("Konfigurieren Centrifugo")])]),e._v(" "),n("li",[e._v("[Go-ibax installieren](#go-ibax installieren)")]),e._v(" "),n("li",[n("a",{attrs:{href:"#konfigurieren-sie-den-ersten-Knoten"}},[e._v("Konfigurieren Sie den ersten Knoten")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#initiieren-sie-den-ersten-knotenserver"}},[e._v("Initiieren Sie den ersten Knotenserver")])])])]),e._v(" "),n("li",[n("a",{attrs:{href:"#andere-knoten-bereitstellen%5D"}},[e._v("Andere Knoten bereitstellen")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#knoten-2"}},[e._v("Knoten 2")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#knoten-3"}},[e._v("Knoten 3")])])])]),e._v(" "),n("li",[n("a",{attrs:{href:"#front-end-bereitstellung"}},[e._v("Front-End-Bereitstellung")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#software-voraussetzungen"}},[e._v("Software-Voraussetzungen")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#erstellen-sie-eine-weaver-anwendung"}},[e._v("Erstellen Sie eine Weaver-Anwendung")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#F%C3%BCgen-sie-die-Konfigurationsdatei-f%C3%BCr-das-Blockchain-netzwerk-hinzu%5D"}},[e._v("Fügen Sie die Konfigurationsdatei für das Blockchain-Netzwerk hinzu")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#erstellen-sie-eine-weaver-webanwendung"}},[e._v("Erstellen Sie eine Weaver-Webanwendung")])])])]),e._v(" "),n("li",[n("a",{attrs:{href:"#konfigurieren-sie-das-blockchain-netzwerk"}},[e._v("Konfigurieren Sie das Blockchain-Netzwerk")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#erstellen-sie-das-creator-konto"}},[e._v("Erstellen Sie das Creator-Konto")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#importieren-sie-anwendungen,rollen-und-vorlagen"}},[e._v("Importieren Sie Anwendungen, Rollen und Vorlagen")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#F%C3%BCgen-sie-den-ersten-knoten-zur-knotenliste-hinzu"}},[e._v("Fügen Sie den ersten Knoten zur Knotenliste hinzu")])])])]),e._v(" "),n("li",[n("a",{attrs:{href:"#f%C3%BCge-weitere-ehrenknoten-hinzu"}},[e._v("Füge weitere Ehrenknoten hinzu")]),e._v(" "),n("ul",[n("li",[n("a",{attrs:{href:"#F%C3%BCgen-sie-der-consensus-rollengruppe-mitglieder-hinzu"}},[e._v("Fügen Sie der Consensus-Rollengruppe Mitglieder hinzu")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#erstellen-sie-das-eigent%C3%BCmerkonto-f%C3%BCr-andere-knoten"}},[e._v("Erstellen Sie das Eigentümerkonto für andere Knoten")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#weisen-sie-dem-knoteneigent%C3%BCmer-die-rolle-validierer-zu"}},[e._v("Weisen Sie dem Knoteneigentümer die Rolle „Validierer“ zu")])])])])])])]),e._v(" "),n("h2",{attrs:{id:"serverbereitstellung"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#serverbereitstellung"}},[e._v("#")]),e._v(" Serverbereitstellung")]),e._v(" "),n("h3",{attrs:{id:"stellen-sie-den-ersten-knoten-bereit"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#stellen-sie-den-ersten-knoten-bereit"}},[e._v("#")]),e._v(" Stellen Sie den ersten Knoten bereit")]),e._v(" "),n("p",[e._v("Der erste Knoten ist ein besonderer, da er für den Start des Blockchain-Netzwerks unerlässlich ist. Der erste Block der Blockchain wird vom ersten Knoten generiert, und alle anderen Knoten würden die Blockchain von ihm herunterladen. Der Eigentümer des ersten Knotens ist der Plattformersteller.")]),e._v(" "),n("h3",{attrs:{id:"abhangigkeiten-und-umgebungseinstellungen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#abhangigkeiten-und-umgebungseinstellungen"}},[e._v("#")]),e._v(" Abhängigkeiten und Umgebungseinstellungen")]),e._v(" "),n("h4",{attrs:{id:"sudo"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sudo"}},[e._v("#")]),e._v(" sudo")]),e._v(" "),n("p",[e._v("Alle Befehle von Debian 9 müssen als Nicht-Root-Benutzer ausgeführt werden. Einige Systembefehle erfordern jedoch zur Ausführung Superuser-Berechtigungen. Standardmäßig ist sudo nicht auf Debian 9 installiert, Sie müssen es zuerst installieren.")]),e._v(" "),n("ol",[n("li",[e._v("Superuser werden.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Aktualisieren Sie Ihr System.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" update -y "),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" upgrade -y "),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" dist-upgrade -y\n")])])]),n("ol",{attrs:{start:"3"}},[n("li",[e._v("Sudo installieren")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" -y\n")])])]),n("ol",{attrs:{start:"4"}},[n("li",[e._v("Fügen Sie Ihren Benutzer der sudo-Gruppe hinzu.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("usermod")]),e._v(" -a -G "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" user\n")])])]),n("ol",{attrs:{start:"5"}},[n("li",[e._v("Nach dem Neustart werden die Änderungen wirksam.")])]),e._v(" "),n("h3",{attrs:{id:"golang"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#golang"}},[e._v("#")]),e._v(" Golang")]),e._v(" "),n("p",[e._v("Installieren Sie Go gemäß der "),n("a",{attrs:{href:"https://golang.org/doc/install#tarball",target:"_blank",rel:"noopener noreferrer"}},[e._v("Official Documents"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("ol",[n("li",[e._v("Laden Sie die neueste stabile Version von Go (> 1.10.x) von der [offiziellen Golang-Website] (https://golang.org/dl/) oder über die Befehlszeile herunter:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("wget")]),e._v(" https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Verwenden Sie tar, um den Tarball in das Verzeichnis "),n("code",[e._v("/usr/local")]),e._v(" zu extrahieren.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz\n")])])]),n("ol",{attrs:{start:"3"}},[n("li",[e._v("Fügen Sie "),n("code",[e._v("/usr/local/go/bin")]),e._v(" zu den PATH-Umgebungsvariablen hinzu (zu finden unter "),n("code",[e._v("/etc/profile")]),e._v(" oder "),n("code",[e._v("$HOME/.profile")]),e._v(").")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token assign-left variable"}},[n("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("PATH")])]),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("$PATH")]),e._v(":/usr/local/go/bin\n")])])]),n("ol",[n("li",[e._v("Führen Sie die "),n("code",[e._v("source")]),e._v(" aus, damit die Änderungen wirksam werden, zum Beispiel:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("source")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("$HOME")]),e._v("/.profile\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Temporäre Dateien löschen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" go1.11.2.linux-amd64.tar.gz\n")])])]),n("h3",{attrs:{id:"postgresql"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#postgresql"}},[e._v("#")]),e._v(" PostgreSQL")]),e._v(" "),n("ol",[n("li",[e._v("Installieren Sie PostgreSQL (> v.10) and psql:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -y postgresql\n")])])]),n("h3",{attrs:{id:"centrifugo"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#centrifugo"}},[e._v("#")]),e._v(" Centrifugo")]),e._v(" "),n("ol",[n("li",[e._v("Download Centrifugo V.1.8.0 aus "),n("a",{attrs:{href:"https://github.com/centrifugal/centrifugo/releases/",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),n("OutboundLink")],1),e._v(" oder über die Kommandozeile:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("wget")]),e._v(" https://github.com/centrifugal/centrifugo/releases/download/v1.8.0/centrifugo-1.8.0-linux-amd64.zip "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("unzip")]),e._v(" centrifugo-1.8.0-linux-amd64.zip "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" centrifugo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mv")]),e._v(" centrifugo-1.8.0-linux-amd64/* centrifugo/\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Temporäre Dateien löschen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -R centrifugo-1.8.0-linux-amd64 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" centrifugo-1.8.0-linux-amd64.zip\n")])])]),n("h3",{attrs:{id:"verzeichnisaufbau"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#verzeichnisaufbau"}},[e._v("#")]),e._v(" Verzeichnisaufbau")]),e._v(" "),n("p",[e._v("Für das Debian 9-System wird empfohlen, die gesamte von der Blockchain-Plattform verwendete Software in einem separaten Verzeichnis zu speichern.\nHier wird das Verzeichnis "),n("code",[e._v("/opt/backenddir")]),e._v(" verwendet, aber Sie können jedes Verzeichnis verwenden. Bitte ändern Sie in diesem Fall alle Befehle und Konfigurationsdateien entsprechend.")]),e._v(" "),n("ol",[n("li",[e._v("Erstellen Sie ein Verzeichnis für die Blockchain-Plattform:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" /opt/backenddir\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Machen Sie Ihren Benutzer zum Eigentümer des Verzeichnisses:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" user /opt/backenddir/\n")])])]),n("ol",{attrs:{start:"3"}},[n("li",[e._v("Erstellen Sie Unterverzeichnisse für Centrifugo, go-ibax und Knotendaten. Alle Knotendaten werden in einem Verzeichnis namens "),n("code",[e._v("nodeX")]),e._v(" gespeichert, wobei "),n("code",[e._v("X")]),e._v(" die Knotennummer ist. Gemäß dem bereitzustellenden Knoten ist "),n("code",[e._v("node1")]),e._v(" Knoten 1, "),n("code",[e._v("node2")]),e._v(" ist Knoten 2 und so weiter.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" /opt/backenddir/go-ibax "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" /opt/backenddir/go-ibax/node1 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" /opt/backenddir/centrifugo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n")])])]),n("h3",{attrs:{id:"erstellen-sie-eine-datenbank"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#erstellen-sie-eine-datenbank"}},[e._v("#")]),e._v(" Erstellen Sie eine Datenbank")]),e._v(" "),n("ol",[n("li",[e._v("Ändern Sie das Benutzerpasswort postgres auf das Standardpasswort "),n("em",[e._v("123456")]),e._v(". Sie können Ihr eigenes Passwort festlegen, aber Sie müssen es in der Knotenkonfigurationsdatei "),n("em",[e._v("config.toml")]),e._v(" ändern.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" -u postgres psql -c "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v("\"ALTER USER postgres WITH PASSWORD '123456'\"")]),e._v("\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Erstellen Sie eine aktuelle Zustandsdatenbank für den Knoten, zum Beispiel "),n("strong",[e._v("chaindb")]),e._v(":")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" -u postgres psql -c "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"CREATE DATABASE chaindb"')]),e._v("\n")])])]),n("h3",{attrs:{id:"konfigurieren-centrifugo"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-centrifugo"}},[e._v("#")]),e._v(" Konfigurieren Centrifugo")]),e._v(" "),n("ol",[n("li",[e._v("Erstellen Sie die Centrifugo-Konfigurationsdatei:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("echo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('\'{"secret":"CENT_SECRET"}\'')]),e._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" /opt/backenddir/centrifugo/config.json\n")])])]),n("p",[e._v("Sie können Ihr eigenes "),n("em",[e._v("Geheimnis")]),e._v(" festlegen, aber Sie müssen es auch in der Knotenkonfigurationsdatei "),n("em",[e._v("config.toml")]),e._v(" ändern.")]),e._v(" "),n("h3",{attrs:{id:"go-ibax-installieren"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#go-ibax-installieren"}},[e._v("#")]),e._v(" go-ibax installieren")]),e._v(" "),n("ol",[n("li",[e._v("Github-Backend von GitHub herunterladen:")]),e._v(" "),n("li",[e._v("Kopieren Sie die go-ibax-Binärdatei in das Verzeichnis "),n("code",[e._v("/opt/backenddir/go-ibax")]),e._v(". Wenn Sie den standardmäßigen Go-Arbeitsbereich verwenden, befinden sich die Binärdateien im Verzeichnis "),n("code",[e._v("$HOME/go/bin")]),e._v(" :")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("cp")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("$HOME")]),e._v("/go/bin/go-ibax /opt/backenddir/go-ibax\n")])])]),n("h3",{attrs:{id:"konfigurieren-sie-den-ersten-knoten"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-den-ersten-knoten"}},[e._v("#")]),e._v(" Konfigurieren Sie den ersten Knoten")]),e._v(" "),n("ol",{attrs:{start:"3"}},[n("li",[e._v("Erstellen Sie die Konfigurationsdatei für Knoten 1:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax config "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --dataDir"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node1 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --dbName"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("chaindb "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --centSecret"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"CENT_SECRET"')]),e._v(" --centUrl"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("http://192.168.1.1:8000 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --httpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.1 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --httpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7079")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --tcpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.1 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --tcpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7078")]),e._v("\n")])])]),n("ol",{attrs:{start:"4"}},[n("li",[e._v("Generieren Sie die Schlüssel von Knoten 1, einschließlich der öffentlichen und privaten Schlüssel des Knotens und des Kontos:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax generateKeys "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node1/config.toml\n")])])]),n("ol",{attrs:{start:"5"}},[n("li",[e._v("Generieren Sie den ersten Block:")])]),e._v(" "),n("blockquote",[n("p",[e._v("Hinweis")]),e._v(" "),n("p",[e._v("Wenn Sie Ihr eigenes Blockchain-Netzwerk erstellen möchten, müssen Sie die Option "),n("code",[e._v("--test=true")]),e._v(" verwenden. Andernfalls können Sie kein neues Konto erstellen.")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax generateFirstBlock "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node1/config.toml "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --test"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("true\n")])])]),n("ol",{attrs:{start:"6"}},[n("li",[e._v("Initialisieren Sie die Datenbank:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax initDatabase "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node1/config.toml\n")])])]),n("h3",{attrs:{id:"initiiere-den-ersten-node-server"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#initiiere-den-ersten-node-server"}},[e._v("#")]),e._v(" Initiiere den ersten Node-Server")]),e._v(" "),n("p",[e._v("Um den ersten Knotenserver zu starten, müssen Sie die folgenden zwei Dienste starten:")]),e._v(" "),n("ul",[n("li",[e._v("centrifugo")]),e._v(" "),n("li",[e._v("go-ibax")])]),e._v(" "),n("p",[e._v("Wenn Sie mit diesen Dateien "),n("a",{attrs:{href:"#https://wiki.debian.org/systemd/Services"}},[e._v("Dienste")]),e._v(" nicht erstellen konnten, können Sie Binärdateien aus Verzeichnissen in verschiedenen Konsolen ausführen.")]),e._v(" "),n("ol",[n("li",[e._v("Lauf centrifugo:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/centrifugo/centrifugo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n -a "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.1 -p "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("8000")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config /opt/backenddir/centrifugo/config.json\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Lauf go-ibax:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax start "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node1/config.toml\n")])])]),n("h2",{attrs:{id:"andere-knoten-bereitstellen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#andere-knoten-bereitstellen"}},[e._v("#")]),e._v(" Andere Knoten bereitstellen")]),e._v(" "),n("p",[e._v("Obwohl die Bereitstellung aller anderen Knoten (Knoten 2 und Knoten 3) der ersten ähnlich ist, gibt es drei Unterschiede:")]),e._v(" "),n("ul",[n("li",[e._v("Sie müssen den ersten Block nicht generieren. Aber es muss von Knoten 1 in das aktuelle Knotendatenverzeichnis kopiert werden;")]),e._v(" "),n("li",[e._v("Der Knoten muss Blöcke von Knoten 1 herunterladen, indem er die Option "),n("code",[e._v("--nodesAddr")]),e._v(" konfiguriert;")]),e._v(" "),n("li",[e._v("Der Knoten muss seine eigenen Adressen und Ports verwenden.")])]),e._v(" "),n("h3",{attrs:{id:"knoten-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#knoten-2"}},[e._v("#")]),e._v(" Knoten 2")]),e._v(" "),n("p",[e._v("Befolgen Sie die nachstehenden Betriebsanweisungen:")]),e._v(" "),n("ol",[n("li",[n("a",{attrs:{href:"#dependencies-and-environment-settings"}},[e._v("Abhängigkeiten und Umgebungseinstellungen")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#create-a-database"}},[e._v("Datenbank erstellen")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#Zentrifuge"}},[e._v("Zentrifuge")])]),e._v(" "),n("li",[n("a",{attrs:{href:"#install-go-ibax"}},[e._v("go-ibax installieren")])]),e._v(" "),n("li",[e._v("Erstellen Sie die Konfigurationsdatei für Knoten 2:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/go-ibax config "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--dataDir"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node2 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--dbName"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("chaindb "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--centSecret"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"CENT_SECRET"')]),e._v(" --centUrl"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("http://192.168.1.2:8000 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--httpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.2 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--httpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7079")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--tcpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.2 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--tcpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7078")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--nodesAddr"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.1\n")])])]),n("ol",{attrs:{start:"6"}},[n("li",[e._v("Kopieren Sie die erste Blockdatei auf Knoten 2. Sie können diese Operation beispielsweise auf Knoten 2 über scp ausführen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("scp")]),e._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node2/\n")])])]),n("ol",{attrs:{start:"7"}},[n("li",[e._v("Generieren Sie die Schlüssel von Knoten 2, einschließlich der öffentlichen und privaten Schlüssel des Knotens und des Kontos:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/go-ibax generateKeys "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node2/config.toml\n")])])]),n("ol",{attrs:{start:"8"}},[n("li",[e._v("Starten Sie die Datenbank:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" ./go-ibax initDatabase --config"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("node2/config.toml\n")])])]),n("ol",{attrs:{start:"9"}},[n("li",[e._v("Lauf centrifugo:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/centrifugo/centrifugo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n-a "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.2 -p "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("8000")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),n("ol",{attrs:{start:"10"}},[n("li",[e._v("Lauf go-ibax:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("/opt/backenddir/go-ibax start "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node2/config.toml\n")])])]),n("p",[e._v("As a result, the node downloads the block from the first node. As this node is not a verification node, it cannot generate a new block. Node 2 will be added to the list of verification nodes later.")]),e._v(" "),n("h3",{attrs:{id:"knoten-3"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#knoten-3"}},[e._v("#")]),e._v(" Knoten 3")]),e._v(" "),n("p",[e._v("Befolgen Sie die nachstehenden Betriebsanweisungen:")]),e._v(" "),n("ol",[n("li",[n("p",[n("a",{attrs:{href:"#dependencies-and-environment-settings"}},[e._v("Abhängigkeiten und Umgebungseinstellungen")])])]),e._v(" "),n("li",[n("p",[n("a",{attrs:{href:"#create-a-database"}},[e._v("Datenbank erstellen")])])]),e._v(" "),n("li",[n("p",[n("a",{attrs:{href:"#Zentrifuge"}},[e._v("Zentrifuge")])])]),e._v(" "),n("li",[n("p",[n("a",{attrs:{href:"#install-go-ibax"}},[e._v("go-ibax installieren")])])]),e._v(" "),n("li",[n("p",[e._v("Erstellen Sie die Konfigurationsdatei für Knoten 3:")])])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/go-ibax config "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--dataDir"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node3 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--dbName"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("chaindb "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--centSecret"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"CENT_SECRET"')]),e._v(" --centUrl"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("http://192.168.1.3:8000 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--httpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.3 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--httpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7079")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--tcpHost"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.3 "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--tcpPort"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("7078")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--nodesAddr"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.1\n")])])]),n("ol",{attrs:{start:"6"}},[n("li",[e._v("Kopieren Sie die erste Blockdatei auf Knoten 3. Sie können diese Operation beispielsweise auf Knoten 3 über scp ausführen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("scp")]),e._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node3/\n")])])]),n("p",[e._v("7.Generieren Sie den Schlüssel von Knoten 3, einschließlich der öffentlichen und privaten Schlüssel des Knotens und des Kontos:")]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/go-ibax generateKeys "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node3/config.toml\n")])])]),n("p",[e._v("8.Initiieren Sie die Datenbank:")]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" ./go-ibax initDatabase --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("node3/config.toml\n")])])]),n("p",[e._v("9.Lauf centrifugo:")]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/centrifugo/centrifugo "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n-a "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("192.168")]),e._v(".1.3 -p "),n("span",{pre:!0,attrs:{class:"token number"}},[e._v("8000")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),n("p",[e._v("10.Lauf go-ibax:")]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v(" /opt/backenddir/go-ibax start "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n --config"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/opt/backenddir/node3/config.toml\n")])])]),n("p",[e._v("Als Ergebnis lädt der Knoten den Block vom ersten Knoten herunter. Da dieser Knoten kein Verifizierungsknoten ist, kann er keinen neuen Block erzeugen. Der Client kann mit dem Knoten verbunden sein und Transaktionen an das Netzwerk senden.")]),e._v(" "),n("h2",{attrs:{id:"front-end-bereitstellung"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#front-end-bereitstellung"}},[e._v("#")]),e._v(" Front-End-Bereitstellung")]),e._v(" "),n("p",[e._v("Erst nach der Installation von "),n("strong",[e._v("GNOME GUI")]),e._v(" auf Debian 9 (Stretch) 64-Bit Official Release kann der Govis-Client mit dem "),n("code",[e._v("Yarn")]),e._v("-Paketmanager erstellt werden.")]),e._v(" "),n("h3",{attrs:{id:"softwarevoraussetzungen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#softwarevoraussetzungen"}},[e._v("#")]),e._v(" Softwarevoraussetzungen")]),e._v(" "),n("ol",[n("li",[e._v("Laden Sie Node.js LTS Version 8.11 von der offiziellen Website von Node.js oder über die Befehlszeile herunter:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sL https://deb.nodesource.com/setup_8.x "),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" -E "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("bash")]),e._v("\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Installieren Node.js:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -y nodejs\n")])])]),n("ol",[n("li",[e._v("Laden Sie Yarn Version 1.7.0 aus dem "),n("a",{attrs:{href:"https://github.com/yarnpkg/yarn/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),n("OutboundLink")],1),e._v("-Repository von Garn oder über die Befehlszeile herunter:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("wget")]),e._v(" https://github.com/yarnpkg/yarn/releases/download/v1.7.0/yarn_1.7.0_all.deb\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Installieren Yarn:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" dpkg -i yarn_1.7.0_all.deb "),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" yarn_1.7.0_all.deb\n")])])]),n("h3",{attrs:{id:"erstellen-sie-eine-weaver-anwendung"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#erstellen-sie-eine-weaver-anwendung"}},[e._v("#")]),e._v(" Erstellen Sie eine Weaver-Anwendung")]),e._v(" "),n("ol",[n("li",[e._v("Laden Sie die neueste Version von Weaver vom Github-Frontend über Git herunter:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone https://github.com/ibax-io/ibax-front.git\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Installieren Sie Weaver-Abhängigkeiten über Yarn:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir/ibax-front/ "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v("\n")])])]),n("h3",{attrs:{id:"fugen-sie-die-konfigurationsdatei-fur-das-blockchain-netzwerk-hinzu"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#fugen-sie-die-konfigurationsdatei-fur-das-blockchain-netzwerk-hinzu"}},[e._v("#")]),e._v(" Fügen Sie die Konfigurationsdatei für das Blockchain-Netzwerk hinzu")]),e._v(" "),n("ol",[n("li",[e._v("Erstellen Sie eine "),n("em",[e._v("settings.json")]),e._v("-Datei, die Informationen zur Knotenverbindung enthält:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cp/opt/backenddir/ibax-front/public/settings.json.dist "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n /opt/backenddir/ibax-front/public/public/settings.json\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Bearbeiten Sie die Datei "),n("em",[e._v("settings.json")]),e._v(" in einem beliebigen Texteditor und fügen Sie die erforderlichen Einstellungen in diesem Format hinzu:")])]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v("http://Node_IP-address:Node_HTTP-Port\n")])])]),n("p",[e._v("Beispiele für "),n("em",[e._v("settings.json")]),e._v("-Dateien für die drei Knoten:")]),e._v(" "),n("div",{staticClass:"language-json extra-class"},[n("pre",{pre:!0,attrs:{class:"language-json"}},[n("code",[n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),n("span",{pre:!0,attrs:{class:"token property"}},[e._v('"fullNodes"')]),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://192.168.1.1:7079"')]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://192.168.1.2:7079"')]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),n("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://192.168.1.3:7079"')]),e._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),n("p",[e._v("Erstellen Sie die Weaver Desktop-Anwendung")]),e._v(" "),n("ol",[n("li",[e._v("Verwenden Sie Garn, um die Desktop-Version zu erstellen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir/ibax-front "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" build-desktop\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[e._v("Die Desktop-Version wird im AppImage-Suffixformat gepackt:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" release --publish never -l\n")])])]),n("p",[e._v("Nach dem Erstellen kann Ihre Anwendung verwendet werden, aber ihre Verbindungskonfiguration kann nicht geändert werden. Wenn diese Einstellungen geändert werden müssen, muss eine neue Version der Anwendung erstellt werden.")]),e._v(" "),n("h3",{attrs:{id:"weaver-webanwendung-erstellen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#weaver-webanwendung-erstellen"}},[e._v("#")]),e._v(" Weaver-Webanwendung erstellen")]),e._v(" "),n("ol",[n("li",[e._v("Erstellen Sie eine Webanwendung:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir/ibax-front/ "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" build\n")])])]),n("p",[e._v("Nach dem Erstellen werden die verteilbaren Dateien im Verzeichnis /build abgelegt. Sie können einen beliebigen Webserver Ihrer Wahl für die Bereitstellung verwenden, und die Datei "),n("em",[e._v("settings.json")]),e._v(" muss ebenfalls in diesem Verzeichnis abgelegt werden. Beachten Sie, dass bei einer Änderung der Verbindungseinstellungen die Anwendung nicht erneut erstellt werden muss. Bearbeiten Sie stattdessen die Datei "),n("em",[e._v("settings.json")]),e._v(" und starten Sie den Webserver neu.")]),e._v(" "),n("ol",[n("li",[e._v("Für Entwicklungs- oder Testzwecke können Sie den Webserver von Yarn erstellen:")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[n("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" global "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("add")]),e._v(" serve "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" serve -s build\n")])])]),n("p",[e._v("Danach ist Ihre Weaver-Webanwendung an folgendem Ort verfügbar: "),n("code",[e._v("http://localhost:5000")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"konfigurieren-sie-das-blockchain-netzwerk"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-das-blockchain-netzwerk"}},[e._v("#")]),e._v(" Konfigurieren Sie das Blockchain-Netzwerk")]),e._v(" "),n("h3",{attrs:{id:"erstellerkonto-erstellen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#erstellerkonto-erstellen"}},[e._v("#")]),e._v(" Erstellerkonto erstellen")]),e._v(" "),n("p",[e._v("Erstellen Sie ein Konto für den ersten Knoteneigentümer. Dieses Konto ist der Ersteller der neuen Blockchain-Plattform und hat Administratorzugriff.")]),e._v(" "),n("p",[e._v("1.Weaver ausführen;")]),e._v(" "),n("p",[e._v("2.Importieren Sie das vorhandene Konto mit den folgenden Daten:")]),e._v(" "),n("p",[e._v("–Laden Sie die Sicherung des privaten Schlüssels des Knoteneigentümers, der sich in der Datei "),n("code",[e._v("/opt/backenddir/node1/PrivateKey")]),e._v(" befindet.")]),e._v(" "),n("blockquote",[n("p",[e._v("Hinweis")]),e._v(" "),n("p",[e._v("In diesem Verzeichnis befinden sich zwei private Schlüsseldateien. Die Datei "),n("code",[e._v("PrivateKey")]),e._v(" wird verwendet, um das Konto des Knoteneigentümers zu erstellen. Die "),n("code",[e._v("NodePrivateKey")]),e._v("-Datei ist der private Schlüssel des Knotens selbst und muss geheim gehalten werden.")])]),e._v(" "),n("ol",{attrs:{start:"3"}},[n("li",[e._v("Nachdem Sie sich beim Konto angemeldet haben, wählen Sie bitte die Option Ohne Rolle, da zu diesem Zeitpunkt noch keine Rolle erstellt wurde.")])]),e._v(" "),n("h3",{attrs:{id:"anwendungen-rollen-und-vorlagen-importieren"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#anwendungen-rollen-und-vorlagen-importieren"}},[e._v("#")]),e._v(" Anwendungen, Rollen und Vorlagen importieren")]),e._v(" "),n("p",[e._v("Zu diesem Zeitpunkt befindet sich die Blockchain-Plattform in einem leeren Zustand. Sie können es konfigurieren, indem Sie Rollen, Vorlagen und Anwendungsframeworks hinzufügen, die grundlegende Ökosystemfunktionen unterstützen.")]),e._v(" "),n("ol",[n("li",[e._v("Klonen Sie das Anwendungs-Repository;")])]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-shell"}},[n("code",[e._v("cd/opt/backenddir "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),n("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone https://github.com/ibax-io/dapps.git\n")])])]),n("ol",{attrs:{start:"2"}},[n("li",[n("p",[e._v("Navigieren Sie zu Entwickler> Importieren in Weaver;")])]),e._v(" "),n("li",[n("p",[e._v("Importieren Sie Anwendungen gemäß der folgenden Reihenfolge:")])])]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v(" A./opt/backenddir/dapps/system.json \n B./opt/backenddir/dapps/conditions.json \n C./opt/backenddir/dapps/basic.json \n D./opt/backenddir/dapps/lang_res.json\n")])])]),n("ol",{attrs:{start:"4"}},[n("li",[n("p",[e._v("Navigieren Sie zu Admin > Rolle und klicken Sie auf Standardrolle installieren;")])]),e._v(" "),n("li",[n("p",[e._v("Verlassen Sie das System über das Konfigurationsdateimenü in der oberen rechten Ecke;")])])]),e._v(" "),n("p",[e._v("6.Melden Sie sich als Admin beim System an;")]),e._v(" "),n("ol",{attrs:{start:"7"}},[n("li",[e._v("Navigieren Sie zu Start > Abstimmung > Vorlagenliste und klicken Sie auf Standardvorlage installieren.")])]),e._v(" "),n("h3",{attrs:{id:"den-ersten-knoten-zur-knotenliste-hinzufugen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#den-ersten-knoten-zur-knotenliste-hinzufugen"}},[e._v("#")]),e._v(" Den ersten Knoten zur Knotenliste hinzufügen")]),e._v(" "),n("ol",[n("li",[e._v("Navigieren Sie zu Entwickler > Plattformparameter und klicken Sie auf den Parameter first_nodes;")])]),e._v(" "),n("p",[e._v("2.Geben Sie die Parameter des ersten Blockchain-Netzwerkknotens an.")]),e._v(" "),n("ul",[n("li",[e._v("public_key - The public key of the node is located in the "),n("code",[e._v("/opt/backenddir/node1/NodePublicKey")]),e._v(" file;")])]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('{"api_address":"http://192.168.1.1:7079","public_key":"%node_public_key%","tcp_address":"192.168.1.1:7078"}\n')])])]),n("h2",{attrs:{id:"weitere-ehrenknoten-hinzufugen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#weitere-ehrenknoten-hinzufugen"}},[e._v("#")]),e._v(" Weitere Ehrenknoten hinzufügen")]),e._v(" "),n("h3",{attrs:{id:"mitglieder-zur-consensus-rollengruppe-hinzufugen"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#mitglieder-zur-consensus-rollengruppe-hinzufugen"}},[e._v("#")]),e._v(" Mitglieder zur Consensus-Rollengruppe hinzufügen")]),e._v(" "),n("p",[e._v("Standardmäßig können nur Mitglieder in der Konsensus-Rollengruppe (Consensus) an der Abstimmung teilnehmen, die erforderlich ist, um andere Master-Knoten hinzuzufügen. Das bedeutet, dass vor dem Hinzufügen einer neuen Masternode Mitglieder des Ökosystems der Rolle zugewiesen werden müssen.\nIn diesem Abschnitt wird das Konto des Erstellers als einziges Mitglied der Konsens-Rollengruppe festgelegt. In einer Produktionsumgebung muss diese Rolle Plattformmitgliedern zugewiesen werden, die Governance durchführen.")]),e._v(" "),n("ol",[n("li",[e._v("Navigieren Sie zu Start > Rolle und klicken Sie auf Konsens;")])]),e._v(" "),n("p",[e._v("2.Klicken Sie auf Zuweisen, um das Konto des Erstellers der Rolle zuzuweisen.")]),e._v(" "),n("h3",{attrs:{id:"erstellen-sie-das-eigentumerkonto-fur-andere-knoten"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#erstellen-sie-das-eigentumerkonto-fur-andere-knoten"}},[e._v("#")]),e._v(" Erstellen Sie das Eigentümerkonto für andere Knoten")]),e._v(" "),n("ol",[n("li",[n("p",[e._v("Weber ausführen;")])]),e._v(" "),n("li",[n("p",[e._v("Importieren Sie das bestehende Konto mit den folgenden Daten:\n– Laden Sie die Sicherung des privaten Schlüssels des Node-Eigentümers, der sich in der Datei "),n("code",[e._v("/opt/backenddir/node2/PrivateKey")])])]),e._v(" "),n("li",[n("p",[e._v("Nachdem Sie sich beim Konto angemeldet haben, wählen Sie bitte die Option Ohne Rolle, da zu diesem Zeitpunkt noch keine Rolle erstellt wurde.")])]),e._v(" "),n("li",[n("p",[e._v("Navigieren Sie zu Startseite > Persönliche Informationen und klicken Sie auf den Titel der persönlichen Informationen;")])]),e._v(" "),n("li",[n("p",[e._v("Fügen Sie Kontodetails hinzu (persönliche Informationen, Titel, Beschreibung usw.).")])]),e._v(" "),n("li",[n("p",[e._v("Operationen des neuen Knoteneigentümers:")]),e._v(" "),n("ol",[n("li",[e._v("Navigieren Sie zu Start > Prüfer;")]),e._v(" "),n("li",[e._v("Klicken Sie auf Anfrage erstellen und füllen Sie das Antragsformular des Prüferkandidaten aus;")]),e._v(" "),n("li",[e._v("Klicken Sie auf Anfrage senden.")])])]),e._v(" "),n("li",[n("p",[e._v("Operationen des Erstellers:")]),e._v(" "),n("ol",[n("li",[e._v("Melden Sie sich mit einer Konsensrolle an (Consensus);")]),e._v(" "),n("li",[e._v("Navigieren Sie zu Start > Prüfer;")]),e._v(" "),n("li",[e._v("Klicken Sie auf das Symbol „Spielen“, um die Abstimmung gemäß der Anfrage des Kandidaten zu starten;")]),e._v(" "),n("li",[e._v("Navigieren Sie zu Startseite > Abstimmen und klicken Sie auf Abstimmungsstatus aktualisieren;")]),e._v(" "),n("li",[e._v("Klicken Sie auf den Abstimmungsnamen und stimmen Sie für den Knoteneigentümer ab.")])])])]),e._v(" "),n("p",[e._v("Als Ergebnis wird dem Konto des Eigentümers des neuen Knotens die Validator-Rolle zugewiesen, und der neue Knoten wird der Liste der Master-Knoten hinzugefügt.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/20.6aa700a9.js b/assets/js/20.01e8066c.js similarity index 99% rename from assets/js/20.6aa700a9.js rename to assets/js/20.01e8066c.js index e100f3b..4f34448 100644 --- a/assets/js/20.6aa700a9.js +++ b/assets/js/20.01e8066c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{402:function(t,e,a){"use strict";a.r(e);var s=a(51),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[t._v("#")]),t._v(" RESTful API v2")]),t._v(" "),a("p",[t._v("AAlle von Weaver bereitgestellten Funktionen, einschließlich Authentifizierung, Empfang von Ökosystemdaten, Fehlerbehandlung, Datenbanktabellenoperationen, Seiten- und Vertragsimplementierung, sind über die REST-API von IBAX verfügbar.")]),t._v(" "),a("p",[t._v("Mit der REST-API können Entwickler auf alle Plattformfunktionen zugreifen, ohne Weaver zu verwenden.")]),t._v(" "),a("p",[t._v("API-Befehlsaufrufe werden durch Adressieren von „/api/v2/command/[param]“ ausgeführt, wobei "),a("code",[t._v("command")]),t._v(" der Befehlsname und "),a("code",[t._v("param")]),t._v(" ein zusätzlicher Parameter ist. Die Anfrageparameter müssen im Format "),a("code",[t._v("Content-Type: x-www-form-urlencoded")]),t._v(" gesendet werden. Das Ergebnis der Serverantwort liegt im JSON-Format vor.")]),t._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#Fehlerbehandlung"}},[t._v("Fehlerbehandlung")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#Fehlerliste"}},[t._v("Fehlerliste")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#authentication"}},[t._v("Authentifizierung")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[t._v("getuid")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#einloggen"}},[t._v("Anmeldung")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#apis-unavailable-to-clb"}},[t._v("APIs für CLB nicht verfügbar")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#service-commands"}},[t._v("Service commands")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ausf%C3%BChrung"}},[t._v("Ausführung")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#data-request-functions"}},[t._v("Datenanforderungsfunktionen")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#Guthaben"}},[t._v("Guthaben")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#Bl%C3%B6cke"}},[t._v("Blöcke")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#detaillierte-Bl%C3%B6cke"}},[t._v("detaillierte Blöcke")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[t._v("/data/{table}/{id}/{column}/{hash}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#Schl%C3%BCsselinfo"}},[t._v("Schlüsselinfo")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#get-metrics"}},[t._v("Metriken abrufen")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#Tasten"}},[t._v("Tasten")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#Bl%C3%B6cke"}},[t._v("Blöcke")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#Transaktionen"}},[t._v("Transaktionen")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#%C3%96kosysteme"}},[t._v("Ökosysteme")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#vollst%C3%A4ndige-knoten"}},[t._v("Vollständige Knoten")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#%C3%B6kosystem"}},[t._v("Ökosystem")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#%C3%B6kosystemname"}},[t._v("Ökosystemname")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#%C3%B6kosysteme"}},[t._v("Ökosysteme")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[t._v("appparams/{appID}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[t._v("appparam/{appid}/{name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#%C3%B6kosystemparameter"}},[t._v("Ökosystemparameter")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#%C3%B6kosystemparam-Name"}},[t._v("Ökosystemparam/{Name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[t._v("tables/[?limit=…&offset=…]")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#tabellenname"}},[t._v("Tabelle/{Name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-colums"}},[t._v("list/{name}[?limit=…&offset=…&columns=…]")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[t._v("sections[?limit=…&offset=…&lang=]")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-colums"}},[t._v("row/{name}/{id}[?columns=]")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#systemparameter"}},[t._v("Systemparameter")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#geschichte-Name-ID"}},[t._v("Geschichte/{Name}/{ID}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-block-name"}},[t._v("interface/{page|menu|block}/{name}")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#vertragsfunktionen"}},[t._v("Vertragsfunktionen")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#vertr%C3%A4ge-limit-offset"}},[t._v("verträge[?limit=…&offset=…]")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#vertragsname"}},[t._v("Vertrag/{Name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#sendetx"}},[t._v("sendeTX")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[t._v("txstatus")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[t._v("txinfo/{hash}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[t._v("txinfoMultiple/")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page-validators_count-name"}},[t._v("/page/validators_count/{name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#inhalt-Men%C3%BC-Seitenname"}},[t._v("Inhalt/Menü|Seite/{Name}")])]),t._v(" "),a("li",[t._v("[Inhalt/Quelle/{Name}](#name der Inhaltsquelle)")]),t._v(" "),a("li",[a("a",{attrs:{href:"#inhalt-Hash-Name"}},[t._v("Inhalt/Hash/{Name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#inhalt"}},[t._v("Inhalt")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[t._v("maxblockid")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[t._v("block/{id}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[t._v("avatar/{ecosystem}/{member}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#config-zentrifuge"}},[t._v("config/zentrifuge")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[t._v("updnotificator")])])])])]),t._v(" "),a("h2",{attrs:{id:"fehlerbehandlung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerbehandlung"}},[t._v("#")]),t._v(" Fehlerbehandlung")]),t._v(" "),a("p",[t._v("Wenn die Anfrage erfolgreich ausgeführt wird, wird ein Statuscode "),a("code",[t._v("200")]),t._v(" zurückgegeben. Tritt ein Fehler auf, wird zusätzlich zum Fehlerstatus ein JSON-Objekt mit folgenden Feldern zurückgegeben:")]),t._v(" "),a("ul",[a("li",[t._v("Error")])]),t._v(" "),a("p",[t._v("Fehlerkennung.")]),t._v(" "),a("ul",[a("li",[t._v("Nachricht")])]),t._v(" "),a("p",[t._v("Der im Fehlerfall zurückgegebene Text.")]),t._v(" "),a("ul",[a("li",[t._v("Parameter")])]),t._v(" "),a("p",[t._v("Zusätzliche Parameter des Fehlers, die im Fehlerfall im zurückgegebenen Text enthalten sein können.")]),t._v(" "),a("blockquote",[a("p",[t._v("Response example")])]),t._v(" "),a("p",[t._v("400 (Bad request)")]),t._v(" "),a("p",[t._v("Content-Type: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"err"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"E_INVALIDWALLET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"msg"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Wallet 1234-5678-9012-3444-3488 is not valid"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"params"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1234-5678-9012-3444-3488"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fehlerliste"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerliste"}},[t._v("#")]),t._v(" Fehlerliste")]),t._v(" "),a("blockquote",[a("p",[t._v("E_VERTRAG")])]),t._v(" "),a("p",[t._v("Vertrag "),a("code",[t._v("%s")]),t._v(" existiert nicht")]),t._v(" "),a("blockquote",[a("p",[t._v("E_DBNIL")])]),t._v(" "),a("p",[t._v("Leere Datenbank")]),t._v(" "),a("blockquote",[a("p",[t._v("E_DELETEDKEY")])]),t._v(" "),a("p",[t._v("Kontoadresse gesperrt")]),t._v(" "),a("blockquote",[a("p",[t._v("E_ÖKOSYSTEM")])]),t._v(" "),a("p",[t._v("Ökosystem "),a("code",[t._v("%d")]),t._v(" existiert nicht")]),t._v(" "),a("blockquote",[a("p",[t._v("E_EMPTYPUBLIC")])]),t._v(" "),a("p",[t._v("Ungültiger öffentlicher Schlüssel für das Konto")]),t._v(" "),a("blockquote",[a("p",[t._v("E_KEYNOTFOUND")])]),t._v(" "),a("p",[t._v("Kontoadresse nicht gefunden")]),t._v(" "),a("blockquote",[a("p",[t._v("E_HASHFALSCH")])]),t._v(" "),a("p",[t._v("Falscher Hash")]),t._v(" "),a("blockquote",[a("p",[t._v("E_HASHNOTFOUND")])]),t._v(" "),a("p",[t._v("Nicht gefunden")]),t._v(" "),a("blockquote",[a("p",[t._v("E_HEAVYPAGE")])]),t._v(" "),a("p",[t._v("Zu viele Seiten geladen")]),t._v(" "),a("blockquote",[a("p",[t._v("E_INVALIDWALLET")])]),t._v(" "),a("p",[t._v("Ungültige Wallet-Adresse "),a("code",[t._v("%s")])]),t._v(" "),a("blockquote",[a("p",[t._v("E_LIMITTXSIZE")])]),t._v(" "),a("p",[t._v("Größe einer Transaktion außerhalb des Limits")]),t._v(" "),a("blockquote",[a("p",[t._v("E_NICHT GEFUNDEN")])]),t._v(" "),a("p",[t._v("Seiten- oder Menüinhalt nicht gefunden")]),t._v(" "),a("blockquote",[a("p",[t._v("E_PARAMNICHT GEFUNDEN")])]),t._v(" "),a("p",[t._v("Parameter nicht gefunden")]),t._v(" "),a("blockquote",[a("p",[t._v("E_PERMISSION")])]),t._v(" "),a("p",[t._v("Keine Erlaubnis")]),t._v(" "),a("blockquote",[a("p",[t._v("E_QUERY")])]),t._v(" "),a("p",[t._v("Datenbankabfragefehler")]),t._v(" "),a("blockquote",[a("p",[t._v("E_WIEDERHERGESTELLT")])]),t._v(" "),a("p",[t._v("Die API hat einen Panikfehler.\nGibt einen Fehler zurück, wenn ein Panikfehler vorliegt.\nEs bedeutet, dass Sie auf einen Fehler gestoßen sind, der lokalisiert und behoben werden muss.")]),t._v(" "),a("blockquote",[a("p",[t._v("E_SERVER")])]),t._v(" "),a("p",[t._v("Serverfehler.\nWenn es einen Fehler in der golang-Bibliotheksfunktion gibt, kehrt sie zurück. Das msg-Feld enthält den im Fehlerfall zurückgegebenen Text.")]),t._v(" "),a("p",[t._v("Als Antwort auf jeden Befehl kann ein "),a("strong",[t._v("E_SERVER")]),t._v("-Fehler auftreten. Wenn es aufgrund falscher Eingabeparameter auftritt, können Sie es in einen verwandten Fehler ändern. In einem anderen Fall meldet dieser Fehler einen ungültigen Betrieb oder eine falsche Systemkonfiguration, was einen detaillierteren Untersuchungsbericht erfordert.")]),t._v(" "),a("blockquote",[a("p",[t._v("E_SIGNATUR")])]),t._v(" "),a("p",[t._v("Falsche Signatur")]),t._v(" "),a("blockquote",[a("p",[t._v("E_STATELOGIN")])]),t._v(" "),a("p",[a("code",[t._v("%s")]),t._v(" ist kein Mitglied des Ökosystems "),a("code",[t._v("%s")])]),t._v(" "),a("blockquote",[a("p",[t._v("E_TABLENOTFOUND")])]),t._v(" "),a("p",[t._v("Tabelle "),a("code",[t._v("%s")]),t._v(" nicht gefunden")]),t._v(" "),a("blockquote",[a("p",[t._v("E_TOKENABGELAUFEN")])]),t._v(" "),a("p",[t._v("Sitzung "),a("code",[t._v("%s")]),t._v(" ist abgelaufen")]),t._v(" "),a("blockquote",[a("p",[t._v("E_UNAUTHORIZED")])]),t._v(" "),a("p",[t._v("Unbefugt.")]),t._v(" "),a("p",[t._v("Wenn Sie nicht angemeldet sind oder die Sitzung abgelaufen ist, gibt jeder Befehl außer "),a("code",[t._v("getuid, login")]),t._v(" einen")]),t._v(" "),a("p",[t._v("E_UNAUTHORIZED-Fehler zurück.")]),t._v(" "),a("blockquote",[a("p",[t._v("E_UNKNOWNUID")])]),t._v(" "),a("p",[t._v("Unbekannte UID")]),t._v(" "),a("blockquote",[a("p",[t._v("E_AKTUALISIEREN")])]),t._v(" "),a("p",[t._v("Der Knoten aktualisiert die Blockchain")]),t._v(" "),a("blockquote",[a("p",[t._v("E_STOPP")])]),t._v(" "),a("p",[t._v("Der Knoten wurde gestoppt")]),t._v(" "),a("blockquote",[a("p",[t._v("E_NOIMPLEMENTED")])]),t._v(" "),a("p",[t._v("Noch nicht implementiert")]),t._v(" "),a("blockquote",[a("p",[t._v("E_GESPERRT")])]),t._v(" "),a("p",[t._v("Die Kontoadresse ist in "),a("code",[t._v("%s")]),t._v(" verboten")]),t._v(" "),a("blockquote",[a("p",[t._v("E_CHECKROLE")])]),t._v(" "),a("p",[t._v("Zugriff verweigert")]),t._v(" "),a("h2",{attrs:{id:"apis-sind-fur-clb-nicht-verfugbar"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#apis-sind-fur-clb-nicht-verfugbar"}},[t._v("#")]),t._v(" APIs sind für CLB nicht verfügbar")]),t._v(" "),a("p",[t._v("Schnittstellenanforderung für den CLB-Knoten nicht verfügbar:")]),t._v(" "),a("ul",[a("li",[t._v("Metriken")]),t._v(" "),a("li",[t._v("txinfo")]),t._v(" "),a("li",[t._v("txinfoMultiple")]),t._v(" "),a("li",[t._v("appparam")]),t._v(" "),a("li",[t._v("appparams")]),t._v(" "),a("li",[t._v("App-Inhalt")]),t._v(" "),a("li",[t._v("Geschichte")]),t._v(" "),a("li",[t._v("Balance")]),t._v(" "),a("li",[t._v("Block")]),t._v(" "),a("li",[t._v("maxblockid")]),t._v(" "),a("li",[t._v("Blöcke")]),t._v(" "),a("li",[t._v("detaillierte Blöcke")]),t._v(" "),a("li",[t._v("Ökosystemparameter")]),t._v(" "),a("li",[t._v("Systemparameter")]),t._v(" "),a("li",[t._v("Ökosysteme")]),t._v(" "),a("li",[t._v("Ökosystemparam")]),t._v(" "),a("li",[t._v("Ökosystemname")]),t._v(" "),a("li",[t._v("Brieftaschenverlauf")]),t._v(" "),a("li",[t._v("tx_record")])]),t._v(" "),a("h2",{attrs:{id:"authentifizierung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentifizierung"}},[t._v("#")]),t._v(" Authentifizierung")]),t._v(" "),a("p",[a("RouterLink",{attrs:{to:"/de/reference/api2.html#https://jwt.io/"}},[t._v("JWT-Token")]),t._v(" wird zur Authentifizierung verwendet. Nach Erhalt des JWT-Tokens muss es in jedem Request-Header platziert werden: "),a("code",[t._v("Authorization: Bearer TOKEN_HERE")]),t._v(".")],1),t._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[t._v("#")]),t._v(" getuid")]),t._v(" "),a("p",[t._v("GET/ gibt einen eindeutigen Wert zurück, signiert ihn mit dem privaten Schlüssel und sendet ihn dann mit dem Befehl "),a("a",{attrs:{href:"#login"}},[t._v("login")]),t._v(" an den Server zurück.")]),t._v(" "),a("p",[t._v("Um ein temporäres JWT-Token zu generieren, müssen Sie das Token an "),a("strong",[t._v("Authorization")]),t._v(" übergeben, wenn Sie "),a("strong",[t._v("login")]),t._v(" aufrufen.")]),t._v(" "),a("h4",{attrs:{id:"anfrage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/getuid")])]),t._v(" "),a("h4",{attrs:{id:"antwort"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[t._v("Flüssigkeit")])]),t._v(" "),a("p",[t._v("Signaturnummern.")]),t._v(" "),a("ul",[a("li",[t._v("Zeichen")])]),t._v(" "),a("p",[t._v("Während der Anmeldung übergebenes temporäres Token.")]),t._v(" "),a("p",[t._v("Die Lebensdauer eines temporären Tokens beträgt 5 Sekunden.")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Netzwerk ID")]),t._v(" "),a("p",[t._v("Serverkennung.")]),t._v(" "),a("p",[t._v("Wenn keine Autorisierung erforderlich ist, werden die folgenden Informationen zurückgegeben:")])]),t._v(" "),a("li",[a("p",[t._v("erlöschen")]),t._v(" "),a("p",[t._v("Ablaufzeit.")])]),t._v(" "),a("li",[a("p",[t._v("Ökosystem")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Kontoadresse.")])]),t._v(" "),a("li",[a("p",[t._v("die Anschrift")]),t._v(" "),a("p",[t._v("Wallet-Adresse „XXXX-XXXX-.....-XXXX“.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (in Ordnung)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"uid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4999317241855959593"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"token"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9........I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"network_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4717243765193692211"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"anmeldung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anmeldung"}},[t._v("#")]),t._v(" Anmeldung")]),t._v(" "),a("p",[t._v("POST/ Authentifizierung der Benutzeridentität.")]),t._v(" "),a("p",[t._v("Der Befehl "),a("strong",[t._v("getuid")]),t._v(" sollte zuerst aufgerufen werden, um einen eindeutigen Wert zu erhalten und ihn zu signieren. Das temporäre JWT-Token von getuid muss im Anforderungsheader übergeben werden.")]),t._v(" "),a("p",[t._v("Wenn die Anfrage erfolgreich war, wird das in der Antwort erhaltene Token in "),a("strong",[t._v("Autorisierung")]),t._v(" aufgenommen.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-2"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/login")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[Ökosystem]")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")]),t._v(" "),a("p",[t._v("Wenn nicht angegeben, ID des ersten Ökosystems standardmäßig.")])]),t._v(" "),a("li",[a("p",[t._v("[erlöschen]")]),t._v(" "),a("p",[t._v("Lebensdauer des JWT-Tokens in Sekunden, standardmäßig 28800.")])]),t._v(" "),a("li",[a("p",[t._v("[Publikumsschlüssel]")]),t._v(" "),a("p",[t._v("Hexadezimaler öffentlicher Schlüssel des Kontos.")])]),t._v(" "),a("li",[a("p",[t._v("[Schlüssel_ID]")]),t._v(" "),a("p",[t._v("Kontoadresse "),a("code",[t._v("XXXX-...-XXXX")]),t._v(".")]),t._v(" "),a("p",[t._v("Verwenden Sie diesen Parameter, wenn der öffentliche Schlüssel bereits in der Blockchain gespeichert ist. Es kann nicht gleichzeitig mit dem Pubkey-Parameter verwendet werden.")])]),t._v(" "),a("li",[a("p",[t._v("Unterschrift")]),t._v(" "),a("p",[t._v("UID-Signatur erhalten über getuid.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-2"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Zeichen")]),t._v(" "),a("p",[t._v("JWT-Token.")])]),t._v(" "),a("li",[a("p",[t._v("Ökosystem")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Kontoadressen-ID")])]),t._v(" "),a("li",[a("p",[t._v("die Anschrift")]),t._v(" "),a("p",[t._v("Wallet-Adresse "),a("code",[t._v("XXXX-...-XXXX")]),t._v(".")])]),t._v(" "),a("li",[a("p",[t._v("Notify_key")]),t._v(" "),a("p",[t._v("Benachrichtigungs-ID.")])]),t._v(" "),a("li",[a("p",[t._v("isnode")]),t._v(" "),a("p",[t._v("Ob die Kontoadresse der Besitzer des Knotens ist. Wert: "),a("code",[t._v("true, false")]),t._v(".")])]),t._v(" "),a("li",[a("p",[t._v("Ist Besitzer")]),t._v(" "),a("p",[t._v("Ob die Kontoadresse der Ersteller des Ökosystems ist. Wert: "),a("code",[t._v("true, false")]),t._v(".")])]),t._v(" "),a("li",[a("p",[t._v("obs")]),t._v(" "),a("p",[t._v("Ob das registrierte Ökosystem CLB ist. Wert: "),a("code",[t._v("true, false")]),t._v(".")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-2"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Content-Type: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"token"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9........AHDRDqDFBoWEHw-9lfIcLobehvNEeIYBB4BIb5J72aQ"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ecosystem"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"54321"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"address"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4321-....-2223"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-2"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")]),t._v(" "),a("h2",{attrs:{id:"dienstbefehle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dienstbefehle"}},[t._v("#")]),t._v(" Dienstbefehle")]),t._v(" "),a("h3",{attrs:{id:"ausfuhrung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ausfuhrung"}},[t._v("#")]),t._v(" Ausführung")]),t._v(" "),a("p",[t._v("GET/ Gibt die Version des aktuellen Servers zurück.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-3"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/version")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-3"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('200 (OK)\nContent-Type: application/json\n"1.2.6"\n')])])]),a("h2",{attrs:{id:"datenabfragefunktionen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#datenabfragefunktionen"}},[t._v("#")]),t._v(" Datenabfragefunktionen")]),t._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[t._v("#")]),t._v(" Balance")]),t._v(" "),a("p",[t._v("GET/ Fordern Sie den Kontostand der Kontoadresse im aktuellen Ökosystem an.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-4"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/balance/{wallet}")])]),t._v(" "),a("ul",[a("li",[t._v("Brieftasche")])]),t._v(" "),a("p",[t._v("Adresskennung. Sie können es in einem beliebigen Format "),a("code",[t._v("int64, uint64, XXXX-...-XXXX")]),t._v(" angeben. Diese Adresse wird in dem Ökosystem abgefragt, in dem der Benutzer gerade angemeldet ist.")]),t._v(" "),a("h4",{attrs:{id:"antwort-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-3"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Menge")]),t._v(" "),a("p",[t._v("Kontostand der kleinsten Einheit.")])]),t._v(" "),a("li",[a("p",[t._v("Geld")]),t._v(" "),a("p",[t._v("Kontostand.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-4"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"amount"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"877450000000000"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"money"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"877.45"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-3"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER, E_INVALIDWALLET")]),t._v(" "),a("h3",{attrs:{id:"blocke"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocke"}},[t._v("#")]),t._v(" Blöcke")]),t._v(" "),a("p",[t._v("GET/ gibt eine Liste zurück, die zusätzliche Informationen zu Transaktionen in jedem Block enthält.\nFür diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-5"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/blocks")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("block_id")]),t._v(" "),a("p",[t._v("Höhe des abzufragenden Startblocks.")])]),t._v(" "),a("li",[a("p",[t._v("Anzahl")]),t._v(" "),a("p",[t._v("Anzahl der Blöcke")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-4"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Blockhöhe")]),t._v(" "),a("p",[t._v("Die Liste der Transaktionen im Block und die zusätzlichen Informationen zu jeder Transaktion:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Haschisch")]),t._v(" "),a("p",[t._v("Transaktionshash.")])]),t._v(" "),a("li",[a("p",[t._v("Vertragsname")]),t._v(" "),a("p",[t._v("Vertragsname.")])]),t._v(" "),a("li",[a("p",[t._v("Parameter")]),t._v(" "),a("p",[t._v("Ein Array von Vertragsparametern.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Für den ersten Block die Kontoadresse des ersten Blocks, der die Transaktion signiert hat.\nFür alle anderen Blöcke die Adresse des Kontos, das die Transaktion signiert hat.")])])])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-5"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('200 (OK)\nContent-Type: application/json\n{"1":\n [{"hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"fehlerantwort-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-4"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER, E_NICHT GEFUNDEN")]),t._v(" "),a("h3",{attrs:{id:"detaillierte-blocke"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detaillierte-blocke"}},[t._v("#")]),t._v(" detaillierte Blöcke")]),t._v(" "),a("p",[t._v("GET/ gibt eine Liste mit detaillierten zusätzlichen Informationen zu Transaktionen in jedem Block zurück.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-6"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/detailed_blocks")])]),t._v(" "),a("h4",{attrs:{id:"antwort-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-5"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[t._v("Blockhöhe\n"),a("ul",[a("li",[a("p",[t._v("Kopfzeile blockieren")]),t._v(" "),a("p",[t._v("Der Blockkopf enthält die folgenden Felder:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("block_id")]),t._v(" "),a("p",[t._v("Blockhöhe.")])]),t._v(" "),a("li",[a("p",[t._v("Zeit")]),t._v(" "),a("p",[t._v("Zeitstempel der Blockgenerierung.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Die Adresse des Kontos, das den Block signiert hat.")])]),t._v(" "),a("li",[a("p",[t._v("Knotenposition")]),t._v(" "),a("p",[t._v("Die Position des Knotens, der den Block in der Liste der Ehrenknoten generiert.")])]),t._v(" "),a("li",[a("p",[t._v("Ausführung")]),t._v(" "),a("p",[t._v("Version mit Blockstruktur.")])])])]),t._v(" "),a("li",[a("p",[t._v("Haschisch")]),t._v(" "),a("p",[t._v("Hash blockieren.")])]),t._v(" "),a("li",[a("p",[t._v("Knotenposition")]),t._v(" "),a("p",[t._v("Position des Knotens, der den Block generiert hat, in der Liste der Ehrenknoten.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Adresse des Kontos, das den Block signiert hat.")])]),t._v(" "),a("li",[a("p",[t._v("Zeit")]),t._v(" "),a("p",[t._v("Zeitstempel der Blockgenerierung.")])]),t._v(" "),a("li",[a("p",[t._v("tx_count")]),t._v(" "),a("p",[t._v("Anzahl der Transaktionen im Block.")])]),t._v(" "),a("li",[a("p",[t._v("rollback_hash")]),t._v(" "),a("p",[t._v("Rollback-Hash blockieren.")])]),t._v(" "),a("li",[a("p",[t._v("mrkl_root")]),t._v(" "),a("p",[t._v("Merkel Transaktionsbaum des Blocks.")])]),t._v(" "),a("li",[a("p",[t._v("bin_data")]),t._v(" "),a("p",[t._v("Serialisierung des Blockheaders, aller Transaktionen im Block, des vorherigen Blockhashs und des privaten Schlüssels des Knotens, der den Block generiert hat.")])]),t._v(" "),a("li",[a("p",[t._v("sys_update")]),t._v(" "),a("p",[t._v("Enthält der Block Transaktionen zum Aktualisieren von Systemparametern.")])]),t._v(" "),a("li",[a("p",[t._v("Transaktion\nDie Liste der Transaktionen im Block und die zusätzlichen Informationen zu jeder Transaktion:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Haschisch")]),t._v(" "),a("p",[t._v("Transaktionshash.")])]),t._v(" "),a("li",[a("p",[t._v("Vertragsname")]),t._v(" "),a("p",[t._v("Vertragsname.")])]),t._v(" "),a("li",[a("p",[t._v("Parameter")]),t._v(" "),a("p",[t._v("Vertragsparameter.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Adresse des Kontos, das die Transaktion unterzeichnet hat.")])]),t._v(" "),a("li",[a("p",[t._v("Zeit")]),t._v(" "),a("p",[t._v("Zeitstempel der Transaktionsgenerierung.")])]),t._v(" "),a("li",[a("p",[t._v("Typ")]),t._v(" "),a("p",[t._v("Art der Transaktion.")])])])])])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-6"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"header"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"block_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1551069320")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ecosystem_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-118432674655542910")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"node_position"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"version"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ecosystem_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"node_position"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-118432674655542910")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1551069320")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tx_count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rollbacks_hash"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mrkl_root"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg=="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"bin_data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token null keyword"}},[t._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"sys_update"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"gen_block"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"stop_count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"transactions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"contract_name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"params"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token null keyword"}},[t._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-5"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER, E_NOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[t._v("/data/{table}/{id}/{column}/{hash}")])]),t._v(" "),a("p",[t._v("GET/ Wenn der angegebene Hash mit den Daten in der angegebenen Tabelle, dem angegebenen Feld und dem angegebenen Datensatz übereinstimmt, gibt diese Anforderung die Daten zurück. Andernfalls wird ein Fehler zurückgegeben.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-7"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /data/{table}/{id}/{column}/{hash}")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Tisch")]),t._v(" "),a("p",[t._v("Tabellenname.")])]),t._v(" "),a("li",[a("p",[t._v("Ich würde")]),t._v(" "),a("p",[t._v("Datensatz-ID.")])]),t._v(" "),a("li",[a("p",[t._v("Säule")]),t._v(" "),a("p",[t._v("Feldname.")])]),t._v(" "),a("li",[a("p",[t._v("Haschisch")]),t._v(" "),a("p",[t._v("Hash der angeforderten Daten.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-6"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("p",[t._v("Binärdaten")]),t._v(" "),a("h3",{attrs:{id:"schlusselinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schlusselinfo"}},[t._v("#")]),t._v(" Schlüsselinfo")]),t._v(" "),a("p",[t._v("GET/ gibt eine Liste von Ökosystemen zurück, einschließlich Rollen, die bei der angegebenen Adresse registriert sind.\nFür diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-8"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/keyinfo/{key_id}")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Adresskennung, Sie können ein beliebiges Format "),a("code",[t._v("int64, uint64, XXXX-...-XXXX")]),t._v(" angeben.")]),t._v(" "),a("p",[t._v("Anfrage in allen Ökosystemen abgefragt.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-7"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Ökosystem")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Name des Ökosystems.")])]),t._v(" "),a("li",[a("p",[t._v("Rollen")]),t._v(" "),a("p",[t._v("Eine Liste von Rollen mit den ID- und Namensfeldern.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-7"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ecosystem"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"platform ecosystem"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"roles"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Developer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-6"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER, E_INVALIDWALLET")]),t._v(" "),a("h2",{attrs:{id:"metriken-abrufen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metriken-abrufen"}},[t._v("#")]),t._v(" Metriken abrufen")]),t._v(" "),a("h3",{attrs:{id:"schlussel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schlussel"}},[t._v("#")]),t._v(" Schlüssel")]),t._v(" "),a("p",[t._v("GET/ Gibt die Anzahl der Kontoadressen zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-9"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/metrics/keys")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-8"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("28")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"blocke-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocke-2"}},[t._v("#")]),t._v(" Blöcke")]),t._v(" "),a("p",[t._v("GET/ Gibt die Anzahl der Blöcke zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-10"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/metrics/blocks")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-9"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("28")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"transaktionen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaktionen"}},[t._v("#")]),t._v(" Transaktionen")]),t._v(" "),a("p",[t._v("GET/ Gibt die Gesamtzahl der Transaktionen zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-11"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/metrics/transactions")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-10"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("28")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"okosysteme"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#okosysteme"}},[t._v("#")]),t._v(" Ökosysteme")]),t._v(" "),a("p",[t._v("GET/ Gibt die Anzahl der Ökosysteme zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-12"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/metrics/ecosystems")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-11"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("28")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"vollknoten"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vollknoten"}},[t._v("#")]),t._v(" Vollknoten")]),t._v(" "),a("p",[t._v("GET/ gibt die Anzahl der Ehrenknoten zurück.")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/metrics/fullnodes")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-12"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("28")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"okosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#okosystem"}},[t._v("#")]),t._v(" Ökosystem")]),t._v(" "),a("h3",{attrs:{id:"okosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#okosystemname"}},[t._v("#")]),t._v(" Ökosystemname")]),t._v(" "),a("p",[t._v("GET/ gibt den Namen des Ökosystems anhand seiner Kennung zurück.\nFür diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-13"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/ecosystemname?id=..")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Ich würde")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-13"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ecosystem_name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"platform_ecosystem"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-7"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_PARAMNICHT GEFUNDEN")]),t._v(" "),a("h3",{attrs:{id:"okosysteme-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#okosysteme-2"}},[t._v("#")]),t._v(" Ökosysteme")]),t._v(" "),a("p",[t._v("GET/ Gibt die Anzahl der Ökosysteme zurück.")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/ecosystems/")])]),t._v(" "),a("h4",{attrs:{id:"antwort-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-8"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Anzahl")]),t._v(" "),a("p",[t._v("Die Anzahl der installierten Ökosysteme.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-14"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"appparams-appid"}},[t._v("appparams/{appID}")])]),t._v(" "),a("p",[t._v("GET/ Gibt eine Liste von Anwendungsparametern im aktuellen oder angegebenen Ökosystem zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-14"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/appparams")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[appid]")]),t._v(" "),a("p",[t._v("Anwendung ID.")])]),t._v(" "),a("li",[a("p",[t._v("[ecosystem]")])])]),t._v(" "),a("p",[t._v("Ökosystem-ID. Wenn nicht angegeben, werden die Parameter des aktuellen Ökosystems zurückgegeben.")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[names]")]),t._v(" "),a("p",[t._v("Liste der empfangenen Parameter.\nSie können die Liste der Parameternamen durch Kommas getrennt angeben. Zum Beispiel: "),a("code",[t._v("/api/v2/appparams/1?names=name,mypar")]),t._v(".")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-9"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("aufführen")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die folgenden Parameter:")]),t._v(" "),a("ul",[a("li",[t._v("Name, Parametername;")]),t._v(" "),a("li",[t._v("Wert, Parameterwert;")]),t._v(" "),a("li",[t._v("Bedingungen, Erlaubnis zum Ändern von Parametern.")])])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-15"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyState"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mypar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"My value"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-8"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_ECOSYSTEM")]),t._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[t._v("appparam/{appid}/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt Informationen zurück, die sich auf den Parameter {name} der Anwendung {appid} im aktuellen oder angegebenen Ökosystem beziehen.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-15"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/appparam/{appid}/{name}[?ecosystem=1]")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("appid")]),t._v(" "),a("p",[t._v("Anwendung ID.")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Name des angeforderten Parameters.")])]),t._v(" "),a("li",[a("p",[t._v("[ecosystem]")])])]),t._v(" "),a("p",[t._v("Ökosystem-ID (optionaler Parameter).\nGibt standardmäßig das aktuelle Ökosystem zurück.")]),t._v(" "),a("h4",{attrs:{id:"antwort-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-10"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Ich würde")]),t._v(" "),a("p",[t._v("Parameter-ID.")])]),t._v(" "),a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Parametername.")])]),t._v(" "),a("li",[a("p",[t._v("Wert")]),t._v(" "),a("p",[t._v("Parameterwert.")])]),t._v(" "),a("li",[a("p",[t._v("Bedingungen")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern von Parametern.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-16"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"par"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"My value"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-9"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_ECOSYSTEM, E_PARAMNOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"okosystemparam"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#okosystemparam"}},[t._v("#")]),t._v(" Ökosystemparam")]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der Ökosystemparameter zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-16"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/ecosystemparams/[?ecosystem=...&names=...]")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[Ökosystem]")]),t._v(" "),a("p",[t._v("Ökosystem-ID. Wenn nicht angegeben, wird die aktuelle Ökosystem-ID zurückgegeben.")])]),t._v(" "),a("li",[a("p",[t._v("[Namen]\nListe der Anforderungsparameter, durch Kommas getrennt.")]),t._v(" "),a("p",[t._v("Zum Beispiel: "),a("code",[t._v("/api/v2/ecosystemparams/?names=name,currency,logo*")]),t._v(".")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-11"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("aufführen")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die folgenden Parameter:")])]),t._v(" "),a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Parametername.")])]),t._v(" "),a("li",[a("p",[t._v("Wert")]),t._v(" "),a("p",[t._v("Parameterwert.")])]),t._v(" "),a("li",[a("p",[t._v("Bedingungen")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern von Parametern.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-17"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyState"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"currency"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MY"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-10"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_ECOSYSTEM")]),t._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[t._v("ecosystemparam/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt Informationen zum Parameter {Name} im aktuellen oder angegebenen Ökosystem zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-17"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/ecosystemparam/{name}[?ecosystem=1]")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Name des Anforderungsparameters.")])]),t._v(" "),a("li",[a("p",[t._v("[ecosystem]")]),t._v(" "),a("p",[t._v("Sie können die Ökosystem-ID angeben. Standardmäßig wird die aktuelle Ökosystem-ID zurückgegeben.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-12"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Parametername.")])]),t._v(" "),a("li",[a("p",[t._v("value")]),t._v(" "),a("p",[t._v("Parameterwert.")])]),t._v(" "),a("li",[a("p",[t._v("conditions")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern der Parameter.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-18"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"currency"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MYCUR"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-11"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_ECOSYSTEM")]),t._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[t._v("tables/[?limit=…&offset=…]")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der Tabellen des aktuellen Ökosystems zurück, in der Sie den Offset und die Anzahl der Einträge festlegen können.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-18"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[limit]")]),t._v(" "),a("p",[t._v("Anzahl der Einträge, standardmäßig 25.")])]),t._v(" "),a("li",[a("p",[t._v("[offset]")]),t._v(" "),a("p",[t._v("Offset, standardmäßig 0.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/tables")])]),t._v(" "),a("h4",{attrs:{id:"antwort-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-13"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("count")]),t._v(" "),a("p",[t._v("Gesamteinträge in der Tabelle.")])]),t._v(" "),a("li",[a("p",[t._v("list")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die folgenden Parameter:")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname ohne Präfix.")])]),t._v(" "),a("li",[a("p",[t._v("count")]),t._v(" "),a("p",[t._v("Anzahl der Einträge in der Tabelle.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-19"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"100"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"accounts"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"citizens"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"table-name"}},[t._v("table/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt Informationen zu der vom aktuellen Ökosystem angeforderten Tabelle zurück.\nGibt die folgenden Feldinformationen zurück:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname")])]),t._v(" "),a("li",[a("p",[t._v("insert")]),t._v(" "),a("p",[t._v("Berechtigung zum Hinzufügen neuer Einträge.")])]),t._v(" "),a("li",[a("p",[t._v("new_column")]),t._v(" "),a("p",[t._v("Berechtigung zum Hinzufügen neuer Felder.")])]),t._v(" "),a("li",[a("p",[t._v("update")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern von Einträgen.")])]),t._v(" "),a("li",[a("p",[t._v("columns")]),t._v(" "),a("p",[t._v("Eine Reihe von feldbezogenen Informationen:")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Feldname.")])]),t._v(" "),a("li",[a("p",[t._v("type")]),t._v(" "),a("p",[t._v("Felddatentyp.")])]),t._v(" "),a("li",[a("p",[t._v("perm")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern des Werts dieses Felds.")])])]),t._v(" "),a("h4",{attrs:{id:"anfrage-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-19"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/table/mytable")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname ohne das Ökosystempräfix.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-14"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname ohne das Ökosystempräfix.")])]),t._v(" "),a("li",[a("p",[t._v("insert")]),t._v(" "),a("p",[t._v("Berechtigung zum Hinzufügen neuer Einträge.")])]),t._v(" "),a("li",[a("p",[t._v("new_column")]),t._v(" "),a("p",[t._v("Berechtigung zum Hinzufügen neuer Felder.")])]),t._v(" "),a("li",[a("p",[t._v("update")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern von Einträgen.")])]),t._v(" "),a("li",[a("p",[t._v("conditions")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern der Tabellenkonfiguration.")])]),t._v(" "),a("li",[a("p",[t._v("columns")]),t._v(" "),a("p",[t._v("Eine Reihe von feldbezogenen Informationen:")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Feldname.")])]),t._v(" "),a("li",[a("p",[t._v("type")]),t._v(" "),a("p",[t._v("Felddatentyp.")])]),t._v(" "),a("li",[a("p",[t._v("perm")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern des Werts dieses Felds.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-20"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mytable"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"insert"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"new_column"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"update"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"columns"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mynum"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"perm"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mytext"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"text"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"perm"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-12"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_TABLENOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"list-name-limit-offset-colums"}},[t._v("list/{name}[?limit=…&offset=…&columns=…]")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der angegebenen Tabelleneinträge im aktuellen Ökosystem zurück, und wo Sie den Offset und die Anzahl der Einträge festlegen können.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-20"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname.")])]),t._v(" "),a("li",[a("p",[t._v("[limit]")]),t._v(" "),a("p",[t._v("Die Anzahl der Einträge, standardmäßig 25.")])]),t._v(" "),a("li",[a("p",[t._v("[offset]")]),t._v(" "),a("p",[t._v("Offset, standardmäßig 0.")])]),t._v(" "),a("li",[a("p",[t._v("[columns]\nListe der angeforderten Spalten, getrennt durch Kommas. Wenn nicht angegeben, werden alle Spalten zurückgegeben. In Anruffällen wird die ID-Spalte zurückgegeben.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/list/mytable?columns=name")])]),t._v(" "),a("h4",{attrs:{id:"antwort-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-15"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("count")]),t._v(" "),a("p",[t._v("Einträge insgesamt.")])]),t._v(" "),a("li",[a("p",[t._v("list")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die folgenden Parameter:")])]),t._v(" "),a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Eintrags-ID.\nReihenfolge der angeforderten Spalten.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-21"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"John"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Mark"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[t._v("sections[?limit=…&offset=…&lang=]")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der Einträge in Tabellenabschnitten des aktuellen Ökosystems zurück, und wo der Offset und die Anzahl der Einträge festgelegt werden können.")]),t._v(" "),a("p",[t._v("Wenn das Feld role_access eine Liste von Rollen und nicht die aktuelle Rolle enthält, wird kein Datensatz zurückgegeben. Die Daten im Titelfeld werden durch die Sprachressource Accept-Language im Anforderungsheader ersetzt.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-21"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[limit]")]),t._v(" "),a("p",[t._v("Anzahl der Einträge, standardmäßig 25.")])]),t._v(" "),a("li",[a("p",[t._v("[offset]")]),t._v(" "),a("p",[t._v("Offset, standardmäßig 0.")])]),t._v(" "),a("li",[a("p",[t._v("[lang]")]),t._v(" "),a("p",[t._v("Dieses Feld gibt die Sprachressourcen oder den Lokalisierungscode an, zum Beispiel: en, zh. Wenn keine Sprachressourcen angegeben sind, zum Beispiel: en-US, suchen Sie in der Sprachressourcengruppe en.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/sections")])]),t._v(" "),a("h4",{attrs:{id:"antwort-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-16"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("count")]),t._v(" "),a("p",[t._v("Gesamtzahl der Einträge in Tabellenabschnitten.")])]),t._v(" "),a("li",[a("p",[t._v("list")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die Informationen aller Spalten in den Tabellenabschnitten.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-22"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"title"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Development"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"urlpage"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"develop"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ...\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-13"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_TABLENOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"row-name-id-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"row-name-id-colums"}},[t._v("row/{name}/{id}[?columns=]")])]),t._v(" "),a("h3",{attrs:{id:""}},[a("a",{staticClass:"header-anchor",attrs:{href:"#"}},[t._v("#")])]),t._v(" "),a("p",[t._v("GET/ Gibt den Eintrag der angegebenen Tabelle im aktuellen Ökosystem zurück. Sie können die zurückzugebende(n) Spalte(n) angeben.")]),t._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[t._v("#")]),t._v(" Request")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname.")])]),t._v(" "),a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Eintrags-ID.")])]),t._v(" "),a("li",[a("p",[t._v("[columns]")]),t._v(" "),a("p",[t._v("Liste der angeforderten Spalten, getrennt durch Kommas. Wenn nicht angegeben, werden alle Spalten zurückgegeben. In allen Fällen wird die ID-Spalte zurückgegeben.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/row/mytable/10?columns=name")])]),t._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[t._v("#")]),t._v(" Response")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("value")]),t._v(" "),a("p",[t._v("Ein Array von Werten der angeforderten Spalten")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("id\nEintrags-ID.")])]),t._v(" "),a("li",[a("p",[t._v("Reihenfolge der angeforderten Spalten.")])])])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-23"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"values"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"John"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_NOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"systemparam"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparam"}},[t._v("#")]),t._v(" Systemparam")]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der Plattformparameter zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-22"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/systemparams/[?names=...]")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[name]")]),t._v(" "),a("p",[t._v("Eine durch Kommas getrennte Liste von Anforderungsparametern. Beispiel: /api/v2/systemparams/?names=max_columns,max_indexes.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-17"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("list")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[t._v(" Jedes Element im Array enthält die folgenden Parameter:\n")])])]),a("ul",[a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Parametername.")])])])]),t._v(" "),a("li",[a("p",[t._v("value")]),t._v(" "),a("p",[t._v("Parameterwert.")])]),t._v(" "),a("li",[a("p",[t._v("conditions")]),t._v(" "),a("p",[t._v("Berechtigungen zum Ändern des Parameters.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-24"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"max_columns"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"100"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractAccess("')]),t._v("@1UpdateSysParam"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('")"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"max_indexes"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractAccess("')]),t._v("@1UpdateSysParam"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('")"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_PARAMNOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"history-name-id"}},[t._v("history/{name}/{id}")])]),t._v(" "),a("p",[t._v("GET/ Gibt den Änderungsdatensatz des Eintrags in der angegebenen Tabelle im aktuellen Ökosystem zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-23"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Tabellenname.")])]),t._v(" "),a("li",[a("p",[t._v("ID")]),t._v(" "),a("p",[t._v("Eintrags-ID.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-18"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("list")]),t._v(" "),a("p",[t._v("Jedes Element in einem Array, dessen Elemente geänderte Parameter des angeforderten Eintrags enthalten.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-25"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"P(class, Default Ecosystem Page)"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"menu"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_menu"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"interface-page-menu-block-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-block-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"interface-page-menu-block-name"}},[t._v("interface/{page|menu|block}/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt den Eintrag des Namensfelds in der angegebenen Tabelle (Seiten, Menü oder Blöcke) des aktuellen Ökosystems zurück.")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/interface/page/default_page")])]),t._v(" "),a("h4",{attrs:{id:"anfrage-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-24"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Name des in der Tabelle angegebenen Eintrags.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-19"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Eintrags-ID.")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Eintragsname.")])]),t._v(" "),a("li",[a("p",[t._v("other")]),t._v(" "),a("p",[t._v("Andere Spalten der Tabelle.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-26"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"P(Page content)"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"default_menu"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_menu"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"validate_count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_QUERY, E_NOTFOUND")]),t._v(" "),a("h2",{attrs:{id:"vertragsfunktionen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vertragsfunktionen"}},[t._v("#")]),t._v(" Vertragsfunktionen")]),t._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[t._v("contracts[?limit=…&offset=…]")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der Verträge im aktuellen Ökosystem zurück und kann den Offset und die Anzahl der Einträge festlegen.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-25"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[limit]")]),t._v(" "),a("p",[t._v("Anzahl der Einträge, standardmäßig 25.")])]),t._v(" "),a("li",[a("p",[t._v("[offset]")]),t._v(" "),a("p",[t._v("Offset, standardmäßig 0.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/contracts")])]),t._v(" "),a("h4",{attrs:{id:"antwort-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-20"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Anzahl")]),t._v(" "),a("p",[t._v("Gesamtzahl der Einträge.")])]),t._v(" "),a("li",[a("p",[t._v("aufführen")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die folgenden Parameter:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Vertrags-ID.")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Vertragsname.")])]),t._v(" "),a("li",[a("p",[t._v("value")]),t._v(" "),a("p",[t._v("Vertragsinhalt.")])]),t._v(" "),a("li",[a("p",[t._v("wallet_id")]),t._v(" "),a("p",[t._v("An den Vertrag gebundene Kontoadresse.")])]),t._v(" "),a("li",[a("p",[t._v("address")]),t._v(" "),a("p",[t._v("An den Vertrag gebundene Wallet-Adresse "),a("code",[t._v("XXXX-...-XXXX")]),t._v(".")])]),t._v(" "),a("li",[a("p",[t._v("ecosystem-ID")]),t._v(" "),a("p",[t._v("ID des Ökosystems, zu dem der Vertrag gehört.")])]),t._v(" "),a("li",[a("p",[t._v("app_id")]),t._v(" "),a("p",[t._v("ID der Anwendung, zu der der Vertrag gehört.")])]),t._v(" "),a("li",[a("p",[t._v("conditions")]),t._v(" "),a("p",[t._v("Berechtigungen zur Vertragsänderung.")])]),t._v(" "),a("li",[a("p",[t._v("token_id")]),t._v(" "),a("p",[t._v("ID des Ökosystems, in dem sich der Token befindet, der zur Zahlung der Vertragsgebühr verwendet wird.")])])])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-27"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MainCondition"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"token_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"wallet_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(' "contract MainCondition '),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n conditions "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n if(EcosysParam(`founder_account`)!=$key_id)\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n warning `Sorry"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" you dont have access to this action.`\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v('"'),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"address"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0000-0000-0000-0000-0000"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ...\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"contract-name"}},[t._v("contract/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt die relevanten Informationen des angegebenen Vertrags zurück. Standardmäßig wird der Vertrag im aktuellen Ökosystem abgefragt.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-26"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Vertragsname.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/contract/mycontract")])]),t._v(" "),a("h4",{attrs:{id:"antwort-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-21"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Vertrags-ID in VM.")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Vertragsname „@1MainCondition“ mit der Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("state")]),t._v(" "),a("p",[t._v("ID des Ökosystems, zu dem der Vertrag gehört.")])]),t._v(" "),a("li",[a("p",[t._v("wallet-id")]),t._v(" "),a("p",[t._v("An den Vertrag gebundene Kontoadresse.")])]),t._v(" "),a("li",[a("p",[t._v("token-ID")]),t._v(" "),a("p",[t._v("Als ID des Ökosystems, in dem sich der Token befindet, der zur Zahlung der Vertragsgebühr verwendet wird.")])]),t._v(" "),a("li",[a("p",[t._v("address")]),t._v(" "),a("p",[t._v("An den Vertrag gebundene Wallet-Adresse "),a("code",[t._v("XXXX-...-XXXX")]),t._v(".")])]),t._v(" "),a("li",[a("p",[t._v("table-id")]),t._v(" "),a("p",[t._v("Eintrags-ID des Vertrags in der Vertragstabelle.")])]),t._v(" "),a("li",[a("p",[t._v("fields")]),t._v(" "),a("p",[t._v("Das Array enthält die Strukturinformationen jedes Parameters im Datenabschnitt des Vertrags:")]),t._v(" "),a("ul",[a("li",[t._v("Name")])]),t._v(" "),a("p",[t._v("Parametername.")]),t._v(" "),a("ul",[a("li",[t._v("Type")])]),t._v(" "),a("p",[t._v("Parametertyp.")]),t._v(" "),a("ul",[a("li",[t._v("Optional")])]),t._v(" "),a("p",[t._v("Parameteroption, true bedeutet optionaler Parameter, false bedeutet obligatorischer Parameter.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-28"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"fields"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"amount"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"int"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"optional"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"optional"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("150")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@1mycontract"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tableid"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_CONTRACT")]),t._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[t._v("#")]),t._v(" sendTX")]),t._v(" "),a("p",[t._v("POST/ Empfangen Sie die Transaktion im Parameter und fügen Sie sie der Transaktionswarteschlange hinzu. Wenn die Anfrage erfolgreich ausgeführt wird, wird der Transaktions-Hash zurückgegeben. Mit dem Hash erhalten Sie die entsprechende Transaktion im Block. Wenn eine Fehlerantwort auftritt, wird der Hash in die Fehlertextnachricht eingefügt.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-27"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[t._v("tx_key")])]),t._v(" "),a("p",[t._v("Transaktionsinhalt. Sie können einen beliebigen Namen angeben und unterstützen den Empfang mehrerer Transaktionen mit diesem Parameter.")]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/sendTx")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("Headers:\nContent-Type: multipart/form-data\nParameters:\ntx1 - transaction 1\ntxN - transaction N\n")])])]),a("h4",{attrs:{id:"antwort-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-22"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Hashes")]),t._v(" "),a("p",[t._v("Array von Transaktions-Hashes:")])]),t._v(" "),a("li",[a("p",[t._v("tx1")]),t._v(" "),a("p",[t._v("Hash der Transaktion 1.")])]),t._v(" "),a("li",[a("p",[t._v("txN")]),t._v(" "),a("p",[t._v("Hash der Transaktion N.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-29"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hashes"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tx1"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"67afbc435634....."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"txN"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"89ce4498eaf7....."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_LIMITTXSIZE,"),a("em",[t._v("E_BANNED")])]),t._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[t._v("#")]),t._v(" txstatus")]),t._v(" "),a("p",[t._v("POST/ Gibt die Block-ID und die Fehlermeldung des angegebenen Transaktions-Hash zurück. Ist der Rückgabewert der Block-ID und Fehlermeldung leer, wurde die Transaktion nicht in den Block aufgenommen.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-28"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[t._v("data\nJSON list of transaction hashes."),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])])])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/txstatus/")])]),t._v(" "),a("h4",{attrs:{id:"antwort-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-23"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Ergebnisse\nIm Datenwörterbuch ist der Transaktions-Hash der Schlüssel, während das Transaktionsdetail der Wert ist.")]),t._v(" "),a("ul",[a("li",[t._v("hash")])]),t._v(" "),a("p",[t._v("Transaktionshash.")]),t._v(" "),a("ul",[a("li",[t._v("blockid")])]),t._v(" "),a("p",[t._v("Wenn die Transaktion erfolgreich ausgeführt wird, wird die Block-ID zurückgegeben; Wenn die Transaktion nicht ausgeführt werden konnte, ist die Block-ID 0.")]),t._v(" "),a("ul",[a("li",[t._v("result")])]),t._v(" "),a("p",[t._v("Geben Sie das Transaktionsergebnis über die Variable $result zurück.")]),t._v(" "),a("ul",[a("li",[t._v("errmsg")])]),t._v(" "),a("p",[t._v("Wenn die Transaktion nicht ausgeführt werden kann, wird eine Fehlertextnachricht zurückgegeben.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-30"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"results"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash1"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blockid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3123"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash2"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blockid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3124"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_HASHWRONG, E_HASHNOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[t._v("txinfo/{hash}")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Informationen des angegebenen Hashs zurück, die mit der Transaktion korrelieren, einschließlich der Block-ID und der Anzahl der Bestätigungen. Wenn optionale Parameter angegeben werden, können auch der Vertragsname und zugehörige Parameter zurückgegeben werden.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-29"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("hash")]),t._v(" "),a("p",[t._v("Transaktionshash.")])]),t._v(" "),a("li",[a("p",[t._v("[contractinfo]")])])]),t._v(" "),a("p",[t._v("Detaillierte Kennung des Vertragsparameters. Um Vertragsdetails zu erhalten, die sich auf die Transaktion beziehen, geben Sie "),a("code",[t._v("contractinfo=1")]),t._v(" an.")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1")])]),t._v(" "),a("h4",{attrs:{id:"antwort-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-24"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("blockid")]),t._v(" "),a("p",[t._v("Enthält die Block-ID der Transaktion. Wenn der Wert "),a("code",[t._v("0")]),t._v(" ist, kann keine Transaktion mit diesem Hash gefunden werden.")])]),t._v(" "),a("li",[a("p",[t._v("bestätigen Sie")]),t._v(" "),a("p",[t._v("Anzahl der Bestätigungen des Blocks blockid.")])]),t._v(" "),a("li",[a("p",[t._v("Daten")]),t._v(" "),a("p",[t._v("Wenn "),a("code",[t._v("contentinfo=1")]),t._v(" angegeben ist, werden die Vertragsdetails an diesen Parameter zurückgegeben.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-31"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blockid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"confirm"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"block"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"contract"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@1NewContract"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"params"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t}"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_HASHWRONG")]),t._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[t._v("#")]),t._v(" txinfoMultiple/")]),t._v(" "),a("p",[t._v("GET/ Gibt die Informationen des angegebenen Hashs zurück, die mit einer Transaktion korrelieren.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-30"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("hash")]),t._v(" "),a("p",[t._v("Liste der Transaktions-Hashes.")])]),t._v(" "),a("li",[a("p",[t._v("[contractinfo]")])])]),t._v(" "),a("p",[t._v("Detaillierte Kennung des Vertragsparameters. Um Vertragsdetails in Bezug auf die Transaktion zu erhalten, geben Sie "),a("code",[t._v("contractinfo=1")]),t._v(" an.")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[t._v('```\n{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n```\n')])])]),a("blockquote",[a("p",[t._v("GET /api/v2/txinfoMultiple/")])]),t._v(" "),a("h4",{attrs:{id:"antwort-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-25"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Ergebnisse")]),t._v(" "),a("p",[t._v("Im Datenwörterbuch Transaktions-Hashes als Schlüssel und Transaktionsdetails als Wert.")]),t._v(" "),a("ul",[a("li",[t._v("hash")])]),t._v(" "),a("p",[t._v("Transaktionshash.")]),t._v(" "),a("ul",[a("li",[t._v("blockid")])]),t._v(" "),a("p",[t._v("Block-ID, die die Transaktion enthält. Wenn der Wert "),a("code",[t._v("0")]),t._v(" ist, kann keine Transaktion mit diesem Hash gefunden werden.")]),t._v(" "),a("ul",[a("li",[t._v("confirm")])]),t._v(" "),a("p",[t._v("Anzahl der Bestätigungen des Blocks blockid.")]),t._v(" "),a("ul",[a("li",[t._v("date")])]),t._v(" "),a("p",[t._v("Wenn "),a("code",[t._v("contentinfo=1")]),t._v(" angegeben ist, werden die Vertragsdetails an diesen Parameter zurückgegeben.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-32"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"results"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash1"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blockid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3123"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"confirm"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash2"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blockid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3124"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"confirm"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_HASHWRONG")]),t._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"page-validators_count-name"}},[t._v("/page/validators_count/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Anzahl der Knoten zurück, die zum Überprüfen der angegebenen Seite erforderlich sind.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-31"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Seitenname mit Ökosystem-ID in einem Format: "),a("code",[t._v("@ecosystem_id%%page_name%")]),t._v(". Zum Beispiel: "),a("code",[t._v("@1main_page")]),t._v(".")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/page/validators_count/@1page_name")])]),t._v(" "),a("h4",{attrs:{id:"antwort-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-26"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("validate_count")]),t._v(" "),a("p",[t._v("Anzahl der Knoten, die zum Überprüfen der angegebenen Seite erforderlich sind")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-33"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_NOTFOUND, E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[t._v("content/menu|page/{name}")])]),t._v(" "),a("p",[t._v("POST/ Gibt den JSON-Objektbaum des Codes der angegebenen Seite oder des Menünamens zurück, der das Ergebnis der Vorlagen-Engine-Verarbeitung ist.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-32"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Seiten- oder Menüname.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/content/page/default")])]),t._v(" "),a("h4",{attrs:{id:"antwort-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-27"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("menu")]),t._v(" "),a("p",[t._v("Menüname der Seite bei Anforderung von Inhalt/Seite/…")])]),t._v(" "),a("li",[a("p",[t._v("menutree")]),t._v(" "),a("p",[t._v("Ein JSON-Objektbaum des Seitenmenüs beim Anfordern von Inhalt/Seite/…")])]),t._v(" "),a("li",[a("ul",[a("li",[a("p",[t._v("title–head for the menu content/menu/…")]),t._v(" "),a("p",[t._v("Menüname bei Anforderung von Inhalt/Menü/...")])])])]),t._v(" "),a("li",[a("p",[t._v("tree")]),t._v(" "),a("p",[t._v("Ein JSON-Objektbaum einer Seite oder eines Menüs.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-34"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tree"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"......"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"children"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_NOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"content-source-name"}},[t._v("content/source/{name}")])]),t._v(" "),a("p",[t._v('POST/ Gibt den JSON-Objektbaum des angegebenen Seitennamencodes zurück. Führt keine Funktion aus und empfängt keine Daten. Der zurückgegebene JSON-Objektbaum entspricht der Seitenvorlage und kann im visuellen Seitendesigner verwendet werden. Wenn die Seite nicht gefunden werden kann, wird ein 404-Fehler zurückgegeben. Anfrage """""""')]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Seitenname.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-28"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/content/source/default")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("tree")]),t._v(" "),a("p",[t._v("Eine JSON-Objektstruktur der Seite.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-35"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tree"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"......"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"children"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_NOTFOUND, E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"content-hash-name"}},[t._v("content/hash/{name}")])]),t._v(" "),a("p",[t._v("POST/ Gibt den SHA256-Hash des angegebenen Seitennamens zurück oder den Fehler 404, wenn die Seite nicht gefunden werden kann.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich. Um den korrekten Hash zu erhalten, wenn Sie eine Anfrage an andere Knoten stellen, müssen Sie auch die Parameter „Ökosystem“, „keyID“, „roleID“ und „isMobile“ übergeben. Um Seiten von anderen Ökosystemen zu erhalten, muss die Ökosystem-ID dem Seitennamen vorangestellt werden. Zum Beispiel: "),a("code",[t._v("@2meineseite")]),t._v(".")]),t._v(" "),a("h4",{attrs:{id:"anfrage-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-33"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Seitenname mit der Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("ecosystem")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("key-ID")]),t._v(" "),a("p",[t._v("Kontoadresse.")])]),t._v(" "),a("li",[a("p",[t._v("role-ID")]),t._v(" "),a("p",[t._v("Rollen-ID.")])]),t._v(" "),a("li",[a("p",[t._v("isMobile")]),t._v(" "),a("p",[t._v("Parameterkennung der mobilen Plattform.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/content/hash/default")])]),t._v(" "),a("h4",{attrs:{id:"antwort-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-29"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Hex")]),t._v(" "),a("p",[t._v("Hexadezimaler Hash.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-36"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('200 (OK)\nInhaltstyp: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n}\n')])])]),a("h4",{attrs:{id:"fehlerantwort-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-14"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")]),t._v(" "),a("h3",{attrs:{id:"inhalt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inhalt"}},[t._v("#")]),t._v(" Inhalt")]),t._v(" "),a("p",[t._v("POST/ Die Anzahl der JSON-Objekte, die den Seitencode aus dem Vorlagenparameter zurückgeben. Wenn der optionale Parameter source als "),a("code",[t._v("true")]),t._v(" oder "),a("code",[t._v("1")]),t._v(" angegeben ist, führt der JSON-Objektbaum keine Funktion aus und empfängt keine Daten. Der JSON-Objektbaum kann im visuellen Seitendesigner verwendet werden.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-34"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("template")]),t._v(" "),a("p",[t._v("Der Seitencode.")])]),t._v(" "),a("li",[a("p",[t._v("[source]")]),t._v(" "),a("p",[t._v("Bei Angabe von "),a("code",[t._v("true")]),t._v(" oder "),a("code",[t._v("1")]),t._v(" führt der JSON-Objektbaum keine Funktionen und empfangenen Daten aus.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/content")])]),t._v(" "),a("h4",{attrs:{id:"antwort-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-30"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("tree")]),t._v(" "),a("p",[t._v("JSON-Objektbaum.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-37"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tree"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"......"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"children"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-15"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_NOTFOUND, E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[t._v("#")]),t._v(" maxblockid")]),t._v(" "),a("p",[t._v("GET/ Gibt die ID des höchsten Blocks auf dem aktuellen Knoten zurück.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-35"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/maxblockid")])]),t._v(" "),a("h4",{attrs:{id:"antwort-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-31"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[t._v("max_block_id")])]),t._v(" "),a("p",[t._v("ID des höchsten Blocks auf dem aktuellen Knoten.")]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-38"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"max_block_id"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("341")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-16"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_NOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"block-id"}},[t._v("block/{id}")])]),t._v(" "),a("p",[t._v("GET/ Gibt relevante Informationen des Blocks mit der angegebenen ID zurück.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-36"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[t._v("Ich würde\nBlock-ID.")])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/block/32")])]),t._v(" "),a("h4",{attrs:{id:"antwort-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-32"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("hash")]),t._v(" "),a("p",[t._v("Hash des Blocks.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Adresse des Kontos, das den Block signiert hat.")])]),t._v(" "),a("li",[a("p",[t._v("time")]),t._v(" "),a("p",[t._v("Zeitstempel der Blockgenerierung.")])]),t._v(" "),a("li",[a("p",[t._v("tx_count")]),t._v(" "),a("p",[t._v("Gesamtzahl der Transaktionen im Block.")])]),t._v(" "),a("li",[a("p",[t._v("rollbacks_hash")]),t._v(" "),a("p",[t._v("Hash für Block-Rollback.")])]),t._v(" "),a("li",[a("p",[t._v("node_position")]),t._v(" "),a("p",[t._v("Position des Blocks in der Liste der Ehrenknoten.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-39"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-118432674655542910")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1551145365")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tx_count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rollbacks_hash"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"node_position"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-17"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_NOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[t._v("avatar/{ecosystem}/{member}")])]),t._v(" "),a("p",[t._v("GET/ Gibt den Avatar des Benutzers in der Mitgliedertabelle zurück (Sie können ihn ohne Anmeldung verwenden).")]),t._v(" "),a("h4",{attrs:{id:"anfrage-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-37"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("ecosystem")]),t._v(" "),a("p",[t._v("Ecosystem ID.")])]),t._v(" "),a("li",[a("p",[t._v("member")]),t._v(" "),a("p",[t._v("Kontoadresse des Benutzers.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/avatar/1/-118432674655542910")])]),t._v(" "),a("h4",{attrs:{id:"antwort-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-33"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("p",[t._v("Der Typ des Anforderungsheaders Content-Type ist image, und die Bilddaten werden im Antworttext zurückgegeben.")]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-40"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("200 (OK)\nContent-Type: image/png\n")])])]),a("h4",{attrs:{id:"fehlerantwort-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-18"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_NOTFOUND E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[t._v("config/centrifugo")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Hostadresse und den Port von centrifugo zurück.\nFür diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-38"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/config/centrifugo")])]),t._v(" "),a("h4",{attrs:{id:"antwort-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-34"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("p",[t._v("Das Antwortformat ist "),a("code",[t._v("http://address:port")]),t._v(", zum Beispiel: "),a("code",[t._v("http://127.0.0.1:8100")]),t._v(".")]),t._v(" "),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[t._v("#")]),t._v(" updnotificator")]),t._v(" "),a("p",[t._v("POST/ Senden Sie alle Nachrichten, die noch nicht gesendet wurden, an den Benachrichtigungsdienst von centrifugo. Senden Sie nur Nachrichten für bestimmte Ökosysteme und Mitglieder.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-39"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Kontoadresse des Mitglieds.")])]),t._v(" "),a("li",[a("p",[t._v("ecosystem")]),t._v(" "),a("p",[t._v("Ecosystem ID.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/updnotificator")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-41"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{400:function(t,e,a){"use strict";a.r(e);var s=a(51),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[t._v("#")]),t._v(" RESTful API v2")]),t._v(" "),a("p",[t._v("AAlle von Weaver bereitgestellten Funktionen, einschließlich Authentifizierung, Empfang von Ökosystemdaten, Fehlerbehandlung, Datenbanktabellenoperationen, Seiten- und Vertragsimplementierung, sind über die REST-API von IBAX verfügbar.")]),t._v(" "),a("p",[t._v("Mit der REST-API können Entwickler auf alle Plattformfunktionen zugreifen, ohne Weaver zu verwenden.")]),t._v(" "),a("p",[t._v("API-Befehlsaufrufe werden durch Adressieren von „/api/v2/command/[param]“ ausgeführt, wobei "),a("code",[t._v("command")]),t._v(" der Befehlsname und "),a("code",[t._v("param")]),t._v(" ein zusätzlicher Parameter ist. Die Anfrageparameter müssen im Format "),a("code",[t._v("Content-Type: x-www-form-urlencoded")]),t._v(" gesendet werden. Das Ergebnis der Serverantwort liegt im JSON-Format vor.")]),t._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#Fehlerbehandlung"}},[t._v("Fehlerbehandlung")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#Fehlerliste"}},[t._v("Fehlerliste")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#authentication"}},[t._v("Authentifizierung")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[t._v("getuid")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#einloggen"}},[t._v("Anmeldung")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#apis-unavailable-to-clb"}},[t._v("APIs für CLB nicht verfügbar")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#service-commands"}},[t._v("Service commands")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ausf%C3%BChrung"}},[t._v("Ausführung")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#data-request-functions"}},[t._v("Datenanforderungsfunktionen")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#Guthaben"}},[t._v("Guthaben")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#Bl%C3%B6cke"}},[t._v("Blöcke")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#detaillierte-Bl%C3%B6cke"}},[t._v("detaillierte Blöcke")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[t._v("/data/{table}/{id}/{column}/{hash}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#Schl%C3%BCsselinfo"}},[t._v("Schlüsselinfo")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#get-metrics"}},[t._v("Metriken abrufen")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#Tasten"}},[t._v("Tasten")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#Bl%C3%B6cke"}},[t._v("Blöcke")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#Transaktionen"}},[t._v("Transaktionen")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#%C3%96kosysteme"}},[t._v("Ökosysteme")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#vollst%C3%A4ndige-knoten"}},[t._v("Vollständige Knoten")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#%C3%B6kosystem"}},[t._v("Ökosystem")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#%C3%B6kosystemname"}},[t._v("Ökosystemname")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#%C3%B6kosysteme"}},[t._v("Ökosysteme")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[t._v("appparams/{appID}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[t._v("appparam/{appid}/{name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#%C3%B6kosystemparameter"}},[t._v("Ökosystemparameter")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#%C3%B6kosystemparam-Name"}},[t._v("Ökosystemparam/{Name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[t._v("tables/[?limit=…&offset=…]")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#tabellenname"}},[t._v("Tabelle/{Name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-colums"}},[t._v("list/{name}[?limit=…&offset=…&columns=…]")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[t._v("sections[?limit=…&offset=…&lang=]")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-colums"}},[t._v("row/{name}/{id}[?columns=]")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#systemparameter"}},[t._v("Systemparameter")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#geschichte-Name-ID"}},[t._v("Geschichte/{Name}/{ID}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-block-name"}},[t._v("interface/{page|menu|block}/{name}")])])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#vertragsfunktionen"}},[t._v("Vertragsfunktionen")])]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#vertr%C3%A4ge-limit-offset"}},[t._v("verträge[?limit=…&offset=…]")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#vertragsname"}},[t._v("Vertrag/{Name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#sendetx"}},[t._v("sendeTX")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[t._v("txstatus")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[t._v("txinfo/{hash}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[t._v("txinfoMultiple/")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page-validators_count-name"}},[t._v("/page/validators_count/{name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#inhalt-Men%C3%BC-Seitenname"}},[t._v("Inhalt/Menü|Seite/{Name}")])]),t._v(" "),a("li",[t._v("[Inhalt/Quelle/{Name}](#name der Inhaltsquelle)")]),t._v(" "),a("li",[a("a",{attrs:{href:"#inhalt-Hash-Name"}},[t._v("Inhalt/Hash/{Name}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#inhalt"}},[t._v("Inhalt")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[t._v("maxblockid")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[t._v("block/{id}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[t._v("avatar/{ecosystem}/{member}")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#config-zentrifuge"}},[t._v("config/zentrifuge")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[t._v("updnotificator")])])])])]),t._v(" "),a("h2",{attrs:{id:"fehlerbehandlung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerbehandlung"}},[t._v("#")]),t._v(" Fehlerbehandlung")]),t._v(" "),a("p",[t._v("Wenn die Anfrage erfolgreich ausgeführt wird, wird ein Statuscode "),a("code",[t._v("200")]),t._v(" zurückgegeben. Tritt ein Fehler auf, wird zusätzlich zum Fehlerstatus ein JSON-Objekt mit folgenden Feldern zurückgegeben:")]),t._v(" "),a("ul",[a("li",[t._v("Error")])]),t._v(" "),a("p",[t._v("Fehlerkennung.")]),t._v(" "),a("ul",[a("li",[t._v("Nachricht")])]),t._v(" "),a("p",[t._v("Der im Fehlerfall zurückgegebene Text.")]),t._v(" "),a("ul",[a("li",[t._v("Parameter")])]),t._v(" "),a("p",[t._v("Zusätzliche Parameter des Fehlers, die im Fehlerfall im zurückgegebenen Text enthalten sein können.")]),t._v(" "),a("blockquote",[a("p",[t._v("Response example")])]),t._v(" "),a("p",[t._v("400 (Bad request)")]),t._v(" "),a("p",[t._v("Content-Type: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"err"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"E_INVALIDWALLET"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"msg"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Wallet 1234-5678-9012-3444-3488 is not valid"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"params"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1234-5678-9012-3444-3488"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"fehlerliste"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerliste"}},[t._v("#")]),t._v(" Fehlerliste")]),t._v(" "),a("blockquote",[a("p",[t._v("E_VERTRAG")])]),t._v(" "),a("p",[t._v("Vertrag "),a("code",[t._v("%s")]),t._v(" existiert nicht")]),t._v(" "),a("blockquote",[a("p",[t._v("E_DBNIL")])]),t._v(" "),a("p",[t._v("Leere Datenbank")]),t._v(" "),a("blockquote",[a("p",[t._v("E_DELETEDKEY")])]),t._v(" "),a("p",[t._v("Kontoadresse gesperrt")]),t._v(" "),a("blockquote",[a("p",[t._v("E_ÖKOSYSTEM")])]),t._v(" "),a("p",[t._v("Ökosystem "),a("code",[t._v("%d")]),t._v(" existiert nicht")]),t._v(" "),a("blockquote",[a("p",[t._v("E_EMPTYPUBLIC")])]),t._v(" "),a("p",[t._v("Ungültiger öffentlicher Schlüssel für das Konto")]),t._v(" "),a("blockquote",[a("p",[t._v("E_KEYNOTFOUND")])]),t._v(" "),a("p",[t._v("Kontoadresse nicht gefunden")]),t._v(" "),a("blockquote",[a("p",[t._v("E_HASHFALSCH")])]),t._v(" "),a("p",[t._v("Falscher Hash")]),t._v(" "),a("blockquote",[a("p",[t._v("E_HASHNOTFOUND")])]),t._v(" "),a("p",[t._v("Nicht gefunden")]),t._v(" "),a("blockquote",[a("p",[t._v("E_HEAVYPAGE")])]),t._v(" "),a("p",[t._v("Zu viele Seiten geladen")]),t._v(" "),a("blockquote",[a("p",[t._v("E_INVALIDWALLET")])]),t._v(" "),a("p",[t._v("Ungültige Wallet-Adresse "),a("code",[t._v("%s")])]),t._v(" "),a("blockquote",[a("p",[t._v("E_LIMITTXSIZE")])]),t._v(" "),a("p",[t._v("Größe einer Transaktion außerhalb des Limits")]),t._v(" "),a("blockquote",[a("p",[t._v("E_NICHT GEFUNDEN")])]),t._v(" "),a("p",[t._v("Seiten- oder Menüinhalt nicht gefunden")]),t._v(" "),a("blockquote",[a("p",[t._v("E_PARAMNICHT GEFUNDEN")])]),t._v(" "),a("p",[t._v("Parameter nicht gefunden")]),t._v(" "),a("blockquote",[a("p",[t._v("E_PERMISSION")])]),t._v(" "),a("p",[t._v("Keine Erlaubnis")]),t._v(" "),a("blockquote",[a("p",[t._v("E_QUERY")])]),t._v(" "),a("p",[t._v("Datenbankabfragefehler")]),t._v(" "),a("blockquote",[a("p",[t._v("E_WIEDERHERGESTELLT")])]),t._v(" "),a("p",[t._v("Die API hat einen Panikfehler.\nGibt einen Fehler zurück, wenn ein Panikfehler vorliegt.\nEs bedeutet, dass Sie auf einen Fehler gestoßen sind, der lokalisiert und behoben werden muss.")]),t._v(" "),a("blockquote",[a("p",[t._v("E_SERVER")])]),t._v(" "),a("p",[t._v("Serverfehler.\nWenn es einen Fehler in der golang-Bibliotheksfunktion gibt, kehrt sie zurück. Das msg-Feld enthält den im Fehlerfall zurückgegebenen Text.")]),t._v(" "),a("p",[t._v("Als Antwort auf jeden Befehl kann ein "),a("strong",[t._v("E_SERVER")]),t._v("-Fehler auftreten. Wenn es aufgrund falscher Eingabeparameter auftritt, können Sie es in einen verwandten Fehler ändern. In einem anderen Fall meldet dieser Fehler einen ungültigen Betrieb oder eine falsche Systemkonfiguration, was einen detaillierteren Untersuchungsbericht erfordert.")]),t._v(" "),a("blockquote",[a("p",[t._v("E_SIGNATUR")])]),t._v(" "),a("p",[t._v("Falsche Signatur")]),t._v(" "),a("blockquote",[a("p",[t._v("E_STATELOGIN")])]),t._v(" "),a("p",[a("code",[t._v("%s")]),t._v(" ist kein Mitglied des Ökosystems "),a("code",[t._v("%s")])]),t._v(" "),a("blockquote",[a("p",[t._v("E_TABLENOTFOUND")])]),t._v(" "),a("p",[t._v("Tabelle "),a("code",[t._v("%s")]),t._v(" nicht gefunden")]),t._v(" "),a("blockquote",[a("p",[t._v("E_TOKENABGELAUFEN")])]),t._v(" "),a("p",[t._v("Sitzung "),a("code",[t._v("%s")]),t._v(" ist abgelaufen")]),t._v(" "),a("blockquote",[a("p",[t._v("E_UNAUTHORIZED")])]),t._v(" "),a("p",[t._v("Unbefugt.")]),t._v(" "),a("p",[t._v("Wenn Sie nicht angemeldet sind oder die Sitzung abgelaufen ist, gibt jeder Befehl außer "),a("code",[t._v("getuid, login")]),t._v(" einen")]),t._v(" "),a("p",[t._v("E_UNAUTHORIZED-Fehler zurück.")]),t._v(" "),a("blockquote",[a("p",[t._v("E_UNKNOWNUID")])]),t._v(" "),a("p",[t._v("Unbekannte UID")]),t._v(" "),a("blockquote",[a("p",[t._v("E_AKTUALISIEREN")])]),t._v(" "),a("p",[t._v("Der Knoten aktualisiert die Blockchain")]),t._v(" "),a("blockquote",[a("p",[t._v("E_STOPP")])]),t._v(" "),a("p",[t._v("Der Knoten wurde gestoppt")]),t._v(" "),a("blockquote",[a("p",[t._v("E_NOIMPLEMENTED")])]),t._v(" "),a("p",[t._v("Noch nicht implementiert")]),t._v(" "),a("blockquote",[a("p",[t._v("E_GESPERRT")])]),t._v(" "),a("p",[t._v("Die Kontoadresse ist in "),a("code",[t._v("%s")]),t._v(" verboten")]),t._v(" "),a("blockquote",[a("p",[t._v("E_CHECKROLE")])]),t._v(" "),a("p",[t._v("Zugriff verweigert")]),t._v(" "),a("h2",{attrs:{id:"apis-sind-fur-clb-nicht-verfugbar"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#apis-sind-fur-clb-nicht-verfugbar"}},[t._v("#")]),t._v(" APIs sind für CLB nicht verfügbar")]),t._v(" "),a("p",[t._v("Schnittstellenanforderung für den CLB-Knoten nicht verfügbar:")]),t._v(" "),a("ul",[a("li",[t._v("Metriken")]),t._v(" "),a("li",[t._v("txinfo")]),t._v(" "),a("li",[t._v("txinfoMultiple")]),t._v(" "),a("li",[t._v("appparam")]),t._v(" "),a("li",[t._v("appparams")]),t._v(" "),a("li",[t._v("App-Inhalt")]),t._v(" "),a("li",[t._v("Geschichte")]),t._v(" "),a("li",[t._v("Balance")]),t._v(" "),a("li",[t._v("Block")]),t._v(" "),a("li",[t._v("maxblockid")]),t._v(" "),a("li",[t._v("Blöcke")]),t._v(" "),a("li",[t._v("detaillierte Blöcke")]),t._v(" "),a("li",[t._v("Ökosystemparameter")]),t._v(" "),a("li",[t._v("Systemparameter")]),t._v(" "),a("li",[t._v("Ökosysteme")]),t._v(" "),a("li",[t._v("Ökosystemparam")]),t._v(" "),a("li",[t._v("Ökosystemname")]),t._v(" "),a("li",[t._v("Brieftaschenverlauf")]),t._v(" "),a("li",[t._v("tx_record")])]),t._v(" "),a("h2",{attrs:{id:"authentifizierung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentifizierung"}},[t._v("#")]),t._v(" Authentifizierung")]),t._v(" "),a("p",[a("RouterLink",{attrs:{to:"/de/reference/api2.html#https://jwt.io/"}},[t._v("JWT-Token")]),t._v(" wird zur Authentifizierung verwendet. Nach Erhalt des JWT-Tokens muss es in jedem Request-Header platziert werden: "),a("code",[t._v("Authorization: Bearer TOKEN_HERE")]),t._v(".")],1),t._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[t._v("#")]),t._v(" getuid")]),t._v(" "),a("p",[t._v("GET/ gibt einen eindeutigen Wert zurück, signiert ihn mit dem privaten Schlüssel und sendet ihn dann mit dem Befehl "),a("a",{attrs:{href:"#login"}},[t._v("login")]),t._v(" an den Server zurück.")]),t._v(" "),a("p",[t._v("Um ein temporäres JWT-Token zu generieren, müssen Sie das Token an "),a("strong",[t._v("Authorization")]),t._v(" übergeben, wenn Sie "),a("strong",[t._v("login")]),t._v(" aufrufen.")]),t._v(" "),a("h4",{attrs:{id:"anfrage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/getuid")])]),t._v(" "),a("h4",{attrs:{id:"antwort"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[t._v("Flüssigkeit")])]),t._v(" "),a("p",[t._v("Signaturnummern.")]),t._v(" "),a("ul",[a("li",[t._v("Zeichen")])]),t._v(" "),a("p",[t._v("Während der Anmeldung übergebenes temporäres Token.")]),t._v(" "),a("p",[t._v("Die Lebensdauer eines temporären Tokens beträgt 5 Sekunden.")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Netzwerk ID")]),t._v(" "),a("p",[t._v("Serverkennung.")]),t._v(" "),a("p",[t._v("Wenn keine Autorisierung erforderlich ist, werden die folgenden Informationen zurückgegeben:")])]),t._v(" "),a("li",[a("p",[t._v("erlöschen")]),t._v(" "),a("p",[t._v("Ablaufzeit.")])]),t._v(" "),a("li",[a("p",[t._v("Ökosystem")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Kontoadresse.")])]),t._v(" "),a("li",[a("p",[t._v("die Anschrift")]),t._v(" "),a("p",[t._v("Wallet-Adresse „XXXX-XXXX-.....-XXXX“.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (in Ordnung)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"uid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4999317241855959593"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"token"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9........I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"network_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4717243765193692211"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"anmeldung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anmeldung"}},[t._v("#")]),t._v(" Anmeldung")]),t._v(" "),a("p",[t._v("POST/ Authentifizierung der Benutzeridentität.")]),t._v(" "),a("p",[t._v("Der Befehl "),a("strong",[t._v("getuid")]),t._v(" sollte zuerst aufgerufen werden, um einen eindeutigen Wert zu erhalten und ihn zu signieren. Das temporäre JWT-Token von getuid muss im Anforderungsheader übergeben werden.")]),t._v(" "),a("p",[t._v("Wenn die Anfrage erfolgreich war, wird das in der Antwort erhaltene Token in "),a("strong",[t._v("Autorisierung")]),t._v(" aufgenommen.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-2"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/login")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[Ökosystem]")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")]),t._v(" "),a("p",[t._v("Wenn nicht angegeben, ID des ersten Ökosystems standardmäßig.")])]),t._v(" "),a("li",[a("p",[t._v("[erlöschen]")]),t._v(" "),a("p",[t._v("Lebensdauer des JWT-Tokens in Sekunden, standardmäßig 28800.")])]),t._v(" "),a("li",[a("p",[t._v("[Publikumsschlüssel]")]),t._v(" "),a("p",[t._v("Hexadezimaler öffentlicher Schlüssel des Kontos.")])]),t._v(" "),a("li",[a("p",[t._v("[Schlüssel_ID]")]),t._v(" "),a("p",[t._v("Kontoadresse "),a("code",[t._v("XXXX-...-XXXX")]),t._v(".")]),t._v(" "),a("p",[t._v("Verwenden Sie diesen Parameter, wenn der öffentliche Schlüssel bereits in der Blockchain gespeichert ist. Es kann nicht gleichzeitig mit dem Pubkey-Parameter verwendet werden.")])]),t._v(" "),a("li",[a("p",[t._v("Unterschrift")]),t._v(" "),a("p",[t._v("UID-Signatur erhalten über getuid.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-2"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Zeichen")]),t._v(" "),a("p",[t._v("JWT-Token.")])]),t._v(" "),a("li",[a("p",[t._v("Ökosystem")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Kontoadressen-ID")])]),t._v(" "),a("li",[a("p",[t._v("die Anschrift")]),t._v(" "),a("p",[t._v("Wallet-Adresse "),a("code",[t._v("XXXX-...-XXXX")]),t._v(".")])]),t._v(" "),a("li",[a("p",[t._v("Notify_key")]),t._v(" "),a("p",[t._v("Benachrichtigungs-ID.")])]),t._v(" "),a("li",[a("p",[t._v("isnode")]),t._v(" "),a("p",[t._v("Ob die Kontoadresse der Besitzer des Knotens ist. Wert: "),a("code",[t._v("true, false")]),t._v(".")])]),t._v(" "),a("li",[a("p",[t._v("Ist Besitzer")]),t._v(" "),a("p",[t._v("Ob die Kontoadresse der Ersteller des Ökosystems ist. Wert: "),a("code",[t._v("true, false")]),t._v(".")])]),t._v(" "),a("li",[a("p",[t._v("obs")]),t._v(" "),a("p",[t._v("Ob das registrierte Ökosystem CLB ist. Wert: "),a("code",[t._v("true, false")]),t._v(".")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-2"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Content-Type: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"token"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9........AHDRDqDFBoWEHw-9lfIcLobehvNEeIYBB4BIb5J72aQ"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ecosystem"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"54321"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"address"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4321-....-2223"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-2"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")]),t._v(" "),a("h2",{attrs:{id:"dienstbefehle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dienstbefehle"}},[t._v("#")]),t._v(" Dienstbefehle")]),t._v(" "),a("h3",{attrs:{id:"ausfuhrung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ausfuhrung"}},[t._v("#")]),t._v(" Ausführung")]),t._v(" "),a("p",[t._v("GET/ Gibt die Version des aktuellen Servers zurück.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-3"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/version")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-3"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('200 (OK)\nContent-Type: application/json\n"1.2.6"\n')])])]),a("h2",{attrs:{id:"datenabfragefunktionen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#datenabfragefunktionen"}},[t._v("#")]),t._v(" Datenabfragefunktionen")]),t._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[t._v("#")]),t._v(" Balance")]),t._v(" "),a("p",[t._v("GET/ Fordern Sie den Kontostand der Kontoadresse im aktuellen Ökosystem an.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-4"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/balance/{wallet}")])]),t._v(" "),a("ul",[a("li",[t._v("Brieftasche")])]),t._v(" "),a("p",[t._v("Adresskennung. Sie können es in einem beliebigen Format "),a("code",[t._v("int64, uint64, XXXX-...-XXXX")]),t._v(" angeben. Diese Adresse wird in dem Ökosystem abgefragt, in dem der Benutzer gerade angemeldet ist.")]),t._v(" "),a("h4",{attrs:{id:"antwort-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-3"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Menge")]),t._v(" "),a("p",[t._v("Kontostand der kleinsten Einheit.")])]),t._v(" "),a("li",[a("p",[t._v("Geld")]),t._v(" "),a("p",[t._v("Kontostand.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-4"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"amount"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"877450000000000"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"money"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"877.45"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-3"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER, E_INVALIDWALLET")]),t._v(" "),a("h3",{attrs:{id:"blocke"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocke"}},[t._v("#")]),t._v(" Blöcke")]),t._v(" "),a("p",[t._v("GET/ gibt eine Liste zurück, die zusätzliche Informationen zu Transaktionen in jedem Block enthält.\nFür diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-5"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/blocks")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("block_id")]),t._v(" "),a("p",[t._v("Höhe des abzufragenden Startblocks.")])]),t._v(" "),a("li",[a("p",[t._v("Anzahl")]),t._v(" "),a("p",[t._v("Anzahl der Blöcke")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-4"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Blockhöhe")]),t._v(" "),a("p",[t._v("Die Liste der Transaktionen im Block und die zusätzlichen Informationen zu jeder Transaktion:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Haschisch")]),t._v(" "),a("p",[t._v("Transaktionshash.")])]),t._v(" "),a("li",[a("p",[t._v("Vertragsname")]),t._v(" "),a("p",[t._v("Vertragsname.")])]),t._v(" "),a("li",[a("p",[t._v("Parameter")]),t._v(" "),a("p",[t._v("Ein Array von Vertragsparametern.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Für den ersten Block die Kontoadresse des ersten Blocks, der die Transaktion signiert hat.\nFür alle anderen Blöcke die Adresse des Kontos, das die Transaktion signiert hat.")])])])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-5"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('200 (OK)\nContent-Type: application/json\n{"1":\n [{"hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"fehlerantwort-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-4"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER, E_NICHT GEFUNDEN")]),t._v(" "),a("h3",{attrs:{id:"detaillierte-blocke"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detaillierte-blocke"}},[t._v("#")]),t._v(" detaillierte Blöcke")]),t._v(" "),a("p",[t._v("GET/ gibt eine Liste mit detaillierten zusätzlichen Informationen zu Transaktionen in jedem Block zurück.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-6"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/detailed_blocks")])]),t._v(" "),a("h4",{attrs:{id:"antwort-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-5"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[t._v("Blockhöhe\n"),a("ul",[a("li",[a("p",[t._v("Kopfzeile blockieren")]),t._v(" "),a("p",[t._v("Der Blockkopf enthält die folgenden Felder:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("block_id")]),t._v(" "),a("p",[t._v("Blockhöhe.")])]),t._v(" "),a("li",[a("p",[t._v("Zeit")]),t._v(" "),a("p",[t._v("Zeitstempel der Blockgenerierung.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Die Adresse des Kontos, das den Block signiert hat.")])]),t._v(" "),a("li",[a("p",[t._v("Knotenposition")]),t._v(" "),a("p",[t._v("Die Position des Knotens, der den Block in der Liste der Ehrenknoten generiert.")])]),t._v(" "),a("li",[a("p",[t._v("Ausführung")]),t._v(" "),a("p",[t._v("Version mit Blockstruktur.")])])])]),t._v(" "),a("li",[a("p",[t._v("Haschisch")]),t._v(" "),a("p",[t._v("Hash blockieren.")])]),t._v(" "),a("li",[a("p",[t._v("Knotenposition")]),t._v(" "),a("p",[t._v("Position des Knotens, der den Block generiert hat, in der Liste der Ehrenknoten.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Adresse des Kontos, das den Block signiert hat.")])]),t._v(" "),a("li",[a("p",[t._v("Zeit")]),t._v(" "),a("p",[t._v("Zeitstempel der Blockgenerierung.")])]),t._v(" "),a("li",[a("p",[t._v("tx_count")]),t._v(" "),a("p",[t._v("Anzahl der Transaktionen im Block.")])]),t._v(" "),a("li",[a("p",[t._v("rollback_hash")]),t._v(" "),a("p",[t._v("Rollback-Hash blockieren.")])]),t._v(" "),a("li",[a("p",[t._v("mrkl_root")]),t._v(" "),a("p",[t._v("Merkel Transaktionsbaum des Blocks.")])]),t._v(" "),a("li",[a("p",[t._v("bin_data")]),t._v(" "),a("p",[t._v("Serialisierung des Blockheaders, aller Transaktionen im Block, des vorherigen Blockhashs und des privaten Schlüssels des Knotens, der den Block generiert hat.")])]),t._v(" "),a("li",[a("p",[t._v("sys_update")]),t._v(" "),a("p",[t._v("Enthält der Block Transaktionen zum Aktualisieren von Systemparametern.")])]),t._v(" "),a("li",[a("p",[t._v("Transaktion\nDie Liste der Transaktionen im Block und die zusätzlichen Informationen zu jeder Transaktion:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Haschisch")]),t._v(" "),a("p",[t._v("Transaktionshash.")])]),t._v(" "),a("li",[a("p",[t._v("Vertragsname")]),t._v(" "),a("p",[t._v("Vertragsname.")])]),t._v(" "),a("li",[a("p",[t._v("Parameter")]),t._v(" "),a("p",[t._v("Vertragsparameter.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Adresse des Kontos, das die Transaktion unterzeichnet hat.")])]),t._v(" "),a("li",[a("p",[t._v("Zeit")]),t._v(" "),a("p",[t._v("Zeitstempel der Transaktionsgenerierung.")])]),t._v(" "),a("li",[a("p",[t._v("Typ")]),t._v(" "),a("p",[t._v("Art der Transaktion.")])])])])])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-6"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"header"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"block_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1551069320")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ecosystem_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-118432674655542910")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"node_position"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"version"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ecosystem_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"node_position"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-118432674655542910")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1551069320")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tx_count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rollbacks_hash"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mrkl_root"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg=="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"bin_data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token null keyword"}},[t._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"sys_update"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"gen_block"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"stop_count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"transactions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"contract_name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"params"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token null keyword"}},[t._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-5"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER, E_NOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[t._v("/data/{table}/{id}/{column}/{hash}")])]),t._v(" "),a("p",[t._v("GET/ Wenn der angegebene Hash mit den Daten in der angegebenen Tabelle, dem angegebenen Feld und dem angegebenen Datensatz übereinstimmt, gibt diese Anforderung die Daten zurück. Andernfalls wird ein Fehler zurückgegeben.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-7"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /data/{table}/{id}/{column}/{hash}")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Tisch")]),t._v(" "),a("p",[t._v("Tabellenname.")])]),t._v(" "),a("li",[a("p",[t._v("Ich würde")]),t._v(" "),a("p",[t._v("Datensatz-ID.")])]),t._v(" "),a("li",[a("p",[t._v("Säule")]),t._v(" "),a("p",[t._v("Feldname.")])]),t._v(" "),a("li",[a("p",[t._v("Haschisch")]),t._v(" "),a("p",[t._v("Hash der angeforderten Daten.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-6"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("p",[t._v("Binärdaten")]),t._v(" "),a("h3",{attrs:{id:"schlusselinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schlusselinfo"}},[t._v("#")]),t._v(" Schlüsselinfo")]),t._v(" "),a("p",[t._v("GET/ gibt eine Liste von Ökosystemen zurück, einschließlich Rollen, die bei der angegebenen Adresse registriert sind.\nFür diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-8"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/keyinfo/{key_id}")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Adresskennung, Sie können ein beliebiges Format "),a("code",[t._v("int64, uint64, XXXX-...-XXXX")]),t._v(" angeben.")]),t._v(" "),a("p",[t._v("Anfrage in allen Ökosystemen abgefragt.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-7"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Ökosystem")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Name des Ökosystems.")])]),t._v(" "),a("li",[a("p",[t._v("Rollen")]),t._v(" "),a("p",[t._v("Eine Liste von Rollen mit den ID- und Namensfeldern.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-7"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ecosystem"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"platform ecosystem"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"roles"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Developer"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-6"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_SERVER, E_INVALIDWALLET")]),t._v(" "),a("h2",{attrs:{id:"metriken-abrufen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metriken-abrufen"}},[t._v("#")]),t._v(" Metriken abrufen")]),t._v(" "),a("h3",{attrs:{id:"schlussel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schlussel"}},[t._v("#")]),t._v(" Schlüssel")]),t._v(" "),a("p",[t._v("GET/ Gibt die Anzahl der Kontoadressen zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-9"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/metrics/keys")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-8"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("28")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"blocke-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocke-2"}},[t._v("#")]),t._v(" Blöcke")]),t._v(" "),a("p",[t._v("GET/ Gibt die Anzahl der Blöcke zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-10"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/metrics/blocks")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-9"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("28")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"transaktionen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaktionen"}},[t._v("#")]),t._v(" Transaktionen")]),t._v(" "),a("p",[t._v("GET/ Gibt die Gesamtzahl der Transaktionen zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-11"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/metrics/transactions")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-10"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("28")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"okosysteme"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#okosysteme"}},[t._v("#")]),t._v(" Ökosysteme")]),t._v(" "),a("p",[t._v("GET/ Gibt die Anzahl der Ökosysteme zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-12"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/metrics/ecosystems")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-11"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("28")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"vollknoten"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vollknoten"}},[t._v("#")]),t._v(" Vollknoten")]),t._v(" "),a("p",[t._v("GET/ gibt die Anzahl der Ehrenknoten zurück.")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/metrics/fullnodes")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-12"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("28")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h2",{attrs:{id:"okosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#okosystem"}},[t._v("#")]),t._v(" Ökosystem")]),t._v(" "),a("h3",{attrs:{id:"okosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#okosystemname"}},[t._v("#")]),t._v(" Ökosystemname")]),t._v(" "),a("p",[t._v("GET/ gibt den Namen des Ökosystems anhand seiner Kennung zurück.\nFür diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-13"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/ecosystemname?id=..")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Ich würde")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-13"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ecosystem_name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"platform_ecosystem"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-7"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_PARAMNICHT GEFUNDEN")]),t._v(" "),a("h3",{attrs:{id:"okosysteme-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#okosysteme-2"}},[t._v("#")]),t._v(" Ökosysteme")]),t._v(" "),a("p",[t._v("GET/ Gibt die Anzahl der Ökosysteme zurück.")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/ecosystems/")])]),t._v(" "),a("h4",{attrs:{id:"antwort-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-8"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Anzahl")]),t._v(" "),a("p",[t._v("Die Anzahl der installierten Ökosysteme.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-14"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"appparams-appid"}},[t._v("appparams/{appID}")])]),t._v(" "),a("p",[t._v("GET/ Gibt eine Liste von Anwendungsparametern im aktuellen oder angegebenen Ökosystem zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-14"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/appparams")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[appid]")]),t._v(" "),a("p",[t._v("Anwendung ID.")])]),t._v(" "),a("li",[a("p",[t._v("[ecosystem]")])])]),t._v(" "),a("p",[t._v("Ökosystem-ID. Wenn nicht angegeben, werden die Parameter des aktuellen Ökosystems zurückgegeben.")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[names]")]),t._v(" "),a("p",[t._v("Liste der empfangenen Parameter.\nSie können die Liste der Parameternamen durch Kommas getrennt angeben. Zum Beispiel: "),a("code",[t._v("/api/v2/appparams/1?names=name,mypar")]),t._v(".")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-9"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("aufführen")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die folgenden Parameter:")]),t._v(" "),a("ul",[a("li",[t._v("Name, Parametername;")]),t._v(" "),a("li",[t._v("Wert, Parameterwert;")]),t._v(" "),a("li",[t._v("Bedingungen, Erlaubnis zum Ändern von Parametern.")])])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-15"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyState"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mypar"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"My value"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-8"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_ECOSYSTEM")]),t._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[t._v("appparam/{appid}/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt Informationen zurück, die sich auf den Parameter {name} der Anwendung {appid} im aktuellen oder angegebenen Ökosystem beziehen.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-15"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/appparam/{appid}/{name}[?ecosystem=1]")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("appid")]),t._v(" "),a("p",[t._v("Anwendung ID.")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Name des angeforderten Parameters.")])]),t._v(" "),a("li",[a("p",[t._v("[ecosystem]")])])]),t._v(" "),a("p",[t._v("Ökosystem-ID (optionaler Parameter).\nGibt standardmäßig das aktuelle Ökosystem zurück.")]),t._v(" "),a("h4",{attrs:{id:"antwort-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-10"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Ich würde")]),t._v(" "),a("p",[t._v("Parameter-ID.")])]),t._v(" "),a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Parametername.")])]),t._v(" "),a("li",[a("p",[t._v("Wert")]),t._v(" "),a("p",[t._v("Parameterwert.")])]),t._v(" "),a("li",[a("p",[t._v("Bedingungen")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern von Parametern.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-16"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"par"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"My value"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-9"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_ECOSYSTEM, E_PARAMNOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"okosystemparam"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#okosystemparam"}},[t._v("#")]),t._v(" Ökosystemparam")]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der Ökosystemparameter zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-16"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/ecosystemparams/[?ecosystem=...&names=...]")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[Ökosystem]")]),t._v(" "),a("p",[t._v("Ökosystem-ID. Wenn nicht angegeben, wird die aktuelle Ökosystem-ID zurückgegeben.")])]),t._v(" "),a("li",[a("p",[t._v("[Namen]\nListe der Anforderungsparameter, durch Kommas getrennt.")]),t._v(" "),a("p",[t._v("Zum Beispiel: "),a("code",[t._v("/api/v2/ecosystemparams/?names=name,currency,logo*")]),t._v(".")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-11"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("aufführen")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die folgenden Parameter:")])]),t._v(" "),a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Parametername.")])]),t._v(" "),a("li",[a("p",[t._v("Wert")]),t._v(" "),a("p",[t._v("Parameterwert.")])]),t._v(" "),a("li",[a("p",[t._v("Bedingungen")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern von Parametern.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-17"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MyState"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"currency"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MY"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-10"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_ECOSYSTEM")]),t._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[t._v("ecosystemparam/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt Informationen zum Parameter {Name} im aktuellen oder angegebenen Ökosystem zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-17"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/ecosystemparam/{name}[?ecosystem=1]")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Name des Anforderungsparameters.")])]),t._v(" "),a("li",[a("p",[t._v("[ecosystem]")]),t._v(" "),a("p",[t._v("Sie können die Ökosystem-ID angeben. Standardmäßig wird die aktuelle Ökosystem-ID zurückgegeben.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-12"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Parametername.")])]),t._v(" "),a("li",[a("p",[t._v("value")]),t._v(" "),a("p",[t._v("Parameterwert.")])]),t._v(" "),a("li",[a("p",[t._v("conditions")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern der Parameter.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-18"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"currency"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MYCUR"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-11"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_ECOSYSTEM")]),t._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[t._v("tables/[?limit=…&offset=…]")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der Tabellen des aktuellen Ökosystems zurück, in der Sie den Offset und die Anzahl der Einträge festlegen können.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-18"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[limit]")]),t._v(" "),a("p",[t._v("Anzahl der Einträge, standardmäßig 25.")])]),t._v(" "),a("li",[a("p",[t._v("[offset]")]),t._v(" "),a("p",[t._v("Offset, standardmäßig 0.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/tables")])]),t._v(" "),a("h4",{attrs:{id:"antwort-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-13"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("count")]),t._v(" "),a("p",[t._v("Gesamteinträge in der Tabelle.")])]),t._v(" "),a("li",[a("p",[t._v("list")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die folgenden Parameter:")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname ohne Präfix.")])]),t._v(" "),a("li",[a("p",[t._v("count")]),t._v(" "),a("p",[t._v("Anzahl der Einträge in der Tabelle.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-19"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"100"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"accounts"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"citizens"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"table-name"}},[t._v("table/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt Informationen zu der vom aktuellen Ökosystem angeforderten Tabelle zurück.\nGibt die folgenden Feldinformationen zurück:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname")])]),t._v(" "),a("li",[a("p",[t._v("insert")]),t._v(" "),a("p",[t._v("Berechtigung zum Hinzufügen neuer Einträge.")])]),t._v(" "),a("li",[a("p",[t._v("new_column")]),t._v(" "),a("p",[t._v("Berechtigung zum Hinzufügen neuer Felder.")])]),t._v(" "),a("li",[a("p",[t._v("update")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern von Einträgen.")])]),t._v(" "),a("li",[a("p",[t._v("columns")]),t._v(" "),a("p",[t._v("Eine Reihe von feldbezogenen Informationen:")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Feldname.")])]),t._v(" "),a("li",[a("p",[t._v("type")]),t._v(" "),a("p",[t._v("Felddatentyp.")])]),t._v(" "),a("li",[a("p",[t._v("perm")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern des Werts dieses Felds.")])])]),t._v(" "),a("h4",{attrs:{id:"anfrage-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-19"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/table/mytable")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname ohne das Ökosystempräfix.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-14"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname ohne das Ökosystempräfix.")])]),t._v(" "),a("li",[a("p",[t._v("insert")]),t._v(" "),a("p",[t._v("Berechtigung zum Hinzufügen neuer Einträge.")])]),t._v(" "),a("li",[a("p",[t._v("new_column")]),t._v(" "),a("p",[t._v("Berechtigung zum Hinzufügen neuer Felder.")])]),t._v(" "),a("li",[a("p",[t._v("update")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern von Einträgen.")])]),t._v(" "),a("li",[a("p",[t._v("conditions")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern der Tabellenkonfiguration.")])]),t._v(" "),a("li",[a("p",[t._v("columns")]),t._v(" "),a("p",[t._v("Eine Reihe von feldbezogenen Informationen:")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Feldname.")])]),t._v(" "),a("li",[a("p",[t._v("type")]),t._v(" "),a("p",[t._v("Felddatentyp.")])]),t._v(" "),a("li",[a("p",[t._v("perm")]),t._v(" "),a("p",[t._v("Berechtigung zum Ändern des Werts dieses Felds.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-20"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mytable"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"insert"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"new_column"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"update"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"columns"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mynum"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"perm"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mytext"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"text"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"perm"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),t._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-12"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_TABLENOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"list-name-limit-offset-colums"}},[t._v("list/{name}[?limit=…&offset=…&columns=…]")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der angegebenen Tabelleneinträge im aktuellen Ökosystem zurück, und wo Sie den Offset und die Anzahl der Einträge festlegen können.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-20"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname.")])]),t._v(" "),a("li",[a("p",[t._v("[limit]")]),t._v(" "),a("p",[t._v("Die Anzahl der Einträge, standardmäßig 25.")])]),t._v(" "),a("li",[a("p",[t._v("[offset]")]),t._v(" "),a("p",[t._v("Offset, standardmäßig 0.")])]),t._v(" "),a("li",[a("p",[t._v("[columns]\nListe der angeforderten Spalten, getrennt durch Kommas. Wenn nicht angegeben, werden alle Spalten zurückgegeben. In Anruffällen wird die ID-Spalte zurückgegeben.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/list/mytable?columns=name")])]),t._v(" "),a("h4",{attrs:{id:"antwort-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-15"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("count")]),t._v(" "),a("p",[t._v("Einträge insgesamt.")])]),t._v(" "),a("li",[a("p",[t._v("list")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die folgenden Parameter:")])]),t._v(" "),a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Eintrags-ID.\nReihenfolge der angeforderten Spalten.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-21"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"John"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Mark"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[t._v("sections[?limit=…&offset=…&lang=]")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der Einträge in Tabellenabschnitten des aktuellen Ökosystems zurück, und wo der Offset und die Anzahl der Einträge festgelegt werden können.")]),t._v(" "),a("p",[t._v("Wenn das Feld role_access eine Liste von Rollen und nicht die aktuelle Rolle enthält, wird kein Datensatz zurückgegeben. Die Daten im Titelfeld werden durch die Sprachressource Accept-Language im Anforderungsheader ersetzt.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-21"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[limit]")]),t._v(" "),a("p",[t._v("Anzahl der Einträge, standardmäßig 25.")])]),t._v(" "),a("li",[a("p",[t._v("[offset]")]),t._v(" "),a("p",[t._v("Offset, standardmäßig 0.")])]),t._v(" "),a("li",[a("p",[t._v("[lang]")]),t._v(" "),a("p",[t._v("Dieses Feld gibt die Sprachressourcen oder den Lokalisierungscode an, zum Beispiel: en, zh. Wenn keine Sprachressourcen angegeben sind, zum Beispiel: en-US, suchen Sie in der Sprachressourcengruppe en.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/sections")])]),t._v(" "),a("h4",{attrs:{id:"antwort-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-16"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("count")]),t._v(" "),a("p",[t._v("Gesamtzahl der Einträge in Tabellenabschnitten.")])]),t._v(" "),a("li",[a("p",[t._v("list")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die Informationen aller Spalten in den Tabellenabschnitten.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-22"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"title"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Development"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"urlpage"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"develop"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ...\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-13"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_TABLENOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"row-name-id-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"row-name-id-colums"}},[t._v("row/{name}/{id}[?columns=]")])]),t._v(" "),a("h3",{attrs:{id:""}},[a("a",{staticClass:"header-anchor",attrs:{href:"#"}},[t._v("#")])]),t._v(" "),a("p",[t._v("GET/ Gibt den Eintrag der angegebenen Tabelle im aktuellen Ökosystem zurück. Sie können die zurückzugebende(n) Spalte(n) angeben.")]),t._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[t._v("#")]),t._v(" Request")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Tabellenname.")])]),t._v(" "),a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Eintrags-ID.")])]),t._v(" "),a("li",[a("p",[t._v("[columns]")]),t._v(" "),a("p",[t._v("Liste der angeforderten Spalten, getrennt durch Kommas. Wenn nicht angegeben, werden alle Spalten zurückgegeben. In allen Fällen wird die ID-Spalte zurückgegeben.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/row/mytable/10?columns=name")])]),t._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[t._v("#")]),t._v(" Response")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("value")]),t._v(" "),a("p",[t._v("Ein Array von Werten der angeforderten Spalten")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("id\nEintrags-ID.")])]),t._v(" "),a("li",[a("p",[t._v("Reihenfolge der angeforderten Spalten.")])])])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-23"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"values"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"John"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_NOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"systemparam"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparam"}},[t._v("#")]),t._v(" Systemparam")]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der Plattformparameter zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-22"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/systemparams/[?names=...]")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[name]")]),t._v(" "),a("p",[t._v("Eine durch Kommas getrennte Liste von Anforderungsparametern. Beispiel: /api/v2/systemparams/?names=max_columns,max_indexes.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-17"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("list")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[t._v(" Jedes Element im Array enthält die folgenden Parameter:\n")])])]),a("ul",[a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Parametername.")])])])]),t._v(" "),a("li",[a("p",[t._v("value")]),t._v(" "),a("p",[t._v("Parameterwert.")])]),t._v(" "),a("li",[a("p",[t._v("conditions")]),t._v(" "),a("p",[t._v("Berechtigungen zum Ändern des Parameters.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-24"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"max_columns"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"100"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractAccess("')]),t._v("@1UpdateSysParam"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('")"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"max_indexes"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractAccess("')]),t._v("@1UpdateSysParam"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('")"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_PARAMNOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"history-name-id"}},[t._v("history/{name}/{id}")])]),t._v(" "),a("p",[t._v("GET/ Gibt den Änderungsdatensatz des Eintrags in der angegebenen Tabelle im aktuellen Ökosystem zurück.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-23"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Tabellenname.")])]),t._v(" "),a("li",[a("p",[t._v("ID")]),t._v(" "),a("p",[t._v("Eintrags-ID.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-18"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("list")]),t._v(" "),a("p",[t._v("Jedes Element in einem Array, dessen Elemente geänderte Parameter des angeforderten Eintrags enthalten.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-25"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"P(class, Default Ecosystem Page)"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"menu"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_menu"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"interface-page-menu-block-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-block-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"interface-page-menu-block-name"}},[t._v("interface/{page|menu|block}/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt den Eintrag des Namensfelds in der angegebenen Tabelle (Seiten, Menü oder Blöcke) des aktuellen Ökosystems zurück.")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/interface/page/default_page")])]),t._v(" "),a("h4",{attrs:{id:"anfrage-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-24"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Name")]),t._v(" "),a("p",[t._v("Name des in der Tabelle angegebenen Eintrags.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-19"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Eintrags-ID.")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Eintragsname.")])]),t._v(" "),a("li",[a("p",[t._v("other")]),t._v(" "),a("p",[t._v("Andere Spalten der Tabelle.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-26"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"P(Page content)"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"default_menu"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_menu"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"validate_count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_QUERY, E_NOTFOUND")]),t._v(" "),a("h2",{attrs:{id:"vertragsfunktionen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vertragsfunktionen"}},[t._v("#")]),t._v(" Vertragsfunktionen")]),t._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[t._v("contracts[?limit=…&offset=…]")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Liste der Verträge im aktuellen Ökosystem zurück und kann den Offset und die Anzahl der Einträge festlegen.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-25"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("[limit]")]),t._v(" "),a("p",[t._v("Anzahl der Einträge, standardmäßig 25.")])]),t._v(" "),a("li",[a("p",[t._v("[offset]")]),t._v(" "),a("p",[t._v("Offset, standardmäßig 0.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/contracts")])]),t._v(" "),a("h4",{attrs:{id:"antwort-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-20"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Anzahl")]),t._v(" "),a("p",[t._v("Gesamtzahl der Einträge.")])]),t._v(" "),a("li",[a("p",[t._v("aufführen")]),t._v(" "),a("p",[t._v("Jedes Element im Array enthält die folgenden Parameter:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Vertrags-ID.")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Vertragsname.")])]),t._v(" "),a("li",[a("p",[t._v("value")]),t._v(" "),a("p",[t._v("Vertragsinhalt.")])]),t._v(" "),a("li",[a("p",[t._v("wallet_id")]),t._v(" "),a("p",[t._v("An den Vertrag gebundene Kontoadresse.")])]),t._v(" "),a("li",[a("p",[t._v("address")]),t._v(" "),a("p",[t._v("An den Vertrag gebundene Wallet-Adresse "),a("code",[t._v("XXXX-...-XXXX")]),t._v(".")])]),t._v(" "),a("li",[a("p",[t._v("ecosystem-ID")]),t._v(" "),a("p",[t._v("ID des Ökosystems, zu dem der Vertrag gehört.")])]),t._v(" "),a("li",[a("p",[t._v("app_id")]),t._v(" "),a("p",[t._v("ID der Anwendung, zu der der Vertrag gehört.")])]),t._v(" "),a("li",[a("p",[t._v("conditions")]),t._v(" "),a("p",[t._v("Berechtigungen zur Vertragsänderung.")])]),t._v(" "),a("li",[a("p",[t._v("token_id")]),t._v(" "),a("p",[t._v("ID des Ökosystems, in dem sich der Token befindet, der zur Zahlung der Vertragsgebühr verwendet wird.")])])])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-27"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"list"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MainCondition"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"token_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"wallet_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(' "contract MainCondition '),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n conditions "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n if(EcosysParam(`founder_account`)!=$key_id)\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n warning `Sorry"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" you dont have access to this action.`\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v('"'),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"address"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0000-0000-0000-0000-0000"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(`MainCondition`)"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n ...\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"contract-name"}},[t._v("contract/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt die relevanten Informationen des angegebenen Vertrags zurück. Standardmäßig wird der Vertrag im aktuellen Ökosystem abgefragt.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-26"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Vertragsname.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/contract/mycontract")])]),t._v(" "),a("h4",{attrs:{id:"antwort-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-21"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Vertrags-ID in VM.")])]),t._v(" "),a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Vertragsname „@1MainCondition“ mit der Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("state")]),t._v(" "),a("p",[t._v("ID des Ökosystems, zu dem der Vertrag gehört.")])]),t._v(" "),a("li",[a("p",[t._v("wallet-id")]),t._v(" "),a("p",[t._v("An den Vertrag gebundene Kontoadresse.")])]),t._v(" "),a("li",[a("p",[t._v("token-ID")]),t._v(" "),a("p",[t._v("Als ID des Ökosystems, in dem sich der Token befindet, der zur Zahlung der Vertragsgebühr verwendet wird.")])]),t._v(" "),a("li",[a("p",[t._v("address")]),t._v(" "),a("p",[t._v("An den Vertrag gebundene Wallet-Adresse "),a("code",[t._v("XXXX-...-XXXX")]),t._v(".")])]),t._v(" "),a("li",[a("p",[t._v("table-id")]),t._v(" "),a("p",[t._v("Eintrags-ID des Vertrags in der Vertragstabelle.")])]),t._v(" "),a("li",[a("p",[t._v("fields")]),t._v(" "),a("p",[t._v("Das Array enthält die Strukturinformationen jedes Parameters im Datenabschnitt des Vertrags:")]),t._v(" "),a("ul",[a("li",[t._v("Name")])]),t._v(" "),a("p",[t._v("Parametername.")]),t._v(" "),a("ul",[a("li",[t._v("Type")])]),t._v(" "),a("p",[t._v("Parametertyp.")]),t._v(" "),a("ul",[a("li",[t._v("Optional")])]),t._v(" "),a("p",[t._v("Parameteroption, true bedeutet optionaler Parameter, false bedeutet obligatorischer Parameter.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-28"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"fields"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"amount"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"int"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"optional"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"string"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"optional"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("150")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@1mycontract"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tableid"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_CONTRACT")]),t._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[t._v("#")]),t._v(" sendTX")]),t._v(" "),a("p",[t._v("POST/ Empfangen Sie die Transaktion im Parameter und fügen Sie sie der Transaktionswarteschlange hinzu. Wenn die Anfrage erfolgreich ausgeführt wird, wird der Transaktions-Hash zurückgegeben. Mit dem Hash erhalten Sie die entsprechende Transaktion im Block. Wenn eine Fehlerantwort auftritt, wird der Hash in die Fehlertextnachricht eingefügt.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-27"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[t._v("tx_key")])]),t._v(" "),a("p",[t._v("Transaktionsinhalt. Sie können einen beliebigen Namen angeben und unterstützen den Empfang mehrerer Transaktionen mit diesem Parameter.")]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/sendTx")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("Headers:\nContent-Type: multipart/form-data\nParameters:\ntx1 - transaction 1\ntxN - transaction N\n")])])]),a("h4",{attrs:{id:"antwort-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-22"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Hashes")]),t._v(" "),a("p",[t._v("Array von Transaktions-Hashes:")])]),t._v(" "),a("li",[a("p",[t._v("tx1")]),t._v(" "),a("p",[t._v("Hash der Transaktion 1.")])]),t._v(" "),a("li",[a("p",[t._v("txN")]),t._v(" "),a("p",[t._v("Hash der Transaktion N.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-29"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)\nInhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hashes"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tx1"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"67afbc435634....."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"txN"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"89ce4498eaf7....."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_LIMITTXSIZE,"),a("em",[t._v("E_BANNED")])]),t._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[t._v("#")]),t._v(" txstatus")]),t._v(" "),a("p",[t._v("POST/ Gibt die Block-ID und die Fehlermeldung des angegebenen Transaktions-Hash zurück. Ist der Rückgabewert der Block-ID und Fehlermeldung leer, wurde die Transaktion nicht in den Block aufgenommen.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-28"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[t._v("data\nJSON list of transaction hashes."),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])])])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/txstatus/")])]),t._v(" "),a("h4",{attrs:{id:"antwort-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-23"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Ergebnisse\nIm Datenwörterbuch ist der Transaktions-Hash der Schlüssel, während das Transaktionsdetail der Wert ist.")]),t._v(" "),a("ul",[a("li",[t._v("hash")])]),t._v(" "),a("p",[t._v("Transaktionshash.")]),t._v(" "),a("ul",[a("li",[t._v("blockid")])]),t._v(" "),a("p",[t._v("Wenn die Transaktion erfolgreich ausgeführt wird, wird die Block-ID zurückgegeben; Wenn die Transaktion nicht ausgeführt werden konnte, ist die Block-ID 0.")]),t._v(" "),a("ul",[a("li",[t._v("result")])]),t._v(" "),a("p",[t._v("Geben Sie das Transaktionsergebnis über die Variable $result zurück.")]),t._v(" "),a("ul",[a("li",[t._v("errmsg")])]),t._v(" "),a("p",[t._v("Wenn die Transaktion nicht ausgeführt werden kann, wird eine Fehlertextnachricht zurückgegeben.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-30"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"results"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash1"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blockid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3123"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash2"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blockid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3124"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_HASHWRONG, E_HASHNOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[t._v("txinfo/{hash}")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Informationen des angegebenen Hashs zurück, die mit der Transaktion korrelieren, einschließlich der Block-ID und der Anzahl der Bestätigungen. Wenn optionale Parameter angegeben werden, können auch der Vertragsname und zugehörige Parameter zurückgegeben werden.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-29"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("hash")]),t._v(" "),a("p",[t._v("Transaktionshash.")])]),t._v(" "),a("li",[a("p",[t._v("[contractinfo]")])])]),t._v(" "),a("p",[t._v("Detaillierte Kennung des Vertragsparameters. Um Vertragsdetails zu erhalten, die sich auf die Transaktion beziehen, geben Sie "),a("code",[t._v("contractinfo=1")]),t._v(" an.")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1")])]),t._v(" "),a("h4",{attrs:{id:"antwort-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-24"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("blockid")]),t._v(" "),a("p",[t._v("Enthält die Block-ID der Transaktion. Wenn der Wert "),a("code",[t._v("0")]),t._v(" ist, kann keine Transaktion mit diesem Hash gefunden werden.")])]),t._v(" "),a("li",[a("p",[t._v("bestätigen Sie")]),t._v(" "),a("p",[t._v("Anzahl der Bestätigungen des Blocks blockid.")])]),t._v(" "),a("li",[a("p",[t._v("Daten")]),t._v(" "),a("p",[t._v("Wenn "),a("code",[t._v("contentinfo=1")]),t._v(" angegeben ist, werden die Vertragsdetails an diesen Parameter zurückgegeben.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-31"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blockid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"confirm"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"block"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"contract"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"@1NewContract"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"params"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t}"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_HASHWRONG")]),t._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[t._v("#")]),t._v(" txinfoMultiple/")]),t._v(" "),a("p",[t._v("GET/ Gibt die Informationen des angegebenen Hashs zurück, die mit einer Transaktion korrelieren.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-30"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("hash")]),t._v(" "),a("p",[t._v("Liste der Transaktions-Hashes.")])]),t._v(" "),a("li",[a("p",[t._v("[contractinfo]")])])]),t._v(" "),a("p",[t._v("Detaillierte Kennung des Vertragsparameters. Um Vertragsdetails in Bezug auf die Transaktion zu erhalten, geben Sie "),a("code",[t._v("contractinfo=1")]),t._v(" an.")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[t._v('```\n{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n```\n')])])]),a("blockquote",[a("p",[t._v("GET /api/v2/txinfoMultiple/")])]),t._v(" "),a("h4",{attrs:{id:"antwort-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-25"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Ergebnisse")]),t._v(" "),a("p",[t._v("Im Datenwörterbuch Transaktions-Hashes als Schlüssel und Transaktionsdetails als Wert.")]),t._v(" "),a("ul",[a("li",[t._v("hash")])]),t._v(" "),a("p",[t._v("Transaktionshash.")]),t._v(" "),a("ul",[a("li",[t._v("blockid")])]),t._v(" "),a("p",[t._v("Block-ID, die die Transaktion enthält. Wenn der Wert "),a("code",[t._v("0")]),t._v(" ist, kann keine Transaktion mit diesem Hash gefunden werden.")]),t._v(" "),a("ul",[a("li",[t._v("confirm")])]),t._v(" "),a("p",[t._v("Anzahl der Bestätigungen des Blocks blockid.")]),t._v(" "),a("ul",[a("li",[t._v("date")])]),t._v(" "),a("p",[t._v("Wenn "),a("code",[t._v("contentinfo=1")]),t._v(" angegeben ist, werden die Vertragsdetails an diesen Parameter zurückgegeben.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-32"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"results"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash1"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blockid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3123"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"confirm"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash2"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"blockid"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3124"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"confirm"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_HASHWRONG")]),t._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"page-validators_count-name"}},[t._v("/page/validators_count/{name}")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Anzahl der Knoten zurück, die zum Überprüfen der angegebenen Seite erforderlich sind.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-31"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Seitenname mit Ökosystem-ID in einem Format: "),a("code",[t._v("@ecosystem_id%%page_name%")]),t._v(". Zum Beispiel: "),a("code",[t._v("@1main_page")]),t._v(".")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/page/validators_count/@1page_name")])]),t._v(" "),a("h4",{attrs:{id:"antwort-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-26"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("validate_count")]),t._v(" "),a("p",[t._v("Anzahl der Knoten, die zum Überprüfen der angegebenen Seite erforderlich sind")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-33"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_NOTFOUND, E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[t._v("content/menu|page/{name}")])]),t._v(" "),a("p",[t._v("POST/ Gibt den JSON-Objektbaum des Codes der angegebenen Seite oder des Menünamens zurück, der das Ergebnis der Vorlagen-Engine-Verarbeitung ist.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-32"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Seiten- oder Menüname.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/content/page/default")])]),t._v(" "),a("h4",{attrs:{id:"antwort-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-27"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("menu")]),t._v(" "),a("p",[t._v("Menüname der Seite bei Anforderung von Inhalt/Seite/…")])]),t._v(" "),a("li",[a("p",[t._v("menutree")]),t._v(" "),a("p",[t._v("Ein JSON-Objektbaum des Seitenmenüs beim Anfordern von Inhalt/Seite/…")])]),t._v(" "),a("li",[a("ul",[a("li",[a("p",[t._v("title–head for the menu content/menu/…")]),t._v(" "),a("p",[t._v("Menüname bei Anforderung von Inhalt/Menü/...")])])])]),t._v(" "),a("li",[a("p",[t._v("tree")]),t._v(" "),a("p",[t._v("Ein JSON-Objektbaum einer Seite oder eines Menüs.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-34"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tree"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"......"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"children"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_NOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"content-source-name"}},[t._v("content/source/{name}")])]),t._v(" "),a("p",[t._v('POST/ Gibt den JSON-Objektbaum des angegebenen Seitennamencodes zurück. Führt keine Funktion aus und empfängt keine Daten. Der zurückgegebene JSON-Objektbaum entspricht der Seitenvorlage und kann im visuellen Seitendesigner verwendet werden. Wenn die Seite nicht gefunden werden kann, wird ein 404-Fehler zurückgegeben. Anfrage """""""')]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Seitenname.")])])]),t._v(" "),a("h4",{attrs:{id:"antwort-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-28"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/content/source/default")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("tree")]),t._v(" "),a("p",[t._v("Eine JSON-Objektstruktur der Seite.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-35"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tree"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"......"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"children"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_NOTFOUND, E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"content-hash-name"}},[t._v("content/hash/{name}")])]),t._v(" "),a("p",[t._v("POST/ Gibt den SHA256-Hash des angegebenen Seitennamens zurück oder den Fehler 404, wenn die Seite nicht gefunden werden kann.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich. Um den korrekten Hash zu erhalten, wenn Sie eine Anfrage an andere Knoten stellen, müssen Sie auch die Parameter „Ökosystem“, „keyID“, „roleID“ und „isMobile“ übergeben. Um Seiten von anderen Ökosystemen zu erhalten, muss die Ökosystem-ID dem Seitennamen vorangestellt werden. Zum Beispiel: "),a("code",[t._v("@2meineseite")]),t._v(".")]),t._v(" "),a("h4",{attrs:{id:"anfrage-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-33"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("name")]),t._v(" "),a("p",[t._v("Seitenname mit der Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("ecosystem")]),t._v(" "),a("p",[t._v("Ökosystem-ID.")])]),t._v(" "),a("li",[a("p",[t._v("key-ID")]),t._v(" "),a("p",[t._v("Kontoadresse.")])]),t._v(" "),a("li",[a("p",[t._v("role-ID")]),t._v(" "),a("p",[t._v("Rollen-ID.")])]),t._v(" "),a("li",[a("p",[t._v("isMobile")]),t._v(" "),a("p",[t._v("Parameterkennung der mobilen Plattform.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/content/hash/default")])]),t._v(" "),a("h4",{attrs:{id:"antwort-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-29"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Hex")]),t._v(" "),a("p",[t._v("Hexadezimaler Hash.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-36"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('200 (OK)\nInhaltstyp: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n}\n')])])]),a("h4",{attrs:{id:"fehlerantwort-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-14"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")]),t._v(" "),a("h3",{attrs:{id:"inhalt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#inhalt"}},[t._v("#")]),t._v(" Inhalt")]),t._v(" "),a("p",[t._v("POST/ Die Anzahl der JSON-Objekte, die den Seitencode aus dem Vorlagenparameter zurückgeben. Wenn der optionale Parameter source als "),a("code",[t._v("true")]),t._v(" oder "),a("code",[t._v("1")]),t._v(" angegeben ist, führt der JSON-Objektbaum keine Funktion aus und empfängt keine Daten. Der JSON-Objektbaum kann im visuellen Seitendesigner verwendet werden.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-34"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("template")]),t._v(" "),a("p",[t._v("Der Seitencode.")])]),t._v(" "),a("li",[a("p",[t._v("[source]")]),t._v(" "),a("p",[t._v("Bei Angabe von "),a("code",[t._v("true")]),t._v(" oder "),a("code",[t._v("1")]),t._v(" führt der JSON-Objektbaum keine Funktionen und empfangenen Daten aus.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/content")])]),t._v(" "),a("h4",{attrs:{id:"antwort-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-30"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("tree")]),t._v(" "),a("p",[t._v("JSON-Objektbaum.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-37"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tree"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"......"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"children"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("..."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-15"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_NOTFOUND, E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[t._v("#")]),t._v(" maxblockid")]),t._v(" "),a("p",[t._v("GET/ Gibt die ID des höchsten Blocks auf dem aktuellen Knoten zurück.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-35"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/maxblockid")])]),t._v(" "),a("h4",{attrs:{id:"antwort-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-31"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[t._v("max_block_id")])]),t._v(" "),a("p",[t._v("ID des höchsten Blocks auf dem aktuellen Knoten.")]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-38"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"max_block_id"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("341")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-16"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_NOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"block-id"}},[t._v("block/{id}")])]),t._v(" "),a("p",[t._v("GET/ Gibt relevante Informationen des Blocks mit der angegebenen ID zurück.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-36"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[t._v("Ich würde\nBlock-ID.")])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/block/32")])]),t._v(" "),a("h4",{attrs:{id:"antwort-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-32"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("hash")]),t._v(" "),a("p",[t._v("Hash des Blocks.")])]),t._v(" "),a("li",[a("p",[t._v("key_id")]),t._v(" "),a("p",[t._v("Adresse des Kontos, das den Block signiert hat.")])]),t._v(" "),a("li",[a("p",[t._v("time")]),t._v(" "),a("p",[t._v("Zeitstempel der Blockgenerierung.")])]),t._v(" "),a("li",[a("p",[t._v("tx_count")]),t._v(" "),a("p",[t._v("Gesamtzahl der Transaktionen im Block.")])]),t._v(" "),a("li",[a("p",[t._v("rollbacks_hash")]),t._v(" "),a("p",[t._v("Hash für Block-Rollback.")])]),t._v(" "),a("li",[a("p",[t._v("node_position")]),t._v(" "),a("p",[t._v("Position des Blocks in der Liste der Ehrenknoten.")])])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-39"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hash"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"key_id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-118432674655542910")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1551145365")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tx_count"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rollbacks_hash"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"node_position"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h4",{attrs:{id:"fehlerantwort-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-17"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_NOTFOUND")]),t._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[t._v("avatar/{ecosystem}/{member}")])]),t._v(" "),a("p",[t._v("GET/ Gibt den Avatar des Benutzers in der Mitgliedertabelle zurück (Sie können ihn ohne Anmeldung verwenden).")]),t._v(" "),a("h4",{attrs:{id:"anfrage-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-37"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("ecosystem")]),t._v(" "),a("p",[t._v("Ecosystem ID.")])]),t._v(" "),a("li",[a("p",[t._v("member")]),t._v(" "),a("p",[t._v("Kontoadresse des Benutzers.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/avatar/1/-118432674655542910")])]),t._v(" "),a("h4",{attrs:{id:"antwort-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-33"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("p",[t._v("Der Typ des Anforderungsheaders Content-Type ist image, und die Bilddaten werden im Antworttext zurückgegeben.")]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-40"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("200 (OK)\nContent-Type: image/png\n")])])]),a("h4",{attrs:{id:"fehlerantwort-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fehlerantwort-18"}},[t._v("#")]),t._v(" Fehlerantwort")]),t._v(" "),a("p",[t._v("E_NOTFOUND E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[t._v("config/centrifugo")])]),t._v(" "),a("p",[t._v("GET/ Gibt die Hostadresse und den Port von centrifugo zurück.\nFür diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-38"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("blockquote",[a("p",[t._v("GET /api/v2/config/centrifugo")])]),t._v(" "),a("h4",{attrs:{id:"antwort-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-34"}},[t._v("#")]),t._v(" Antwort")]),t._v(" "),a("p",[t._v("Das Antwortformat ist "),a("code",[t._v("http://address:port")]),t._v(", zum Beispiel: "),a("code",[t._v("http://127.0.0.1:8100")]),t._v(".")]),t._v(" "),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[t._v("#")]),t._v(" Error response")]),t._v(" "),a("p",[t._v("E_SERVER")]),t._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[t._v("#")]),t._v(" updnotificator")]),t._v(" "),a("p",[t._v("POST/ Senden Sie alle Nachrichten, die noch nicht gesendet wurden, an den Benachrichtigungsdienst von centrifugo. Senden Sie nur Nachrichten für bestimmte Ökosysteme und Mitglieder.")]),t._v(" "),a("p",[t._v("Für diese Anfrage ist keine Anmeldeberechtigung erforderlich.")]),t._v(" "),a("h4",{attrs:{id:"anfrage-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-39"}},[t._v("#")]),t._v(" Anfrage")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("id")]),t._v(" "),a("p",[t._v("Kontoadresse des Mitglieds.")])]),t._v(" "),a("li",[a("p",[t._v("ecosystem")]),t._v(" "),a("p",[t._v("Ecosystem ID.")])])]),t._v(" "),a("blockquote",[a("p",[t._v("POST /api/v2/updnotificator")])]),t._v(" "),a("h4",{attrs:{id:"antwortbeispiel-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwortbeispiel-41"}},[t._v("#")]),t._v(" Antwortbeispiel")]),t._v(" "),a("p",[t._v("200 (OK)")]),t._v(" "),a("p",[t._v("Inhaltstyp: application/json")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/21.f79562fe.js b/assets/js/21.4776481c.js similarity index 98% rename from assets/js/21.f79562fe.js rename to assets/js/21.4776481c.js index 8149283..73a6c56 100644 --- a/assets/js/21.f79562fe.js +++ b/assets/js/21.4776481c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{400:function(e,t,n){"use strict";n.r(t);var r=n(51),i=Object(r.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"serverkonfigurationsdatei"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#serverkonfigurationsdatei"}},[e._v("#")]),e._v(" Serverkonfigurationsdatei")]),e._v(" "),n("p",[e._v("In diesem Abschnitt stellen wir Parameter in der Serverkonfigurationsdatei vor.")]),e._v(" "),n("h2",{attrs:{id:"einfuhrung-in-die-serverkonfigurationsdatei"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#einfuhrung-in-die-serverkonfigurationsdatei"}},[e._v("#")]),e._v(" Einführung in die Serverkonfigurationsdatei")]),e._v(" "),n("p",[e._v("Die Serverkonfigurationsdatei definiert die Knotenkonfiguration von IBAX.")]),e._v(" "),n("h2",{attrs:{id:"standort"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#standort"}},[e._v("#")]),e._v(" Standort")]),e._v(" "),n("p",[e._v("Diese Datei befindet sich im Arbeitsverzeichnis des Servers und heißt "),n("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"abschnitte"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#abschnitte"}},[e._v("#")]),e._v(" Abschnitte")]),e._v(" "),n("p",[e._v("Die Konfigurationsdatei besteht aus den folgenden Abschnitten:")]),e._v(" "),n("blockquote",[n("p",[e._v("Allgemeiner Teil")])]),e._v(" "),n("p",[e._v("Es definiert das Arbeitsverzeichnis DataDir, das erste Blockverzeichnis FirstBlockPath und andere Parameter.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TCP-Server]")])]),e._v(" "),n("p",[e._v("Es definiert die TCP-Dienstparameter.")]),e._v(" "),n("p",[e._v("TCPServer wird für die Netzwerkinteraktion zwischen Knoten verwendet.")]),e._v(" "),n("blockquote",[n("p",[e._v("[HTTP]")])]),e._v(" "),n("p",[e._v("Es definiert die HTTP-Dienstparameter.")]),e._v(" "),n("p",[e._v("HTTPServer bietet RESTful-APIs.")]),e._v(" "),n("blockquote",[n("p",[e._v("[DB]")])]),e._v(" "),n("p",[e._v("Es definiert Parameter der PostgreSQL-Knotendatenbank.")]),e._v(" "),n("blockquote",[n("p",[e._v("[StatistikD]")])]),e._v(" "),n("p",[e._v("Es definiert Parameter des Kollektors StatsD für die Knotenbetriebsanzeige.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Zentrifuge]")])]),e._v(" "),n("p",[e._v("Es definiert Parameter des Benachrichtigungsdienstes Centrifugo.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Protokoll]")])]),e._v(" "),n("p",[e._v("Es definiert Parameter des Protokolldienstes Log.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TokenBewegung]")])]),e._v(" "),n("p",[e._v("Es definiert Parameter des Token-Zirkulationsdienstes TokenMovement.")]),e._v(" "),n("h2",{attrs:{id:"eine-beispielkonfigurationsdatei"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#eine-beispielkonfigurationsdatei"}},[e._v("#")]),e._v(" Eine Beispielkonfigurationsdatei")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{401:function(e,t,n){"use strict";n.r(t);var r=n(51),i=Object(r.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"serverkonfigurationsdatei"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#serverkonfigurationsdatei"}},[e._v("#")]),e._v(" Serverkonfigurationsdatei")]),e._v(" "),n("p",[e._v("In diesem Abschnitt stellen wir Parameter in der Serverkonfigurationsdatei vor.")]),e._v(" "),n("h2",{attrs:{id:"einfuhrung-in-die-serverkonfigurationsdatei"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#einfuhrung-in-die-serverkonfigurationsdatei"}},[e._v("#")]),e._v(" Einführung in die Serverkonfigurationsdatei")]),e._v(" "),n("p",[e._v("Die Serverkonfigurationsdatei definiert die Knotenkonfiguration von IBAX.")]),e._v(" "),n("h2",{attrs:{id:"standort"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#standort"}},[e._v("#")]),e._v(" Standort")]),e._v(" "),n("p",[e._v("Diese Datei befindet sich im Arbeitsverzeichnis des Servers und heißt "),n("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"abschnitte"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#abschnitte"}},[e._v("#")]),e._v(" Abschnitte")]),e._v(" "),n("p",[e._v("Die Konfigurationsdatei besteht aus den folgenden Abschnitten:")]),e._v(" "),n("blockquote",[n("p",[e._v("Allgemeiner Teil")])]),e._v(" "),n("p",[e._v("Es definiert das Arbeitsverzeichnis DataDir, das erste Blockverzeichnis FirstBlockPath und andere Parameter.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TCP-Server]")])]),e._v(" "),n("p",[e._v("Es definiert die TCP-Dienstparameter.")]),e._v(" "),n("p",[e._v("TCPServer wird für die Netzwerkinteraktion zwischen Knoten verwendet.")]),e._v(" "),n("blockquote",[n("p",[e._v("[HTTP]")])]),e._v(" "),n("p",[e._v("Es definiert die HTTP-Dienstparameter.")]),e._v(" "),n("p",[e._v("HTTPServer bietet RESTful-APIs.")]),e._v(" "),n("blockquote",[n("p",[e._v("[DB]")])]),e._v(" "),n("p",[e._v("Es definiert Parameter der PostgreSQL-Knotendatenbank.")]),e._v(" "),n("blockquote",[n("p",[e._v("[StatistikD]")])]),e._v(" "),n("p",[e._v("Es definiert Parameter des Kollektors StatsD für die Knotenbetriebsanzeige.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Zentrifuge]")])]),e._v(" "),n("p",[e._v("Es definiert Parameter des Benachrichtigungsdienstes Centrifugo.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Protokoll]")])]),e._v(" "),n("p",[e._v("Es definiert Parameter des Protokolldienstes Log.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TokenBewegung]")])]),e._v(" "),n("p",[e._v("Es definiert Parameter des Token-Zirkulationsdienstes TokenMovement.")]),e._v(" "),n("h2",{attrs:{id:"eine-beispielkonfigurationsdatei"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#eine-beispielkonfigurationsdatei"}},[e._v("#")]),e._v(" Eine Beispielkonfigurationsdatei")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/22.c36f814f.js b/assets/js/22.39b444af.js similarity index 98% rename from assets/js/22.c36f814f.js rename to assets/js/22.39b444af.js index 1d27c45..1abeba7 100644 --- a/assets/js/22.c36f814f.js +++ b/assets/js/22.39b444af.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{401:function(e,n,r){"use strict";r.r(n);var t=r(51),a=Object(t.a)({},(function(){var e=this,n=e.$createElement,r=e._self._c||n;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"synchronisiertes-uberwachungstool"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#synchronisiertes-uberwachungstool"}},[e._v("#")]),e._v(" Synchronisiertes Überwachungstool")]),e._v(" "),r("p",[e._v("Desync_monitor ist ein spezielles Tool, mit dem überprüft werden kann, ob die Datenbank auf dem angegebenen Knoten synchronisiert wurde.")]),e._v(" "),r("p",[e._v("Das Tool kann als Daemon verwendet oder für eine einmalige Überprüfung gestartet werden.")]),e._v(" "),r("p",[e._v("Das Funktionsprinzip des Tools basiert auf Folgendem:")]),e._v(" "),r("p",[e._v("1.Jeder Block enthält den Hash aller Änderungen aller Transaktionen, fordern Sie den angegebenen Knoten auf, seine letzte Block-ID bereitzustellen;\n2. Fordern Sie dann einen Block mit dieser ID von allen Knoten an und vergleichen Sie die obigen Hashes;\n3.Wenn die Hashes unterschiedlich sind, wird eine Synchronisierungsfehlermeldung an die im Befehl angegebene E-Mail-Adresse gesendet.")]),e._v(" "),r("h2",{attrs:{id:"standort"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#standort"}},[e._v("#")]),e._v(" Standort")]),e._v(" "),r("p",[e._v("Das Tool befindet sich im Verzeichnis "),r("code",[e._v("tools/desync_monitor/")]),e._v(".")]),e._v(" "),r("h1",{attrs:{id:"befehlszeilen-flags"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#befehlszeilen-flags"}},[e._v("#")]),e._v(" Befehlszeilen-Flags")]),e._v(" "),r("p",[e._v("Die folgenden Flags können von der Eingabeaufforderung aus verwendet werden:")]),e._v(" "),r("ul",[r("li",[e._v("confPath - Pfad der Konfigurationsdatei. Der Standarddateiname ist "),r("code",[e._v("config.toml")]),e._v(";")]),e._v(" "),r("li",[e._v("nodesList - Knotenliste des angeforderten Blocks, getrennt durch Kommas. Der Standardwert ist "),r("code",[e._v("127.0.0.1:7079")]),e._v(";")]),e._v(" "),r("li",[e._v("daemonMode - Wird als Daemon gestartet und sollte verwendet werden, wenn alle N Sekunden eine Authentifizierung erforderlich ist. Dieses Flag ist standardmäßig auf "),r("code",[e._v("false")]),e._v(" gesetzt;")]),e._v(" "),r("li",[e._v('queryingPeriod - Wenn das Tool als Daemon gestartet wird, legt dieser Parameter das Zeitintervall (in Sekunden) zwischen den Prüfungen fest, standardmäßig "'),r("code",[e._v("1")]),e._v(" Sekunde.")]),e._v(" "),r("li",[e._v("alertMessageTo – Die E-Mail-Adresse, an die Synchronisierungswarnfehler gesendet werden.\n"),r("ul",[r("li",[e._v("alertMessageSubj - Betreff der Nachricht in der Warnmeldung, standardmäßig das Problem der "),r("code",[e._v("node synchronization")]),e._v(";")]),e._v(" "),r("li",[e._v("alertMessageFrom - Adresse, an die die Nachricht gesendet wurde.")]),e._v(" "),r("li",[e._v("smtpHost - SMTP-Server-Host, der zum Senden von E-Mails verwendet wird, standardmäßig "),r("code",[e._v('""')]),e._v(";")]),e._v(" "),r("li",[e._v("smtpPort - SMTP-Serverport, der zum Senden von E-Mail-Nachrichten verwendet wird, standardmäßig "),r("code",[e._v("25")]),e._v(";")]),e._v(" "),r("li",[e._v("smtpUsername - Benutzername des SMTP-Servers, standardmäßig "),r("code",[e._v('""')]),e._v(";")]),e._v(" "),r("li",[e._v("smtpPassword - SMTP-Serverpasswort, standardmäßig "),r("code",[e._v('""')]),e._v(".")])])])]),e._v(" "),r("h2",{attrs:{id:"aufbau"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#aufbau"}},[e._v("#")]),e._v(" Aufbau")]),e._v(" "),r("p",[e._v("Das Tool verwendet eine Konfigurationsdatei im toml-Format.")]),e._v(" "),r("p",[e._v("Standardmäßig sucht es nach der Datei config.toml in dem Ordner, in dem die Binärdatei gestartet werden soll.")]),e._v(" "),r("p",[e._v("Der Dateipfad kann mit dem Flag configPath geändert werden.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v('nodes_list = ["http://127.0.0.1:7079", "http://127.0.0.1:7002"]\n\n[daemon]\ndaemon = false\nquerying_period = 1\n\n[alert_message]\nto = ""\nsubject = "problem with xxx nodes"\nfrom = ""\n\n[smtp]\nhost = ""\nport = 25\nusername = ""\npassword = ""\n')])])]),r("h3",{attrs:{id:"nodes-list"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#nodes-list"}},[e._v("#")]),e._v(" nodes_list")]),e._v(" "),r("ul",[r("li",[e._v("nodes_list - Liste der Knoten (Hosts), die Informationen anfordern.")])]),e._v(" "),r("h3",{attrs:{id:"damon"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#damon"}},[e._v("#")]),e._v(" [Dämon]")]),e._v(" "),r("p",[e._v("Konfiguration des Daemon-Modus.")]),e._v(" "),r("ul",[r("li",[e._v("daemon_mode – Ein Tool arbeitet als Daemon und führt Synchronisationsprüfungen durch.")]),e._v(" "),r("li",[e._v("querying_period - Zeitintervall zwischen Synchronisationsprüfungen.")])]),e._v(" "),r("h3",{attrs:{id:"warnmeldung"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#warnmeldung"}},[e._v("#")]),e._v(" [Warnmeldung]")]),e._v(" "),r("p",[e._v("Warnmeldungsparameter.")]),e._v(" "),r("ul",[r("li",[e._v("an - E-Mail-Adresse des Empfängers von Synchronisierungsfehler-Warnmeldungen;")]),e._v(" "),r("li",[e._v("Betreff - Betreff der Nachricht;")]),e._v(" "),r("li",[e._v("von - E-Mail des Absenders.")])]),e._v(" "),r("h3",{attrs:{id:"smtp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#smtp"}},[e._v("#")]),e._v(" [smtp]")]),e._v(" "),r("p",[e._v("SMTP-Serverparameter (Simple Mail Transfer Protocol), die zum Senden von Synchronisierungsfehlermeldungen verwendet werden.")]),e._v(" "),r("ul",[r("li",[e._v("Host – SMTP-Serverschlauch;")]),e._v(" "),r("li",[e._v("port – SMTP-Server-Port;")]),e._v(" "),r("li",[e._v("Benutzername – Benutzername des SMTP-Servers;")]),e._v(" "),r("li",[e._v("Passwort – Passwort des SMTP-Servers;")])])])}),[],!1,null,null,null);n.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{402:function(e,n,r){"use strict";r.r(n);var t=r(51),a=Object(t.a)({},(function(){var e=this,n=e.$createElement,r=e._self._c||n;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"synchronisiertes-uberwachungstool"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#synchronisiertes-uberwachungstool"}},[e._v("#")]),e._v(" Synchronisiertes Überwachungstool")]),e._v(" "),r("p",[e._v("Desync_monitor ist ein spezielles Tool, mit dem überprüft werden kann, ob die Datenbank auf dem angegebenen Knoten synchronisiert wurde.")]),e._v(" "),r("p",[e._v("Das Tool kann als Daemon verwendet oder für eine einmalige Überprüfung gestartet werden.")]),e._v(" "),r("p",[e._v("Das Funktionsprinzip des Tools basiert auf Folgendem:")]),e._v(" "),r("p",[e._v("1.Jeder Block enthält den Hash aller Änderungen aller Transaktionen, fordern Sie den angegebenen Knoten auf, seine letzte Block-ID bereitzustellen;\n2. Fordern Sie dann einen Block mit dieser ID von allen Knoten an und vergleichen Sie die obigen Hashes;\n3.Wenn die Hashes unterschiedlich sind, wird eine Synchronisierungsfehlermeldung an die im Befehl angegebene E-Mail-Adresse gesendet.")]),e._v(" "),r("h2",{attrs:{id:"standort"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#standort"}},[e._v("#")]),e._v(" Standort")]),e._v(" "),r("p",[e._v("Das Tool befindet sich im Verzeichnis "),r("code",[e._v("tools/desync_monitor/")]),e._v(".")]),e._v(" "),r("h1",{attrs:{id:"befehlszeilen-flags"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#befehlszeilen-flags"}},[e._v("#")]),e._v(" Befehlszeilen-Flags")]),e._v(" "),r("p",[e._v("Die folgenden Flags können von der Eingabeaufforderung aus verwendet werden:")]),e._v(" "),r("ul",[r("li",[e._v("confPath - Pfad der Konfigurationsdatei. Der Standarddateiname ist "),r("code",[e._v("config.toml")]),e._v(";")]),e._v(" "),r("li",[e._v("nodesList - Knotenliste des angeforderten Blocks, getrennt durch Kommas. Der Standardwert ist "),r("code",[e._v("127.0.0.1:7079")]),e._v(";")]),e._v(" "),r("li",[e._v("daemonMode - Wird als Daemon gestartet und sollte verwendet werden, wenn alle N Sekunden eine Authentifizierung erforderlich ist. Dieses Flag ist standardmäßig auf "),r("code",[e._v("false")]),e._v(" gesetzt;")]),e._v(" "),r("li",[e._v('queryingPeriod - Wenn das Tool als Daemon gestartet wird, legt dieser Parameter das Zeitintervall (in Sekunden) zwischen den Prüfungen fest, standardmäßig "'),r("code",[e._v("1")]),e._v(" Sekunde.")]),e._v(" "),r("li",[e._v("alertMessageTo – Die E-Mail-Adresse, an die Synchronisierungswarnfehler gesendet werden.\n"),r("ul",[r("li",[e._v("alertMessageSubj - Betreff der Nachricht in der Warnmeldung, standardmäßig das Problem der "),r("code",[e._v("node synchronization")]),e._v(";")]),e._v(" "),r("li",[e._v("alertMessageFrom - Adresse, an die die Nachricht gesendet wurde.")]),e._v(" "),r("li",[e._v("smtpHost - SMTP-Server-Host, der zum Senden von E-Mails verwendet wird, standardmäßig "),r("code",[e._v('""')]),e._v(";")]),e._v(" "),r("li",[e._v("smtpPort - SMTP-Serverport, der zum Senden von E-Mail-Nachrichten verwendet wird, standardmäßig "),r("code",[e._v("25")]),e._v(";")]),e._v(" "),r("li",[e._v("smtpUsername - Benutzername des SMTP-Servers, standardmäßig "),r("code",[e._v('""')]),e._v(";")]),e._v(" "),r("li",[e._v("smtpPassword - SMTP-Serverpasswort, standardmäßig "),r("code",[e._v('""')]),e._v(".")])])])]),e._v(" "),r("h2",{attrs:{id:"aufbau"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#aufbau"}},[e._v("#")]),e._v(" Aufbau")]),e._v(" "),r("p",[e._v("Das Tool verwendet eine Konfigurationsdatei im toml-Format.")]),e._v(" "),r("p",[e._v("Standardmäßig sucht es nach der Datei config.toml in dem Ordner, in dem die Binärdatei gestartet werden soll.")]),e._v(" "),r("p",[e._v("Der Dateipfad kann mit dem Flag configPath geändert werden.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v('nodes_list = ["http://127.0.0.1:7079", "http://127.0.0.1:7002"]\n\n[daemon]\ndaemon = false\nquerying_period = 1\n\n[alert_message]\nto = ""\nsubject = "problem with xxx nodes"\nfrom = ""\n\n[smtp]\nhost = ""\nport = 25\nusername = ""\npassword = ""\n')])])]),r("h3",{attrs:{id:"nodes-list"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#nodes-list"}},[e._v("#")]),e._v(" nodes_list")]),e._v(" "),r("ul",[r("li",[e._v("nodes_list - Liste der Knoten (Hosts), die Informationen anfordern.")])]),e._v(" "),r("h3",{attrs:{id:"damon"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#damon"}},[e._v("#")]),e._v(" [Dämon]")]),e._v(" "),r("p",[e._v("Konfiguration des Daemon-Modus.")]),e._v(" "),r("ul",[r("li",[e._v("daemon_mode – Ein Tool arbeitet als Daemon und führt Synchronisationsprüfungen durch.")]),e._v(" "),r("li",[e._v("querying_period - Zeitintervall zwischen Synchronisationsprüfungen.")])]),e._v(" "),r("h3",{attrs:{id:"warnmeldung"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#warnmeldung"}},[e._v("#")]),e._v(" [Warnmeldung]")]),e._v(" "),r("p",[e._v("Warnmeldungsparameter.")]),e._v(" "),r("ul",[r("li",[e._v("an - E-Mail-Adresse des Empfängers von Synchronisierungsfehler-Warnmeldungen;")]),e._v(" "),r("li",[e._v("Betreff - Betreff der Nachricht;")]),e._v(" "),r("li",[e._v("von - E-Mail des Absenders.")])]),e._v(" "),r("h3",{attrs:{id:"smtp"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#smtp"}},[e._v("#")]),e._v(" [smtp]")]),e._v(" "),r("p",[e._v("SMTP-Serverparameter (Simple Mail Transfer Protocol), die zum Senden von Synchronisierungsfehlermeldungen verwendet werden.")]),e._v(" "),r("ul",[r("li",[e._v("Host – SMTP-Serverschlauch;")]),e._v(" "),r("li",[e._v("port – SMTP-Server-Port;")]),e._v(" "),r("li",[e._v("Benutzername – Benutzername des SMTP-Servers;")]),e._v(" "),r("li",[e._v("Passwort – Passwort des SMTP-Servers;")])])])}),[],!1,null,null,null);n.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/23.3fc4b8f0.js b/assets/js/23.2892f1bb.js similarity index 99% rename from assets/js/23.3fc4b8f0.js rename to assets/js/23.2892f1bb.js index c86c26a..805c356 100644 --- a/assets/js/23.3fc4b8f0.js +++ b/assets/js/23.2892f1bb.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{403:function(e,t,a){"use strict";a.r(t);var n=a(51),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"json-rpc-application-programming-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-application-programming-interface"}},[e._v("#")]),e._v(" JSON-RPC Application Programming Interface")]),e._v(" "),a("p",[e._v("In order for a software application to interact with the IBAX blockchain (fetch block data or send transactions to the network), it must be connected to an IBAX network node.")]),e._v(" "),a("p",[e._v("Due to the generality and extensibility of the original REST API interface, it will become more and more complex with more and more interfaces and different clients. We realize the importance of interface unification to ensure that all clients can use the same set of specifications, regardless of the specific node and client implementation.")]),e._v(" "),a("p",[e._v("JSON-RPC is a stateless, lightweight remote procedure call (RPC) protocol. It defines a number of data structures and their processing rules. It is transport independent, as these concepts can be used in the same process, via an interface, hypertext transfer protocol, or in many different messaging environments. It uses JSON (RFC 4627) as the data format.")]),e._v(" "),a("p",[e._v("JSON-RPC is compatible with most of the REST API interfaces, retaining the original REST API interface, the client using the REST API interface can easily transfer to the JSON-RPC interface, part of the interface")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/de/reference/api2.html#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/de/reference/api2.html#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/de/reference/api2.html#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])],1)]),e._v(" "),a("p",[e._v("Available through the REST API interface.")]),e._v(" "),a("h2",{attrs:{id:"client-side-implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-side-implementation"}},[e._v("#")]),e._v(" Client-side implementation")]),e._v(" "),a("p",[e._v("Each client can use a different programming language when implementing the JSON-RPC specification, and you can use the\n"),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("GO-SDK"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"curl-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curl-example"}},[e._v("#")]),e._v(" Curl example")]),e._v(" "),a("p",[e._v("The following provides examples of using the JSON RPC API by making curl requests to IBAX nodes. Each example includes a description of the particular endpoint, its parameters, the return type, and a working example of how it should be used.")]),e._v(" "),a("p",[e._v('Curl requests may return an error message related to the content type. This is because the --data option sets the content type to application/x-www-form-urlencoded. If your request has this problem, set the header manually by placing -H "Content-Type: application/json" at the beginning of the call. These examples also do not include the URL/Internet Protocol and port combination that must be the last parameter of the curl (e.g. 127.0.0.1:7079 A full curl request with this additional data takes the form of')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","params":[],"id":1}\' http://127.0.0.1:7079\t\n')])])]),a("h2",{attrs:{id:"covenant"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#covenant"}},[e._v("#")]),e._v(" Covenant")]),e._v(" "),a("h3",{attrs:{id:"hex"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hex"}},[e._v("#")]),e._v(" Hex")]),e._v(" "),a("p",[a("strong",[e._v("Hexadecimal code")])]),e._v(" "),a("p",[e._v("When encoding byte arrays, hashes, and bytecode arrays: the encoding is hexadecimal, two hexadecimal digits per byte.")]),e._v(" "),a("h3",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("Content-Type: application/json")])]),e._v(" "),a("h3",{attrs:{id:"special-markers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-markers"}},[e._v("#")]),e._v(" Special markers")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("This field is an optional parameter.")]),e._v(" "),a("p",[e._v("If there are multiple "),a("code",[e._v("Omitempty")]),e._v(" fields in a row,\nBut only want to pass the value of a certain field, then you need to set the unwanted field to null (the field type null value), Example:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Name")]),e._v(" "),a("li",[a("strong",[e._v("column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Filter column names")])]),e._v(" "),a("p",[e._v("If only the name value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0, "testname"]')]),e._v(" - "),a("em",[e._v("Number")]),e._v(" null value is 0")]),e._v(" "),a("p",[e._v("If only the column value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0,"", "title,page"]')]),e._v(" - "),a("em",[e._v("String")]),e._v(' empty value for ""')]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("Authorization header, add Authorization to the request header, example:")]),e._v(" "),a("p",[a("strong",[e._v("name")]),e._v(" : Authorization "),a("strong",[e._v("value")]),e._v(" : Bearer +"),a("a",{attrs:{href:"#ibax-login"}},[e._v("login token")])]),e._v(" "),a("p",[e._v("Example:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","params":["@1TokensSend"],"id":1}\' http://127.0.0.1:7079\n\n')])])]),a("h4",{attrs:{id:"accountorkeyid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#accountorkeyid"}},[e._v("#")]),e._v(" AccountOrKeyId")]),e._v(" "),a("p",[e._v("For the account address parameter, you can use two formats of addresses, for example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v(" - Account Address "),a("code",[e._v('"XXXX-XXXX-XXXX-XXXX-XXXX"')]),e._v(" or Account Id "),a("code",[e._v('"64842...538120"')]),e._v(' .538120"`')])])]),e._v(" "),a("li",[a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Address object")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Account Id, Example: "),a("code",[e._v('{"key_id":-64842\t38120}')])]),e._v(" "),a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account address, Example: "),a("code",[e._v('{"account": "1196-... -\t-... -3496"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Account Id is preferred when both account address and account Id exist")]),e._v(".")])])]),e._v(" "),a("h4",{attrs:{id:"blockorhash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockorhash"}},[e._v("#")]),e._v(" BlockOrHash")]),e._v(" "),a("p",[e._v("Block height or block HASH, example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v("\t-\tBlock\tHeight\t"),a("code",[e._v('"100"')]),e._v("\tor\tBlock\tHASH"),a("code",[e._v('"4663aa47...a60753c18d9ba9cb4"')])])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - Block information object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height, example: "),a("code",[e._v('{"id":2}')])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v("\t-\t"),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v("\tString")]),e._v("\t-\tBlock\tHASH,\tExample:\t"),a("code",[e._v('{"hash": "d36b8996c\tc616d3043a0d02a0f59"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Block Height and Block HASH can only choose one")]),e._v(".")])])])])]),e._v(" "),a("h3",{attrs:{id:"batch-requests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#batch-requests"}},[e._v("#")]),e._v(" Batch requests")]),e._v(" "),a("p",[e._v("This feature can be used to reduce network latency, especially when acquiring a large number of largely independent data objects.")]),e._v(" "),a("p",[e._v("The following is an example of obtaining the highest block and total number of transactions:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'[{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]},{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":2,"params":[]}]\' http://127.0.0.1:7079\n\n //Response\n [\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149100\n },\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": 797\n }\n ]\n')])])]),a("h3",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Returns status "),a("code",[e._v("200")]),e._v(" in case the request is executed successfully.")]),e._v(" "),a("p",[e._v("If an error occurs, a JSON object with the following fields will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("jsonrpc")]),e._v(" "),a("p",[e._v("Error identifier.")])]),e._v(" "),a("li",[a("p",[e._v("id")]),e._v(" "),a("p",[e._v("Error text message.")])]),e._v(" "),a("li",[a("p",[e._v("error")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("code")]),e._v(" "),a("p",[e._v("Response Status Code")])]),e._v(" "),a("li",[a("p",[e._v("message")]),e._v(" "),a("p",[e._v("Response Status Description")])])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "jsonrpc": "2.0",\n "id": 1,\n "error": {\n "code": -32014,\n "message": "Unauthorized"\n }\n}\n')])])]),a("h2",{attrs:{id:"json-rpc-namespaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-namespaces"}},[e._v("#")]),e._v(" JSON-RPC Namespaces")]),e._v(" "),a("h3",{attrs:{id:"ibax-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-namespace"}},[e._v("#")]),e._v(" ibax Namespace")]),e._v(" "),a("h4",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getuid"}},[e._v("ibax.getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-login"}},[e._v("ibax.login")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getauthstatus"}},[e._v("ibax.getAuthStatus")])])]),e._v(" "),a("h4",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" server-side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getversion"}},[e._v("ibax.getVersion")])])]),e._v(" "),a("h4",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getbalance"}},[e._v("ibax.getBalance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockstxinfo"}},[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblocks"}},[e._v("ibax.detailedBlocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyinfo"}},[e._v("ibax.getKeyInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblock"}},[e._v("ibax.detailedBlock")])])]),e._v(" "),a("h4",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-maxblockid"}},[e._v("ibax.maxBlockId")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyscount"}},[e._v("ibax.getKeysCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettxcount"}},[e._v("ibax.getTxCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettransactioncount"}},[e._v("ibax.getTransactionCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockscountbynode"}},[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-honornodescount"}},[e._v("ibax.honorNodesCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemcount"}},[e._v("ibax.getEcosystemCount")])])]),e._v(" "),a("h4",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-ecosysteminfo"}},[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-appparams"}},[e._v("ibax.appParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemparams"}},[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettablecount"}},[e._v("ibax.getTableCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettable"}},[e._v("ibax.getTable")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getlist"}},[e._v("ibax.getList")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsections"}},[e._v("ibax.getSections")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getrow"}},[e._v("ibax.getRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-systemparams"}},[e._v("ibax.systemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-history"}},[e._v("ibax.history")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagerow"}},[e._v("ibax.getPageRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenurow"}},[e._v("ibax.getMenuRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsnippetrow"}},[e._v("ibax.getSnippetRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getappcontent"}},[e._v("ibax.getAppContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmember"}},[e._v("ibax.getMember")])])]),e._v(" "),a("h4",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getcontracts"}},[e._v("ibax.getContracts")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-sendtx"}},[e._v("ibax.sendTx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfo"}},[e._v("ibax.txInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfomultiple"}},[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpage"}},[e._v("ibax.getPage")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenu"}},[e._v("ibax.getMenu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsource"}},[e._v("ibax.getSource")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagehash"}},[e._v("ibax.getPageHash")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontent"}},[e._v("ibax.getContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockinfo"}},[e._v("ibax.getBlockInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getconfig"}},[e._v("ibax.getConfig")])])]),e._v(" "),a("h3",{attrs:{id:"net-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-namespace"}},[e._v("#")]),e._v(" net Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#net-getnetwork"}},[e._v("net.getNetwork")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#net-status"}},[e._v("net.status")])])]),e._v(" "),a("h3",{attrs:{id:"rpc-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-namespace"}},[e._v("#")]),e._v(" rpc Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rpc-modules"}},[e._v("rpc.modules")])])]),e._v(" "),a("h3",{attrs:{id:"admin-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-namespace"}},[e._v("#")]),e._v(" admin Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#admin-startjsonrpc"}},[e._v("admin.startJsonRpc")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#admin-stopjsonrpc"}},[e._v("admin.stopJsonRpc")])])]),e._v(" "),a("h3",{attrs:{id:"debug-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-namespace"}},[e._v("#")]),e._v(" debug Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#debug-getnodebanstat"}},[e._v("debug.getNodeBanStat")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#debug-getmemstat"}},[e._v("debug.getMemStat")])])]),e._v(" "),a("h2",{attrs:{id:"json-rpc-interface-methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-interface-methods"}},[e._v("#")]),e._v(" JSON-RPC Interface Methods")]),e._v(" "),a("h3",{attrs:{id:"ibax-getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getuid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getUid")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Generate a temporary JWT token,\twhich needs to be passed to "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(" when calling "),a("strong",[a("a",{attrs:{href:"#ibax-login"}},[e._v("login")])])]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("uid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The signature number.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - temporary token passed during login (temporary token has a 5 second lifespan).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("cryptoer")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Elliptic curve algorithm.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hasher")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - hash algorithm.")])])]),e._v(" "),a("p",[e._v("In the case that no authorization is required(the request contains "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(", the following message will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Expiration time.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])])]),e._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response1\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "uid": "5823391950439015186",\n "token": "ey....",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response2\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "expire": "7h59m49.5361126s",\n "ecosystem_id": "1",\n "key_id": "6667782293976713160",\n "address": "0666-7782-2939-7671-3160",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-login"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.login")])]),e._v(" "),a("p",[e._v("User authentication. "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"#ibax-getuid"}},[a("strong",[e._v("ibax.getUid")])]),e._v(" command should be called first in order to receive the unique value and sign it.\nThe temporary JWT token for getuid needs to be passed in the request header.\nIf the request is successful, the token received in the response is contained in "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication call object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID. if not specified, defaults to the first ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The lifecycle of the JWT token in seconds, default is 28800,8 hours.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Hexadecimal account public key.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -")]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("signature")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nUse the private key to sign the uid received by getuid.")]),e._v(" "),a("p",[e._v("Signature data content:LOGIN+{$network_id}+uid")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID, default role 0")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-2"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - JWT token.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("notify_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The notification ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isnode")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isowner")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the creator of this ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("clb")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the logged-in ecosystem is a CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("timestamp")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - current timestamp")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" list of roles, if there are no roles, the field is nil")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID")]),e._v(" "),a("li",[a("strong",[e._v("role_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Role name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.login","params":[{"ecosystem_id":1,"public_key":"04....","signature","46...","role_id":0}],"id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "token": "ey...",\n "ecosystem_id": "1",\n "key_id": "6660819716178795186",\n "account": "0666-xxxx-xxxx-xxxx-5186",\n "notify_key": "ey....",\n "isnode": false,\n "isowner": false,\n "clb": false,\n "timestamp": "1678336163",\n "roles": nil //[{"role_id": 1, "role_name": "Developer"},{"role_id": 2, "role_name": "DevelopGovernancerer"}]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getauthstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getauthstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAuthStatus")])]),e._v(" "),a("p",[e._v("User authentication status\n"),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-3"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication status object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("active")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - The current user authentication status. Values: "),a("code",[e._v("true,false")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("exp")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Token validity cutoff timestamp")])])]),e._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getAuthStatus","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "active": true,\n "exp": 1678354136\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getversion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getversion"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getVersion")])]),e._v(" "),a("p",[e._v("Returns the current server version.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-4"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("vesion")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - version number ("),a("code",[e._v("big Version")]),e._v(" + "),a("code",[e._v("branch name")]),e._v(" + "),a("code",[e._v("git commit")]),e._v(" + "),a("code",[e._v("time")]),e._v(" + "),a("code",[e._v("node status")]),e._v(")")])]),e._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getVersion","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "1.3.0 branch.main commit.b57d4194 time.2023-03-08-09:30:29(UTC) node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"ibax-getbalance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getbalance"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBalance")])]),e._v(" "),a("p",[e._v("Get the account address balance.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("key_id or account")]),e._v(" - "),a("a",{attrs:{href:"#accountorkeyid"}},[a("em",[e._v("AccountOrKeyId")])]),e._v(" - account address "),a("code",[e._v("XXXX- XXXX-XXXX-XXXX-XXXX")]),e._v(" or account ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default 1")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-5"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the balance object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the minimum unit of the contract account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("total")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the total balance of the minimum unit account (amount + utxo).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("utxo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Minimum unit UTXO account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")])])]),e._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["648...8120"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["1196-...-...-...-3496",1]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":[{"key_id":{$key_id}},1]}\' http://127.0.0.1:7079 //keyId or account\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "amount": "9915319240441612",\n "digits": 12,\n "total": "9915319240441612",\n "utxo": "0",\n "token_symbol": "IBXC"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockstxinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockstxinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("p",[e._v("Returns a list containing additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the starting block height to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-6"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block information object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height")])]),e._v(" "),a("li",[a("p",[e._v("List of transactions in the block and additional information for each transaction:")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" -\nFor the first block, it is the account address of the first block that signed the transaction.")]),e._v(" "),a("p",[e._v("For all other blocks, it is the address of the account that signed the transaction.")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksTxInfo","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": [ //block_id\n {\n "hash": "uXSaSrMWlbHpNlu049J5BDypC6MzBQ0/5VEfGQf+5aQ=",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160\n }\n ],\n "2": [ //block_id\n {\n "hash": "r8U9IKjtZ5Be5D4ak3zxLlDwn36CTdfIAsVvQhx7P3w=",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblocks"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlocks")])]),e._v(" "),a("p",[e._v("Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the starting block to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-7"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height\n"),a("ul",[a("li",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")]),e._v(" "),a("li",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")]),e._v(" "),a("li",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")]),e._v(" "),a("li",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")]),e._v(" "),a("li",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlocks","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": { //block id\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f73497ede8f22d678bc4be6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "36373332663064383331353264316333653639346431656436383734373634363463616363616564636632353232646335633736643066623737343931366363",\n "bin_data": "Cp4BCAEQppm...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n },\n "2": { //block id\n "header": {\n "block_id": 2,\n "time": 1676536235,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "dd13a30661d35e01df82027a6e6607eb47ee00765d69767dbb99e151676c2c96",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676536235,\n "tx_count": 1,\n "size": "1.53KiB",\n "rollbacks_hash": "9041312d69e6bcd37c91a2bfa066abaeb53b8398708937a618a89960bfadab3d",\n "merkle_root": "65366537383931353662613230356565396466353061316538656538643636323332316636616265623764633539616166346635343030383135386538643130",\n "bin_data": "Cp4BCAIQq9O...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "afc53d20a8ed67905ee43e1a937cf12e50f09f7e824dd7c802c56f421c7b3f7c",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160,\n "time": 1676536233945,\n "type": 3,\n "size": "390.00B"\n }\n ]\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeyInfo")])]),e._v(" "),a("p",[e._v("Returns a list of ecosystems with roles that are registered to the specified address.")]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")])]),e._v(" "),a("h4",{attrs:{id:"return-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-8"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Specify the address eco-list object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystems")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Eco-List\n"),a("ul",[a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - list of roles.\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - role id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Character name")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeyInfo","id":1,"params":["0666-XXXX-XXXX-XXXX-5186"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "account": "0666-XXXX-XXXX-XXXX-5186",\n "ecosystems": [\n {\n "ecosystem": "1",\n "name": "platform ecosystem",\n "digits": 12,\n "roles": [\n {\n "id": "1",\n "name": "Developer"\n },\n {\n "id": "2",\n "name": "Governancer"\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblock"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlock")])]),e._v(" "),a("p",[e._v("Returns a detailed list of additional information about the transactions in the block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block or Hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - Block Height or Block Hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-9"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["1"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91"]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":[{"id":1}]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "3637333266306438333135...623737343931366363",\n "bin_data": "Cp4BCAEQppm2nwYgyI/8gLSVrsRcMkAFGTK6nxD86hfhgQX0dWzO8aYZExDN9UPm8sKkqeUbwrNliYuCJHvvdX+txINnM7+gDqtMF/1K43kc0gYC0u8uOiANfVG0wUusv0XYEvc0l+3o8i1ni8S+bmhIGT87cmKskUIgBEhSsqZwreVAfnj7KGPFHen8uWVCoHGG/jrtpruKEW1IA1ABYAESRDogQBBdW8EBBcF/1yuTqPczaeLubu5NRxS3v3vzwvFW5gFCIARIUrKmcK3lQH54+yhjxR3p/LllQqBxhv467aa7ihFtGkA2NzMyZjBkODMxNTJkMWMzZTY5NGQxZWQ2ODc0NzY0NjRjYWNjYWVkY2YyNTIyZGM1Yzc2ZDBmYjc3NDkxNmNjKugCeJxibFvmk5+enlp0YK1LUkhRYl5xYnJJZn7egSUuiSWJ7Uu9Uys9XS7HdOxY7SDPfmJJSGZu6mUGBgaG5Lc9y1YGlCblZCZ7p1YecejvOPzyp63tWeYpWS+nxBTv3biTOUTqg7vfgedPuXdbnjsmYX49a9mXA025NT4TbjQ65bQwbloQcjbQRG3ZudjjUxuL1/rlp6QimTfLcZNH0o/bie/SfiskTNm1tPrfmrrlbdfMklamXHR53XpxwSODSb1hX3Kvyb1fU+awbZVG8yaXmGqtO3wR8jPsP6y7vTW4JL/AL7WkPL8o2zm1qMSpNC8lJ/XAkpDU4hKwBxgYGBg3BhRlliWWpDrl5CdnJ2ckZuadh0oxrAT5tLgkMbfgMgMDY1v42yy2ZSEVHonFGUcUdpbM8tosNnXjS7PoLY8vVbLYrORebMzKa/80UF6S/d/TJcsDEitz8hNTjvwaueEHCAAA//+pZRGv",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-maxblockid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.maxBlockId")])]),e._v(" "),a("p",[e._v("Get the highest block ID on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-10"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block Id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The highest block on the current node")])]),e._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 774\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeysCount")])]),e._v(" "),a("p",[e._v("Get the total number of addresses on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-11"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of addresses")])]),e._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeysCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 11\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettxcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettxcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTxCount")])]),e._v(" "),a("p",[e._v("Get the total number of transactions in the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-12"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of transactions")])]),e._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149068\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettransactioncount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettransactioncount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTransactionCount")])]),e._v(" "),a("p",[e._v("Get the number of block transactions")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block or hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - block height or block hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-13"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("h4",{attrs:{id:"example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTransactionCount","id":1,"params":["efc386f7573269610a34af9cc722f775cca8183ccaa0ed7a96db61ef0bde6d1c"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 337\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockscountbynode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockscountbynode"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("p",[e._v("Get the number of node location packing blocks")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("nodePosition")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensusMode")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Consensus Mode, parameters (1: Creator Management Mode 2: DAO Governance Mode)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-14"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the node subscript packing number object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("total_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("partial_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of node subscript packing blocks")])])]),e._v(" "),a("h4",{attrs:{id:"example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksCountByNode","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "total_count": 774,\n "partial_count": 774\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-honornodescount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-honornodescount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.honorNodesCount")])]),e._v(" "),a("p",[e._v("Get number of honor nodes")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-15"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of nodes")])]),e._v(" "),a("h4",{attrs:{id:"example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.honorNodesCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 1\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemCount")])]),e._v(" "),a("p",[e._v("Number of ecosystem acquisitions")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-16"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecological number")])]),e._v(" "),a("h4",{attrs:{id:"example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 2\n }\n')])])]),a("h3",{attrs:{id:"ibax-ecosysteminfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ecosysteminfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("p",[e._v("Access to ecological information")]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ecosystem id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecological ID")])]),e._v(" "),a("h4",{attrs:{id:"return-value-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-17"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Eco-ID")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecological name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")]),e._v(" "),a("li",[a("strong",[e._v("token_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the token")]),e._v(" "),a("li",[a("strong",[e._v("total_amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the number of issues (first issue, or "),a("code",[e._v('"0"')]),e._v(" if not issued)")]),e._v(" "),a("li",[a("strong",[e._v("is_withdraw")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - destructible "),a("code",[e._v("true:destructible false:undestructible")])]),e._v(" "),a("li",[a("strong",[e._v("withdraw")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - amount of destruction ("),a("code",[e._v('"0"')]),e._v(" if not destructible, or not destroyed)")]),e._v(" "),a("li",[a("strong",[e._v("is_emission")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - may be incremented "),a("code",[e._v("true:may be incremented false:may not be incremented")])]),e._v(" "),a("li",[a("strong",[e._v("emission")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - increment ("),a("code",[e._v('"0"')]),e._v(" if no increment is available, or if no increment is available)")]),e._v(" "),a("li",[a("strong",[e._v("introduction")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco Introduction")]),e._v(" "),a("li",[a("strong",[e._v("logo")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoLogo Id (corresponds to Binary table id), available through the RESTFUL API")]),e._v(" "),a("li",[a("strong",[e._v("creator")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco-creator")])]),e._v(" "),a("h4",{attrs:{id:"example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.ecosystemInfo","id":1,"params":[1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "id": 5,\n "name": "test name",\n "digits": 6,\n "token_symbol": "test",\n "token_name": "test Coin",\n "total_amount": "10000",\n "is_withdraw": true,\n "withdraw": "100000000000900000",\n "is_emission": true,\n "emission": "100000000001000000",\n "introduction": "this is a test introduction",\n "logo": 6,\n "creator": "0666-0819-7161-7879-5186"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-appparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-appparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.appParams")])]),e._v(" "),a("p",[e._v("Returns a list of application parameters in the current or specified ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("appid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the application ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID;")]),e._v(" "),a("p",[e._v("If unspecified or 0, the parameters of the current ecosystem will be returned.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Filter the application parameter names.")]),e._v(" "),a("p",[e._v("A comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-18"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Array")]),e._v(" - List of application parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application ID")]),e._v(" "),a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Each element of the array contains the following parameters\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - parameter ID, unique;")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the parameter;")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the parameter value;")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.appParams","id":1,"params":[1,1,"role_developer,role_governancer"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "app_id": 1,\n "list": [\n {\n "id": "4",\n "name": "role_developer",\n "value": "1",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n },\n {\n "id": "5",\n "name": "role_governancer",\n "value": "2",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("p",[e._v("Get a list of ecosystem parameters")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID")]),e._v(" "),a("p",[e._v("If 0 or no such parameter, default: current ecid.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The name of the filter parameter.")]),e._v(" "),a("p",[e._v("Comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")])]),e._v(" "),a("p",[e._v("The "),a("em",[e._v("offset")]),e._v(" and "),a("em",[e._v("limit")]),e._v(" parameters are invalid when there is a filter parameter.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-19"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The id of the parameter, unique.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemParams","id":1,"params":[0,"changing_app_params,changing_language"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "9",\n "name": "changing_app_params",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n },\n {\n "id": "4",\n "name": "changing_language",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettablecount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettablecount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTableCount")])]),e._v(" "),a("p",[e._v("Returns a list of data tables for the current ecosystem.")]),e._v(" "),a("p",[e._v("Offset and number of entries can be set")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-20"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The total number of sheets of the current ecological data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table without prefix.")]),e._v(" "),a("li",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The number of entries in the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTableCount","id":1,"params":[0,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 32,\n "list": [\n {\n "name": "app_params",\n "count": "41"\n },\n {\n "name": "applications",\n "count": "7"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettable"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTable")])]),e._v(" "),a("p",[e._v("Returns information about the current ecosystem request data table.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Data table name")])]),e._v(" "),a("h4",{attrs:{id:"return-value-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-21"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("insert")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add permission to add an entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("new_column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add new field permission.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("update")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change entry permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The application id.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Conditions for changing permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of information related to data table fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the field.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The field data type.")]),e._v(" "),a("li",[a("strong",[e._v("perm")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Permission to change the value of this field.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTable","id":1,"params":["app_params"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "name": "app_params",\n "insert": "ContractConditions(\\"DeveloperCondition\\")",\n "new_column": "ContractConditions(\\"@1MainCondition\\")",\n "update": "ContractAccess(\\"@1EditAppParam\\")",\n "conditions": "ContractConditions(\\"@1MainCondition\\")",\n "app_id": "1",\n "columns": [\n {\n "name": "value",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "app_id",\n "type": "number",\n "perm": "ContractAccess(\\"@1ItemChangeAppId\\")"\n },\n {\n "name": "ecosystem",\n "type": "number",\n "perm": "false"\n },\n {\n "name": "conditions",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "permissions",\n "type": "json",\n "perm": "ContractConditions(\\"@1MainCondition\\")"\n },\n {\n "name": "name",\n "type": "varchar",\n "perm": "false"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getlist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getlist"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getList")])]),e._v(" "),a("p",[e._v("Returns the entry of the specified data table.")]),e._v(" "),a("p",[e._v("You can specify the columns to be returned.")]),e._v(" "),a("p",[e._v("You can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("You can set the query criteria.")]),e._v(" "),a("p",[e._v("Hex encoding of data tables of type "),a("em",[e._v("BYTEA")]),e._v(" (byte arrays, hashes, byte code arrays)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the data table object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("order")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Sort by, default id ASC.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("where")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Query criteria")]),e._v(" "),a("p",[e._v("Example:If you want to query id>2 and name = john")]),e._v(" "),a("p",[e._v("You can use "),a("code",[e._v('where:{"id":{"$gt":2}, "name":{"$eq": "john"}}')])]),e._v(" "),a("p",[e._v("For details, please refer to "),a("RouterLink",{attrs:{to:"/de/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" where syntax")],1)])]),e._v(" "),a("h4",{attrs:{id:"return-value-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-22"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - Other columns of the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getList","id":1,"params":[{"name":"@1history","where":{"$and": [{"id":{"$gt": 2}}, {"id":{"$lt": 5}}]}}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "amount": "1000000000000000000",\n "block_id": "4",\n "comment": "UTXO",\n "created_at": "1676538080433",\n "ecosystem": "1",\n "id": "3",\n "recipient_balance": "1000000000000000000",\n "recipient_id": "666...160",\n "sender_balance": "1000000000000000000",\n "sender_id": "666...3160",\n "status": "0",\n "txhash": "2ac156c0ce55c10fd485cb9d59f50e3f9b269fb9bb69571d3c2eeae033d6c6cc",\n "type": "24",\n "value_detail": "NULL"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsections"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsections"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSections")])]),e._v(" "),a("p",[e._v("Return to the tab of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Get the actions request object\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The number of entries, default 25 entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("lang")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" -")]),e._v(" "),a("p",[e._v("This field specifies the multilingual resource code or localization, e.g. "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g. "),a("em",[e._v("en-US")]),e._v(", then search in the Multilingual Resources group, "),a("strong",[e._v("default")]),e._v(": "),a("strong",[e._v("en")]),e._v(".")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-23"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of tab entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains information about all columns in the sections table.")])])]),e._v(" "),a("h4",{attrs:{id:"example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSections","id":1,"params":[{"offset":0,"limit":2}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "ecosystem": "1",\n "id": "1",\n "page": "default_page",\n "roles_access": "[]",\n "status": "2",\n "title": "Home",\n "urlname": "home"\n },\n {\n "ecosystem": "1",\n "id": "2",\n "page": "developer_index",\n "roles_access": "[]",\n "status": "1",\n "title": "Developer",\n "urlname": "developer"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getRow")])]),e._v(" "),a("p",[e._v("Returns the entries of the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v('If you do not filter, you can place a blank "".')]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("whereColumn")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Find column name (only Number type columns can be found)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-24"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("value")]),e._v("- "),a("em",[e._v("Object")]),e._v(" - object that receives column values\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - The sequence of requested columns.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getRow","id":1,"params":["@1history",4,"id,sender_id,recipient_id,amount,ecosystem,created_at","id"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "value": {\n "amount": "680388766240",\n "created_at": "1677222830899",\n "ecosystem": "1",\n "id": "296",\n "recipient_id": "6667782293976713160",\n "sender_id": "6660819716178795186"\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-systemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.systemParams")])]),e._v(" "),a("p",[e._v("Returns the list of platform parameters.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - A list of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example "),a("code",[e._v('names="name1,name2"')]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-25"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unique id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.systemParams","id":1,"params":["gap_between_blocks,honor_nodes"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "4",\n "name": "gap_between_blocks",\n "value": "2",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n },\n {\n "id": "6",\n "name": "honor_nodes",\n "value": "",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-history"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.history")])]),e._v(" "),a("p",[e._v("Returns the changed records of the entries of the specified data table in the current ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")]),e._v(" "),a("li",[a("strong",[e._v("tableId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-26"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains change records for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.history","id":1,"params":["contracts",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "conditions": "ContractConditions(\\"MainCondition\\")",\n "ecosystem": "1",\n "value": "// This contract is used to set \\"developer\\" rights....."\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagerow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagerow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystempages data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-27"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Directory.")]),e._v(" "),a("li",[a("strong",[e._v("nodesCount")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of nodes the page needs to validate")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application Id")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPageRow","id":1,"params":["default_page"]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5,\n "name": "default_page",\n "value": "If(#account_id# == #guest_account#){\\n Include(@1apps_description)\\n}.Else{\\n Include(@1profile)\\n}",\n "menu": "default_menu",\n "nodesCount": 1,\n "app_id": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenurow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenurow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenuRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem menu data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-28"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The title.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenuRow","id":1,"params":["default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 2,\n "name": "default_menu",\n "title": "default",\n "value": "\\nMenuItem.....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsnippetrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsnippetrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSnippetRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem snippet data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-29"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])]),e._v(" "),a("h4",{attrs:{id:"example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSnippetRow","id":1,"params":["welcome"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 12,\n "name": "welcome",\n "value": "Div(content-wrapper)....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getappcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getappcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAppContent")])]),e._v(" "),a("p",[e._v("Get application related information (including page, snippet, menu)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application id")])]),e._v(" "),a("h4",{attrs:{id:"return-value-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-30"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("snippets")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of code snippet information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Code snippet name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("pages")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of page information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contracts")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - an array of contract information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "snippets": [ //if not app snippets is null array,example:[]\n {\n "id": 2,\n "name": "developer_link"\n },\n {\n "id": 3,\n "name": "export_info"\n }\n ],\n "pages": [ //if not app pages is null array,example:[]\n {\n "id": 6,\n "name": "menus_list"\n },\n {\n "id": 7,\n "name": "params_edit"\n }\n ],\n "contracts": [ //if not app contracts is null array,example:[]\n {\n "id": 2,\n "name": "MainCondition"\n },\n {\n "id": 33,\n "name": "NodeOwnerCondition"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmember"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmember"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMember")])]),e._v(" "),a("p",[e._v("Get member information")]),e._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Member Information")]),e._v(" "),a("p",[a("strong",[e._v("ecosystemId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoid")]),e._v(" "),a("h4",{attrs:{id:"return-value-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-31"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - member id")]),e._v(" "),a("li",[a("strong",[e._v("member_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Name")]),e._v(" "),a("li",[a("strong",[e._v("image_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Avatar id")]),e._v(" "),a("li",[a("strong",[e._v("member_info")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Introduction")])]),e._v(" "),a("h4",{attrs:{id:"example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}}" -d \'{"jsonrpc":"2.0","method":"ibax.getMember","id":1,"params":["1497-2036-4953-3607-1121",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 14,\n "member_name": "som",\n "image_id": 5, \n "member_info": "{\\"information\\": \\"Everything will be okay in the end. If it\'s not okay, it\'s not the end.\\"}"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontracts"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContracts")])]),e._v(" "),a("p",[e._v("Get the list of contracts in the current ecosystem, you can set the offset and the number of entries.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")]),e._v(" "),a("li",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-32"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract ID.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("wallet_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The address of the account to which the contract is bound.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the application to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change the permissions of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("token_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the ecosystem where the pass is used as a payment for the contract.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContracts","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 293,\n "list": [\n {\n "address": "0000-0000-0000-0000-0000",\n "app_id": "1",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "ecosystem_id": "1",\n "id": "1",\n "name": "DeveloperCondition",\n "token_id": "1",\n "value": "// This contract is used to ...",\n "wallet_id": "0"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontractinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontractinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContractInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified contract.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("contractName")]),e._v("\t-\t"),a("em",[e._v("String")]),e._v("\t-\tThe\tname\tof\tthe\tcontract.\tThe\tformat\tis "),a("code",[e._v("@ecosystem_id%%contractName%")]),e._v(", e.g. @1contractName (the specified eco1contract name contractName) or contractName (the current eco-contract name contractName).")])]),e._v(" "),a("h4",{attrs:{id:"return-value-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-33"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the contract ID in the VM.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("state")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("walletid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the account to which the contract is bound")]),e._v(" "),a("li",[a("strong",[e._v("tokenid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the ecosystem ID of the pass that is used as the payment for the contract.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("tableid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - ID of the entry in the "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")]),e._v(" "),a("li",[a("strong",[e._v("fields")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - array containing structural information for each parameter of the contract "),a("strong",[e._v("data")]),e._v(" section:\n"),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The type of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("optional")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - parameter options, "),a("code",[e._v("true")]),e._v(" means optional parameters, "),a("code",[e._v("false")]),e._v(" means mandatory parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","id":1,"params":["@1TokensSend"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5098,\n "state": 1,\n "tableid": "98",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Amount",\n "type": "money",\n "optional": false\n },\n {\n "name": "Recipient",\n "type": "string",\n "optional": true\n },\n {\n "name": "iName",\n "type": "string",\n "optional": true\n },\n {\n "name": "Comment",\n "type": "string",\n "optional": true\n },\n {\n "name": "Ecosystem",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1TokensSend"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-sendtx"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.sendTx")])]),e._v(" "),a("p",[e._v("Receives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an error response.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Transaction data object\n"),a("ul",[a("li",[a("strong",[e._v("tx_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the content of the transaction, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-34"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - transaction hash arrays:\n"),a("ul",[a("li",[a("strong",[e._v("tx1")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction 1.")]),e._v(" "),a("li",[a("strong",[e._v("txN")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction N.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.sendTx","id":1,"params":[{"tx1":...,"txN":...}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hashes":[\n {"hash1":"hash1"},\n {"hashN":"hashN"}\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txStatus")])]),e._v(" "),a("p",[e._v("Gets the block ID and error message of the specified transaction hash. If the return value of the block ID and error text message is null, then the transaction is not yet contained in the block.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash, split using "),a("code",[e._v(",")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"return-value-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-35"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - returns the block ID if the transaction was executed successfully;")]),e._v(" "),a("p",[e._v("If the transaction execution fails, "),a("em",[e._v("blockid")]),e._v(" will be "),a("code",[e._v("0")]),e._v(", and the corresponding block ID will be returned if the transaction execution error is penalized.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("result")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("errmsg")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Returns an error text message if the execution of the transaction failed.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Error type")]),e._v(" "),a("li",[a("strong",[e._v("error")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - error message")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("penalty")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - if the transaction execution fails, (0: no penalty 1: penalty)")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.txStatus","id":1,"params":["cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9,4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": "793",\n "result": "",\n "penalty": 0\n },\n "cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9": {\n "blockid": "793",\n "errmsg": {\n "type": "warning",\n "error": "platform ecosystem can not be burning Tokens"\n },\n "result": "",\n "penalty": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfo")])]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. If optional parameters are specified, the contract name and its associated parameters can also be returned.")]),e._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-36"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction.\nIf the value is "),a("code",[e._v("0")]),e._v(", no transactions are found for this hash.\nIf the transaction occurred on the current node, it can be obtained via "),a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of node confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Returns contract details if "),a("code",[e._v("contentinfo=true")]),e._v(" is specified. null if not specified")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])]),e._v(" "),a("h4",{attrs:{id:"example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.txInfo","id":1,"params":["020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "blockid": "796",\n "confirm": 0,\n "data": {\n "block_id": 796,\n "block_hash": "bccbc3cf47b49bee5fb7321810884db49b73f5114b0a6fcd234dd3fdf9c22ef4",\n "address": "0666-7782-2939-7671-3160",\n "ecosystem": 2,\n "hash": "020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "1000000000000",\n "Recipient": "0666-7782-2939-7671-3160"\n },\n "created_at": 1678774455841,\n "size": "213.00B",\n "status": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfomultiple"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("p",[e._v("Returns transaction-related information for the specified hash list.")]),e._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - A list of transaction hashes.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-37"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("results")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Data dictionary with transaction hash as key and transaction details as value.\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction. if the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("li",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - If "),a("code",[e._v("contentinfo=true")]),e._v("is specified, the contract details are returned to this parameter. null when not specified\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v("- "),a("em",[e._v("Number")]),e._v(" - Block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":[["1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284","4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"],true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "results": {\n "1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284": {\n "blockid": 0,\n "confirm": 0,\n "data": null\n },\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": 793,\n "confirm": 0,\n "data": {\n "block_id": 793,\n "block_hash": "ef3b2f2e18662e0b8bba136a209e30c5aae76d9a82e0b21209786f62fe5676e4",\n "address": "0666-0819-7161-7879-5186",\n "ecosystem": 1,\n "hash": "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "200",\n "Comment": "Hello Dear",\n "Recipient": "1196-2490-5275-7101-3496"\n },\n "created_at": 1678765099072,\n "size": "297.00B",\n "status": 0\n }\n }\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagevalidatorscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. @1params_list (specifying ecology 1 page name params_list) or params_list (current ecology page name params_list)")])]),e._v(" "),a("h4",{attrs:{id:"return-value-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-38"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("validate_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Specifies the number of nodes to be validated by the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "validate_count": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpage"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPage")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified page name, which is the result of processing by the templating engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the page with the ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".")]),e._v(" "),a("p",[e._v("If you don't have an ecosystem ID, the default is to find the current ecological page, e.g. "),a("code",[e._v("main_page")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-39"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the menu to which the page belongs.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("menutree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree of the page's menus.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - page JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPage","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "menu": "developer_menu",\n "menutree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ],\n "tree": [\n {\n ....\n }\n ...\n ],\n "nodesCount": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenu"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenu")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified menu name, which is the result of processing by the template engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\n"),a("blockquote",[a("p",[e._v("Menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%menu_name%")]),e._v(", e.g.\n"),a("code",[e._v("@1main_menu")]),e._v(".\nIf you don't bring the ecosystem ID, the menu of the current ecology will be found by default, for example\n"),a("code",[e._v("main_menu")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-40"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the menu title.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Menu JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenu","id":1,"params":["@1default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "title": "default",\n "tree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsource"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSource")])]),e._v(" "),a("p",[e._v("Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nPage name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", for example "),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, the default is to find the current ecological page e.g. "),a("code",[e._v("main_page")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-41"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree for the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSource","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": [\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1applications"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"name\\": \\"System\\"}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "setvar",\n "attr": {\n "name": "role_developer_id",\n "value": "AppParam(Ecosystem: #ecosystem_id#, App: #application_id#, Name: role_developer)"\n }\n },\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1roles_participants"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"$and\\": [{\\"role->id\\": {\\"$in\\": [#role_developer_id#]}}, {\\"role->id\\": \\"#role_id#\\"}], \\"member->account\\": \\"#account_id#\\", \\"deleted\\": 0}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "if",\n "attr": {\n "condition": "#developer_access_id#>0"\n },\n "children": [\n {\n "tag": "setvar",\n "attr": {\n "name": "this_page",\n "value": "@1params_list"\n }\n }\n\t\t\t\t\t\t...\n ],\n "tail": [\n {\n "tag": "else",\n "children": [\n {\n "tag": "settitle",\n "attr": {\n "title": "$@1ecosystem_parameters$"\n }\n }\n\t\t\t\t\t\t\t\t...\n ]\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagehash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagehash"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageHash")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page is not found.")]),e._v(" "),a("p",[e._v("To receive the correct hash when making requests to other nodes, you must also pass the\n"),a("em",[e._v("ecosystem,key_id,role_id")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the page with the ecosystem ID. The format is "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. "),a("code",[e._v("@1main_page")]),e._v(", you can specify the eco ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Get the specified page object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")]),e._v(" "),a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The role ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-42"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" -\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageHash","id":1,"params":["@1params_list",0,{"role_id":"1","key_id":"-6484253546138538120"}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "fc5ed3b5e879dd5521dfb792e815019bd8411851e850e75a3590d71e950a0465"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContent")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" Specified as "),a("code",[e._v("true")]),e._v(", this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("template")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page code.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("source")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - If specified as "),a("code",[e._v("true")]),e._v(", the JSON object tree does not perform any functions and receives data.")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-43"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - JSON object tree.")])]),e._v(" "),a("h4",{attrs:{id:"example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-43"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getContent","id":1,"params":[{"template","..."source":true}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": {\n "type":"......", \n "children": [\n {...},\n {...}\n ]\n }\n }\n }\n \n')])])]),a("h3",{attrs:{id:"ibax-getblockinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlockInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified block ID.")]),e._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-44"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block hash value.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollbacks_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensus_mode")]),e._v(" "),a("em",[e._v("Number")]),e._v(" - Consensus mode, parameters (1: creator management mode 2: DAO governance mode)")])])]),e._v(" "),a("h4",{attrs:{id:"example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-44"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlockInfo","id":1,"params":[12]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "Hl+/VvYFFu4iq4zLrRDGHBhm7DM7llEAfEJyaX2Q3is=",\n "key_id": 6667782293976713160,\n "time": 1677134955,\n "tx_count": 1,\n "rollbacks_hash": "o37QAighKMb8WqbEHAqCQb5bOfMvOqV0WoTaN631q74=",\n "node_position": 0,\n "consensus_mode": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getconfig"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getConfig")])]),e._v(" "),a("p",[e._v("Get the host address and port of centrifugo")]),e._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("option")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Configuration item")]),e._v(" "),a("ol",[a("li",[e._v('"centrifugo" - messaging service')])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-45"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("centrifugo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" host address and port of centrifugo Result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-45"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getConfig","id":1,"params":["centrifugo"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "centrifugo":"http://127.0.0.1:8100"\n }\n }\n')])])]),a("h3",{attrs:{id:"net-getnetwork"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-getnetwork"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.getNetwork")])]),e._v(" "),a("p",[e._v("Get node information")]),e._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-46"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")]),e._v(" "),a("li",[a("strong",[e._v("centrifugo_url")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - centrifugo message service address")]),e._v(" "),a("li",[a("strong",[e._v("test")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether it is a test chain")]),e._v(" "),a("li",[a("strong",[e._v("private")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether the chain is private")]),e._v(" "),a("li",[a("strong",[e._v("honor_nodes")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - List of honor nodes\n"),a("ul",[a("li",[a("strong",[e._v("tcp_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - tcp address")]),e._v(" "),a("li",[a("strong",[e._v("api_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - api address")]),e._v(" "),a("li",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - node public key")]),e._v(" "),a("li",[a("strong",[e._v("unban_time")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unlock time")])])])]),e._v(" "),a("h4",{attrs:{id:"example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-46"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.getNetwork","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "network_id": "1",\n "centrifugo_url": "127.0.0.1",\n "test": false,\n "private": false,\n "honor_nodes": [\n {\n "tcp_address": "127.0.0.1:7078",\n "api_address": "http://127.0.0.1:7078",\n "public_key": "049a41b24862f8db61ee66fb206094baa57bfeac7ea786d63662a964d144eb85d1a0e230928d56f46dd61eefac7640b6aa2883b2445c7b2adc0e581f983ff0aedb",\n "unban_time": "-62135596800"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"net-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-status"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.status")])]),e._v(" "),a("p",[e._v("Get the current node status")]),e._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-47"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - Node Status\n"node server status is running" - the node is running\n"node server is updating" - node is being updated\n"node server is stopped" - node suspended')])]),e._v(" "),a("h4",{attrs:{id:"example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-47"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.status","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"rpc-modules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-modules"}},[e._v("#")]),e._v(" "),a("strong",[e._v("rpc.modules")])]),e._v(" "),a("p",[e._v("Get the currently registered JSON-RPC interface")]),e._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-48"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Array")]),e._v(" - JSON-RPC interface array")])]),e._v(" "),a("h4",{attrs:{id:"example-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-48"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"rpc.modules","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n "net.getNetwork",\n "ibax.getAppContent",\n "ibax.honorNodesCount",\n "ibax.maxBlockId",\n "ibax.detailedBlock",\n "ibax.getConfig",\n "ibax.getTableCount",\n "ibax.getMenu"\n ]\n }\n')])])]),a("h3",{attrs:{id:"admin-startjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-startjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.startJsonRpc")])]),e._v(" "),a("p",[e._v("Can be used to switch between JSON-RPC change namespace services")]),e._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("methods")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - JSON-RPC module, default: "ibax,net"')]),e._v(" "),a("h4",{attrs:{id:"return-value-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-49"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-49"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.startJsonRpc","id":1,"params":["ibax,net,admin"]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"admin-stopjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-stopjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.stopJsonRpc")])]),e._v(" "),a("p",[e._v("Close the JSON-RPC service")]),e._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-50"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-50"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.stopJsonRpc","id":1,"params":[]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"debug-getnodebanstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getnodebanstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getNodeBanStat")])]),e._v(" "),a("p",[e._v("Get node disable status")]),e._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-51"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript\n"),a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Disable status, "),a("code",[e._v("true")]),e._v(" ban status, "),a("code",[e._v("false")]),e._v(" not disabled")]),e._v(" "),a("h4",{attrs:{id:"example-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-51"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getNodeBanStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n {\n "node_position": 0,\n "status": true\n }\n ]\n }\n')])])]),a("h3",{attrs:{id:"debug-getmemstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getmemstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getMemStat")])]),e._v(" "),a("p",[e._v("Get the current node memory usage")]),e._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-52"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("alloc")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes requested and still in use")]),e._v(" "),a("li",[a("strong",[e._v("sys")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes fetched from the system")])]),e._v(" "),a("h4",{attrs:{id:"example-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-52"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getMemStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "alloc": 11537432,\n "sys": 35329248\n }\n }\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{405:function(e,t,a){"use strict";a.r(t);var n=a(51),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"json-rpc-application-programming-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-application-programming-interface"}},[e._v("#")]),e._v(" JSON-RPC Application Programming Interface")]),e._v(" "),a("p",[e._v("In order for a software application to interact with the IBAX blockchain (fetch block data or send transactions to the network), it must be connected to an IBAX network node.")]),e._v(" "),a("p",[e._v("Due to the generality and extensibility of the original REST API interface, it will become more and more complex with more and more interfaces and different clients. We realize the importance of interface unification to ensure that all clients can use the same set of specifications, regardless of the specific node and client implementation.")]),e._v(" "),a("p",[e._v("JSON-RPC is a stateless, lightweight remote procedure call (RPC) protocol. It defines a number of data structures and their processing rules. It is transport independent, as these concepts can be used in the same process, via an interface, hypertext transfer protocol, or in many different messaging environments. It uses JSON (RFC 4627) as the data format.")]),e._v(" "),a("p",[e._v("JSON-RPC is compatible with most of the REST API interfaces, retaining the original REST API interface, the client using the REST API interface can easily transfer to the JSON-RPC interface, part of the interface")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/de/reference/api2.html#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/de/reference/api2.html#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/de/reference/api2.html#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])],1)]),e._v(" "),a("p",[e._v("Available through the REST API interface.")]),e._v(" "),a("h2",{attrs:{id:"client-side-implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-side-implementation"}},[e._v("#")]),e._v(" Client-side implementation")]),e._v(" "),a("p",[e._v("Each client can use a different programming language when implementing the JSON-RPC specification, and you can use the\n"),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("GO-SDK"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"curl-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curl-example"}},[e._v("#")]),e._v(" Curl example")]),e._v(" "),a("p",[e._v("The following provides examples of using the JSON RPC API by making curl requests to IBAX nodes. Each example includes a description of the particular endpoint, its parameters, the return type, and a working example of how it should be used.")]),e._v(" "),a("p",[e._v('Curl requests may return an error message related to the content type. This is because the --data option sets the content type to application/x-www-form-urlencoded. If your request has this problem, set the header manually by placing -H "Content-Type: application/json" at the beginning of the call. These examples also do not include the URL/Internet Protocol and port combination that must be the last parameter of the curl (e.g. 127.0.0.1:7079 A full curl request with this additional data takes the form of')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","params":[],"id":1}\' http://127.0.0.1:7079\t\n')])])]),a("h2",{attrs:{id:"covenant"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#covenant"}},[e._v("#")]),e._v(" Covenant")]),e._v(" "),a("h3",{attrs:{id:"hex"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hex"}},[e._v("#")]),e._v(" Hex")]),e._v(" "),a("p",[a("strong",[e._v("Hexadecimal code")])]),e._v(" "),a("p",[e._v("When encoding byte arrays, hashes, and bytecode arrays: the encoding is hexadecimal, two hexadecimal digits per byte.")]),e._v(" "),a("h3",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("Content-Type: application/json")])]),e._v(" "),a("h3",{attrs:{id:"special-markers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-markers"}},[e._v("#")]),e._v(" Special markers")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("This field is an optional parameter.")]),e._v(" "),a("p",[e._v("If there are multiple "),a("code",[e._v("Omitempty")]),e._v(" fields in a row,\nBut only want to pass the value of a certain field, then you need to set the unwanted field to null (the field type null value), Example:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Name")]),e._v(" "),a("li",[a("strong",[e._v("column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Filter column names")])]),e._v(" "),a("p",[e._v("If only the name value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0, "testname"]')]),e._v(" - "),a("em",[e._v("Number")]),e._v(" null value is 0")]),e._v(" "),a("p",[e._v("If only the column value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0,"", "title,page"]')]),e._v(" - "),a("em",[e._v("String")]),e._v(' empty value for ""')]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("Authorization header, add Authorization to the request header, example:")]),e._v(" "),a("p",[a("strong",[e._v("name")]),e._v(" : Authorization "),a("strong",[e._v("value")]),e._v(" : Bearer +"),a("a",{attrs:{href:"#ibax-login"}},[e._v("login token")])]),e._v(" "),a("p",[e._v("Example:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","params":["@1TokensSend"],"id":1}\' http://127.0.0.1:7079\n\n')])])]),a("h4",{attrs:{id:"accountorkeyid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#accountorkeyid"}},[e._v("#")]),e._v(" AccountOrKeyId")]),e._v(" "),a("p",[e._v("For the account address parameter, you can use two formats of addresses, for example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v(" - Account Address "),a("code",[e._v('"XXXX-XXXX-XXXX-XXXX-XXXX"')]),e._v(" or Account Id "),a("code",[e._v('"64842...538120"')]),e._v(' .538120"`')])])]),e._v(" "),a("li",[a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Address object")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Account Id, Example: "),a("code",[e._v('{"key_id":-64842\t38120}')])]),e._v(" "),a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account address, Example: "),a("code",[e._v('{"account": "1196-... -\t-... -3496"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Account Id is preferred when both account address and account Id exist")]),e._v(".")])])]),e._v(" "),a("h4",{attrs:{id:"blockorhash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockorhash"}},[e._v("#")]),e._v(" BlockOrHash")]),e._v(" "),a("p",[e._v("Block height or block HASH, example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v("\t-\tBlock\tHeight\t"),a("code",[e._v('"100"')]),e._v("\tor\tBlock\tHASH"),a("code",[e._v('"4663aa47...a60753c18d9ba9cb4"')])])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - Block information object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height, example: "),a("code",[e._v('{"id":2}')])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v("\t-\t"),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v("\tString")]),e._v("\t-\tBlock\tHASH,\tExample:\t"),a("code",[e._v('{"hash": "d36b8996c\tc616d3043a0d02a0f59"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Block Height and Block HASH can only choose one")]),e._v(".")])])])])]),e._v(" "),a("h3",{attrs:{id:"batch-requests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#batch-requests"}},[e._v("#")]),e._v(" Batch requests")]),e._v(" "),a("p",[e._v("This feature can be used to reduce network latency, especially when acquiring a large number of largely independent data objects.")]),e._v(" "),a("p",[e._v("The following is an example of obtaining the highest block and total number of transactions:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'[{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]},{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":2,"params":[]}]\' http://127.0.0.1:7079\n\n //Response\n [\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149100\n },\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": 797\n }\n ]\n')])])]),a("h3",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Returns status "),a("code",[e._v("200")]),e._v(" in case the request is executed successfully.")]),e._v(" "),a("p",[e._v("If an error occurs, a JSON object with the following fields will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("jsonrpc")]),e._v(" "),a("p",[e._v("Error identifier.")])]),e._v(" "),a("li",[a("p",[e._v("id")]),e._v(" "),a("p",[e._v("Error text message.")])]),e._v(" "),a("li",[a("p",[e._v("error")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("code")]),e._v(" "),a("p",[e._v("Response Status Code")])]),e._v(" "),a("li",[a("p",[e._v("message")]),e._v(" "),a("p",[e._v("Response Status Description")])])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "jsonrpc": "2.0",\n "id": 1,\n "error": {\n "code": -32014,\n "message": "Unauthorized"\n }\n}\n')])])]),a("h2",{attrs:{id:"json-rpc-namespaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-namespaces"}},[e._v("#")]),e._v(" JSON-RPC Namespaces")]),e._v(" "),a("h3",{attrs:{id:"ibax-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-namespace"}},[e._v("#")]),e._v(" ibax Namespace")]),e._v(" "),a("h4",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getuid"}},[e._v("ibax.getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-login"}},[e._v("ibax.login")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getauthstatus"}},[e._v("ibax.getAuthStatus")])])]),e._v(" "),a("h4",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" server-side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getversion"}},[e._v("ibax.getVersion")])])]),e._v(" "),a("h4",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getbalance"}},[e._v("ibax.getBalance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockstxinfo"}},[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblocks"}},[e._v("ibax.detailedBlocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyinfo"}},[e._v("ibax.getKeyInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblock"}},[e._v("ibax.detailedBlock")])])]),e._v(" "),a("h4",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-maxblockid"}},[e._v("ibax.maxBlockId")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyscount"}},[e._v("ibax.getKeysCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettxcount"}},[e._v("ibax.getTxCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettransactioncount"}},[e._v("ibax.getTransactionCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockscountbynode"}},[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-honornodescount"}},[e._v("ibax.honorNodesCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemcount"}},[e._v("ibax.getEcosystemCount")])])]),e._v(" "),a("h4",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-ecosysteminfo"}},[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-appparams"}},[e._v("ibax.appParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemparams"}},[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettablecount"}},[e._v("ibax.getTableCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettable"}},[e._v("ibax.getTable")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getlist"}},[e._v("ibax.getList")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsections"}},[e._v("ibax.getSections")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getrow"}},[e._v("ibax.getRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-systemparams"}},[e._v("ibax.systemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-history"}},[e._v("ibax.history")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagerow"}},[e._v("ibax.getPageRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenurow"}},[e._v("ibax.getMenuRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsnippetrow"}},[e._v("ibax.getSnippetRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getappcontent"}},[e._v("ibax.getAppContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmember"}},[e._v("ibax.getMember")])])]),e._v(" "),a("h4",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getcontracts"}},[e._v("ibax.getContracts")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-sendtx"}},[e._v("ibax.sendTx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfo"}},[e._v("ibax.txInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfomultiple"}},[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpage"}},[e._v("ibax.getPage")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenu"}},[e._v("ibax.getMenu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsource"}},[e._v("ibax.getSource")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagehash"}},[e._v("ibax.getPageHash")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontent"}},[e._v("ibax.getContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockinfo"}},[e._v("ibax.getBlockInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getconfig"}},[e._v("ibax.getConfig")])])]),e._v(" "),a("h3",{attrs:{id:"net-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-namespace"}},[e._v("#")]),e._v(" net Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#net-getnetwork"}},[e._v("net.getNetwork")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#net-status"}},[e._v("net.status")])])]),e._v(" "),a("h3",{attrs:{id:"rpc-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-namespace"}},[e._v("#")]),e._v(" rpc Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rpc-modules"}},[e._v("rpc.modules")])])]),e._v(" "),a("h3",{attrs:{id:"admin-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-namespace"}},[e._v("#")]),e._v(" admin Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#admin-startjsonrpc"}},[e._v("admin.startJsonRpc")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#admin-stopjsonrpc"}},[e._v("admin.stopJsonRpc")])])]),e._v(" "),a("h3",{attrs:{id:"debug-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-namespace"}},[e._v("#")]),e._v(" debug Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#debug-getnodebanstat"}},[e._v("debug.getNodeBanStat")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#debug-getmemstat"}},[e._v("debug.getMemStat")])])]),e._v(" "),a("h2",{attrs:{id:"json-rpc-interface-methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-interface-methods"}},[e._v("#")]),e._v(" JSON-RPC Interface Methods")]),e._v(" "),a("h3",{attrs:{id:"ibax-getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getuid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getUid")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Generate a temporary JWT token,\twhich needs to be passed to "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(" when calling "),a("strong",[a("a",{attrs:{href:"#ibax-login"}},[e._v("login")])])]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("uid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The signature number.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - temporary token passed during login (temporary token has a 5 second lifespan).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("cryptoer")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Elliptic curve algorithm.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hasher")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - hash algorithm.")])])]),e._v(" "),a("p",[e._v("In the case that no authorization is required(the request contains "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(", the following message will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Expiration time.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])])]),e._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response1\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "uid": "5823391950439015186",\n "token": "ey....",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response2\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "expire": "7h59m49.5361126s",\n "ecosystem_id": "1",\n "key_id": "6667782293976713160",\n "address": "0666-7782-2939-7671-3160",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-login"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.login")])]),e._v(" "),a("p",[e._v("User authentication. "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"#ibax-getuid"}},[a("strong",[e._v("ibax.getUid")])]),e._v(" command should be called first in order to receive the unique value and sign it.\nThe temporary JWT token for getuid needs to be passed in the request header.\nIf the request is successful, the token received in the response is contained in "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication call object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID. if not specified, defaults to the first ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The lifecycle of the JWT token in seconds, default is 28800,8 hours.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Hexadecimal account public key.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -")]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("signature")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nUse the private key to sign the uid received by getuid.")]),e._v(" "),a("p",[e._v("Signature data content:LOGIN+{$network_id}+uid")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID, default role 0")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-2"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - JWT token.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("notify_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The notification ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isnode")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isowner")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the creator of this ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("clb")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the logged-in ecosystem is a CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("timestamp")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - current timestamp")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" list of roles, if there are no roles, the field is nil")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID")]),e._v(" "),a("li",[a("strong",[e._v("role_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Role name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.login","params":[{"ecosystem_id":1,"public_key":"04....","signature","46...","role_id":0}],"id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "token": "ey...",\n "ecosystem_id": "1",\n "key_id": "6660819716178795186",\n "account": "0666-xxxx-xxxx-xxxx-5186",\n "notify_key": "ey....",\n "isnode": false,\n "isowner": false,\n "clb": false,\n "timestamp": "1678336163",\n "roles": nil //[{"role_id": 1, "role_name": "Developer"},{"role_id": 2, "role_name": "DevelopGovernancerer"}]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getauthstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getauthstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAuthStatus")])]),e._v(" "),a("p",[e._v("User authentication status\n"),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-3"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication status object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("active")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - The current user authentication status. Values: "),a("code",[e._v("true,false")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("exp")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Token validity cutoff timestamp")])])]),e._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getAuthStatus","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "active": true,\n "exp": 1678354136\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getversion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getversion"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getVersion")])]),e._v(" "),a("p",[e._v("Returns the current server version.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-4"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("vesion")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - version number ("),a("code",[e._v("big Version")]),e._v(" + "),a("code",[e._v("branch name")]),e._v(" + "),a("code",[e._v("git commit")]),e._v(" + "),a("code",[e._v("time")]),e._v(" + "),a("code",[e._v("node status")]),e._v(")")])]),e._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getVersion","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "1.3.0 branch.main commit.b57d4194 time.2023-03-08-09:30:29(UTC) node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"ibax-getbalance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getbalance"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBalance")])]),e._v(" "),a("p",[e._v("Get the account address balance.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("key_id or account")]),e._v(" - "),a("a",{attrs:{href:"#accountorkeyid"}},[a("em",[e._v("AccountOrKeyId")])]),e._v(" - account address "),a("code",[e._v("XXXX- XXXX-XXXX-XXXX-XXXX")]),e._v(" or account ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default 1")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-5"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the balance object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the minimum unit of the contract account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("total")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the total balance of the minimum unit account (amount + utxo).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("utxo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Minimum unit UTXO account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")])])]),e._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["648...8120"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["1196-...-...-...-3496",1]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":[{"key_id":{$key_id}},1]}\' http://127.0.0.1:7079 //keyId or account\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "amount": "9915319240441612",\n "digits": 12,\n "total": "9915319240441612",\n "utxo": "0",\n "token_symbol": "IBXC"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockstxinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockstxinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("p",[e._v("Returns a list containing additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the starting block height to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-6"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block information object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height")])]),e._v(" "),a("li",[a("p",[e._v("List of transactions in the block and additional information for each transaction:")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" -\nFor the first block, it is the account address of the first block that signed the transaction.")]),e._v(" "),a("p",[e._v("For all other blocks, it is the address of the account that signed the transaction.")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksTxInfo","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": [ //block_id\n {\n "hash": "uXSaSrMWlbHpNlu049J5BDypC6MzBQ0/5VEfGQf+5aQ=",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160\n }\n ],\n "2": [ //block_id\n {\n "hash": "r8U9IKjtZ5Be5D4ak3zxLlDwn36CTdfIAsVvQhx7P3w=",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblocks"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlocks")])]),e._v(" "),a("p",[e._v("Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the starting block to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-7"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height\n"),a("ul",[a("li",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")]),e._v(" "),a("li",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")]),e._v(" "),a("li",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")]),e._v(" "),a("li",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")]),e._v(" "),a("li",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlocks","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": { //block id\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f73497ede8f22d678bc4be6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "36373332663064383331353264316333653639346431656436383734373634363463616363616564636632353232646335633736643066623737343931366363",\n "bin_data": "Cp4BCAEQppm...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n },\n "2": { //block id\n "header": {\n "block_id": 2,\n "time": 1676536235,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "dd13a30661d35e01df82027a6e6607eb47ee00765d69767dbb99e151676c2c96",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676536235,\n "tx_count": 1,\n "size": "1.53KiB",\n "rollbacks_hash": "9041312d69e6bcd37c91a2bfa066abaeb53b8398708937a618a89960bfadab3d",\n "merkle_root": "65366537383931353662613230356565396466353061316538656538643636323332316636616265623764633539616166346635343030383135386538643130",\n "bin_data": "Cp4BCAIQq9O...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "afc53d20a8ed67905ee43e1a937cf12e50f09f7e824dd7c802c56f421c7b3f7c",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160,\n "time": 1676536233945,\n "type": 3,\n "size": "390.00B"\n }\n ]\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeyInfo")])]),e._v(" "),a("p",[e._v("Returns a list of ecosystems with roles that are registered to the specified address.")]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")])]),e._v(" "),a("h4",{attrs:{id:"return-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-8"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Specify the address eco-list object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystems")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Eco-List\n"),a("ul",[a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - list of roles.\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - role id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Character name")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeyInfo","id":1,"params":["0666-XXXX-XXXX-XXXX-5186"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "account": "0666-XXXX-XXXX-XXXX-5186",\n "ecosystems": [\n {\n "ecosystem": "1",\n "name": "platform ecosystem",\n "digits": 12,\n "roles": [\n {\n "id": "1",\n "name": "Developer"\n },\n {\n "id": "2",\n "name": "Governancer"\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblock"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlock")])]),e._v(" "),a("p",[e._v("Returns a detailed list of additional information about the transactions in the block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block or Hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - Block Height or Block Hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-9"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["1"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91"]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":[{"id":1}]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "3637333266306438333135...623737343931366363",\n "bin_data": "Cp4BCAEQppm2nwYgyI/8gLSVrsRcMkAFGTK6nxD86hfhgQX0dWzO8aYZExDN9UPm8sKkqeUbwrNliYuCJHvvdX+txINnM7+gDqtMF/1K43kc0gYC0u8uOiANfVG0wUusv0XYEvc0l+3o8i1ni8S+bmhIGT87cmKskUIgBEhSsqZwreVAfnj7KGPFHen8uWVCoHGG/jrtpruKEW1IA1ABYAESRDogQBBdW8EBBcF/1yuTqPczaeLubu5NRxS3v3vzwvFW5gFCIARIUrKmcK3lQH54+yhjxR3p/LllQqBxhv467aa7ihFtGkA2NzMyZjBkODMxNTJkMWMzZTY5NGQxZWQ2ODc0NzY0NjRjYWNjYWVkY2YyNTIyZGM1Yzc2ZDBmYjc3NDkxNmNjKugCeJxibFvmk5+enlp0YK1LUkhRYl5xYnJJZn7egSUuiSWJ7Uu9Uys9XS7HdOxY7SDPfmJJSGZu6mUGBgaG5Lc9y1YGlCblZCZ7p1YecejvOPzyp63tWeYpWS+nxBTv3biTOUTqg7vfgedPuXdbnjsmYX49a9mXA025NT4TbjQ65bQwbloQcjbQRG3ZudjjUxuL1/rlp6QimTfLcZNH0o/bie/SfiskTNm1tPrfmrrlbdfMklamXHR53XpxwSODSb1hX3Kvyb1fU+awbZVG8yaXmGqtO3wR8jPsP6y7vTW4JL/AL7WkPL8o2zm1qMSpNC8lJ/XAkpDU4hKwBxgYGBg3BhRlliWWpDrl5CdnJ2ckZuadh0oxrAT5tLgkMbfgMgMDY1v42yy2ZSEVHonFGUcUdpbM8tosNnXjS7PoLY8vVbLYrORebMzKa/80UF6S/d/TJcsDEitz8hNTjvwaueEHCAAA//+pZRGv",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-maxblockid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.maxBlockId")])]),e._v(" "),a("p",[e._v("Get the highest block ID on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-10"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block Id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The highest block on the current node")])]),e._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 774\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeysCount")])]),e._v(" "),a("p",[e._v("Get the total number of addresses on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-11"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of addresses")])]),e._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeysCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 11\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettxcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettxcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTxCount")])]),e._v(" "),a("p",[e._v("Get the total number of transactions in the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-12"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of transactions")])]),e._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149068\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettransactioncount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettransactioncount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTransactionCount")])]),e._v(" "),a("p",[e._v("Get the number of block transactions")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block or hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - block height or block hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-13"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("h4",{attrs:{id:"example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTransactionCount","id":1,"params":["efc386f7573269610a34af9cc722f775cca8183ccaa0ed7a96db61ef0bde6d1c"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 337\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockscountbynode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockscountbynode"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("p",[e._v("Get the number of node location packing blocks")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("nodePosition")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensusMode")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Consensus Mode, parameters (1: Creator Management Mode 2: DAO Governance Mode)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-14"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the node subscript packing number object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("total_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("partial_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of node subscript packing blocks")])])]),e._v(" "),a("h4",{attrs:{id:"example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksCountByNode","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "total_count": 774,\n "partial_count": 774\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-honornodescount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-honornodescount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.honorNodesCount")])]),e._v(" "),a("p",[e._v("Get number of honor nodes")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-15"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of nodes")])]),e._v(" "),a("h4",{attrs:{id:"example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.honorNodesCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 1\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemCount")])]),e._v(" "),a("p",[e._v("Number of ecosystem acquisitions")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-16"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecological number")])]),e._v(" "),a("h4",{attrs:{id:"example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 2\n }\n')])])]),a("h3",{attrs:{id:"ibax-ecosysteminfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ecosysteminfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("p",[e._v("Access to ecological information")]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ecosystem id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecological ID")])]),e._v(" "),a("h4",{attrs:{id:"return-value-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-17"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Eco-ID")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecological name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")]),e._v(" "),a("li",[a("strong",[e._v("token_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the token")]),e._v(" "),a("li",[a("strong",[e._v("total_amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the number of issues (first issue, or "),a("code",[e._v('"0"')]),e._v(" if not issued)")]),e._v(" "),a("li",[a("strong",[e._v("is_withdraw")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - destructible "),a("code",[e._v("true:destructible false:undestructible")])]),e._v(" "),a("li",[a("strong",[e._v("withdraw")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - amount of destruction ("),a("code",[e._v('"0"')]),e._v(" if not destructible, or not destroyed)")]),e._v(" "),a("li",[a("strong",[e._v("is_emission")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - may be incremented "),a("code",[e._v("true:may be incremented false:may not be incremented")])]),e._v(" "),a("li",[a("strong",[e._v("emission")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - increment ("),a("code",[e._v('"0"')]),e._v(" if no increment is available, or if no increment is available)")]),e._v(" "),a("li",[a("strong",[e._v("introduction")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco Introduction")]),e._v(" "),a("li",[a("strong",[e._v("logo")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoLogo Id (corresponds to Binary table id), available through the RESTFUL API")]),e._v(" "),a("li",[a("strong",[e._v("creator")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco-creator")])]),e._v(" "),a("h4",{attrs:{id:"example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.ecosystemInfo","id":1,"params":[1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "id": 5,\n "name": "test name",\n "digits": 6,\n "token_symbol": "test",\n "token_name": "test Coin",\n "total_amount": "10000",\n "is_withdraw": true,\n "withdraw": "100000000000900000",\n "is_emission": true,\n "emission": "100000000001000000",\n "introduction": "this is a test introduction",\n "logo": 6,\n "creator": "0666-0819-7161-7879-5186"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-appparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-appparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.appParams")])]),e._v(" "),a("p",[e._v("Returns a list of application parameters in the current or specified ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("appid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the application ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID;")]),e._v(" "),a("p",[e._v("If unspecified or 0, the parameters of the current ecosystem will be returned.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Filter the application parameter names.")]),e._v(" "),a("p",[e._v("A comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-18"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Array")]),e._v(" - List of application parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application ID")]),e._v(" "),a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Each element of the array contains the following parameters\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - parameter ID, unique;")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the parameter;")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the parameter value;")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.appParams","id":1,"params":[1,1,"role_developer,role_governancer"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "app_id": 1,\n "list": [\n {\n "id": "4",\n "name": "role_developer",\n "value": "1",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n },\n {\n "id": "5",\n "name": "role_governancer",\n "value": "2",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("p",[e._v("Get a list of ecosystem parameters")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID")]),e._v(" "),a("p",[e._v("If 0 or no such parameter, default: current ecid.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The name of the filter parameter.")]),e._v(" "),a("p",[e._v("Comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")])]),e._v(" "),a("p",[e._v("The "),a("em",[e._v("offset")]),e._v(" and "),a("em",[e._v("limit")]),e._v(" parameters are invalid when there is a filter parameter.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-19"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The id of the parameter, unique.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemParams","id":1,"params":[0,"changing_app_params,changing_language"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "9",\n "name": "changing_app_params",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n },\n {\n "id": "4",\n "name": "changing_language",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettablecount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettablecount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTableCount")])]),e._v(" "),a("p",[e._v("Returns a list of data tables for the current ecosystem.")]),e._v(" "),a("p",[e._v("Offset and number of entries can be set")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-20"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The total number of sheets of the current ecological data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table without prefix.")]),e._v(" "),a("li",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The number of entries in the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTableCount","id":1,"params":[0,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 32,\n "list": [\n {\n "name": "app_params",\n "count": "41"\n },\n {\n "name": "applications",\n "count": "7"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettable"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTable")])]),e._v(" "),a("p",[e._v("Returns information about the current ecosystem request data table.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Data table name")])]),e._v(" "),a("h4",{attrs:{id:"return-value-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-21"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("insert")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add permission to add an entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("new_column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add new field permission.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("update")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change entry permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The application id.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Conditions for changing permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of information related to data table fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the field.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The field data type.")]),e._v(" "),a("li",[a("strong",[e._v("perm")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Permission to change the value of this field.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTable","id":1,"params":["app_params"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "name": "app_params",\n "insert": "ContractConditions(\\"DeveloperCondition\\")",\n "new_column": "ContractConditions(\\"@1MainCondition\\")",\n "update": "ContractAccess(\\"@1EditAppParam\\")",\n "conditions": "ContractConditions(\\"@1MainCondition\\")",\n "app_id": "1",\n "columns": [\n {\n "name": "value",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "app_id",\n "type": "number",\n "perm": "ContractAccess(\\"@1ItemChangeAppId\\")"\n },\n {\n "name": "ecosystem",\n "type": "number",\n "perm": "false"\n },\n {\n "name": "conditions",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "permissions",\n "type": "json",\n "perm": "ContractConditions(\\"@1MainCondition\\")"\n },\n {\n "name": "name",\n "type": "varchar",\n "perm": "false"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getlist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getlist"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getList")])]),e._v(" "),a("p",[e._v("Returns the entry of the specified data table.")]),e._v(" "),a("p",[e._v("You can specify the columns to be returned.")]),e._v(" "),a("p",[e._v("You can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("You can set the query criteria.")]),e._v(" "),a("p",[e._v("Hex encoding of data tables of type "),a("em",[e._v("BYTEA")]),e._v(" (byte arrays, hashes, byte code arrays)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the data table object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("order")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Sort by, default id ASC.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("where")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Query criteria")]),e._v(" "),a("p",[e._v("Example:If you want to query id>2 and name = john")]),e._v(" "),a("p",[e._v("You can use "),a("code",[e._v('where:{"id":{"$gt":2}, "name":{"$eq": "john"}}')])]),e._v(" "),a("p",[e._v("For details, please refer to "),a("RouterLink",{attrs:{to:"/de/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" where syntax")],1)])]),e._v(" "),a("h4",{attrs:{id:"return-value-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-22"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - Other columns of the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getList","id":1,"params":[{"name":"@1history","where":{"$and": [{"id":{"$gt": 2}}, {"id":{"$lt": 5}}]}}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "amount": "1000000000000000000",\n "block_id": "4",\n "comment": "UTXO",\n "created_at": "1676538080433",\n "ecosystem": "1",\n "id": "3",\n "recipient_balance": "1000000000000000000",\n "recipient_id": "666...160",\n "sender_balance": "1000000000000000000",\n "sender_id": "666...3160",\n "status": "0",\n "txhash": "2ac156c0ce55c10fd485cb9d59f50e3f9b269fb9bb69571d3c2eeae033d6c6cc",\n "type": "24",\n "value_detail": "NULL"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsections"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsections"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSections")])]),e._v(" "),a("p",[e._v("Return to the tab of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Get the actions request object\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The number of entries, default 25 entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("lang")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" -")]),e._v(" "),a("p",[e._v("This field specifies the multilingual resource code or localization, e.g. "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g. "),a("em",[e._v("en-US")]),e._v(", then search in the Multilingual Resources group, "),a("strong",[e._v("default")]),e._v(": "),a("strong",[e._v("en")]),e._v(".")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-23"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of tab entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains information about all columns in the sections table.")])])]),e._v(" "),a("h4",{attrs:{id:"example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSections","id":1,"params":[{"offset":0,"limit":2}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "ecosystem": "1",\n "id": "1",\n "page": "default_page",\n "roles_access": "[]",\n "status": "2",\n "title": "Home",\n "urlname": "home"\n },\n {\n "ecosystem": "1",\n "id": "2",\n "page": "developer_index",\n "roles_access": "[]",\n "status": "1",\n "title": "Developer",\n "urlname": "developer"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getRow")])]),e._v(" "),a("p",[e._v("Returns the entries of the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v('If you do not filter, you can place a blank "".')]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("whereColumn")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Find column name (only Number type columns can be found)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-24"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("value")]),e._v("- "),a("em",[e._v("Object")]),e._v(" - object that receives column values\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - The sequence of requested columns.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getRow","id":1,"params":["@1history",4,"id,sender_id,recipient_id,amount,ecosystem,created_at","id"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "value": {\n "amount": "680388766240",\n "created_at": "1677222830899",\n "ecosystem": "1",\n "id": "296",\n "recipient_id": "6667782293976713160",\n "sender_id": "6660819716178795186"\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-systemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.systemParams")])]),e._v(" "),a("p",[e._v("Returns the list of platform parameters.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - A list of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example "),a("code",[e._v('names="name1,name2"')]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-25"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unique id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.systemParams","id":1,"params":["gap_between_blocks,honor_nodes"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "4",\n "name": "gap_between_blocks",\n "value": "2",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n },\n {\n "id": "6",\n "name": "honor_nodes",\n "value": "",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-history"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.history")])]),e._v(" "),a("p",[e._v("Returns the changed records of the entries of the specified data table in the current ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")]),e._v(" "),a("li",[a("strong",[e._v("tableId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-26"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains change records for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.history","id":1,"params":["contracts",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "conditions": "ContractConditions(\\"MainCondition\\")",\n "ecosystem": "1",\n "value": "// This contract is used to set \\"developer\\" rights....."\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagerow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagerow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystempages data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-27"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Directory.")]),e._v(" "),a("li",[a("strong",[e._v("nodesCount")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of nodes the page needs to validate")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application Id")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPageRow","id":1,"params":["default_page"]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5,\n "name": "default_page",\n "value": "If(#account_id# == #guest_account#){\\n Include(@1apps_description)\\n}.Else{\\n Include(@1profile)\\n}",\n "menu": "default_menu",\n "nodesCount": 1,\n "app_id": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenurow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenurow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenuRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem menu data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-28"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The title.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenuRow","id":1,"params":["default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 2,\n "name": "default_menu",\n "title": "default",\n "value": "\\nMenuItem.....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsnippetrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsnippetrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSnippetRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem snippet data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-29"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])]),e._v(" "),a("h4",{attrs:{id:"example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSnippetRow","id":1,"params":["welcome"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 12,\n "name": "welcome",\n "value": "Div(content-wrapper)....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getappcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getappcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAppContent")])]),e._v(" "),a("p",[e._v("Get application related information (including page, snippet, menu)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application id")])]),e._v(" "),a("h4",{attrs:{id:"return-value-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-30"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("snippets")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of code snippet information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Code snippet name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("pages")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of page information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contracts")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - an array of contract information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "snippets": [ //if not app snippets is null array,example:[]\n {\n "id": 2,\n "name": "developer_link"\n },\n {\n "id": 3,\n "name": "export_info"\n }\n ],\n "pages": [ //if not app pages is null array,example:[]\n {\n "id": 6,\n "name": "menus_list"\n },\n {\n "id": 7,\n "name": "params_edit"\n }\n ],\n "contracts": [ //if not app contracts is null array,example:[]\n {\n "id": 2,\n "name": "MainCondition"\n },\n {\n "id": 33,\n "name": "NodeOwnerCondition"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmember"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmember"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMember")])]),e._v(" "),a("p",[e._v("Get member information")]),e._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Member Information")]),e._v(" "),a("p",[a("strong",[e._v("ecosystemId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoid")]),e._v(" "),a("h4",{attrs:{id:"return-value-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-31"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - member id")]),e._v(" "),a("li",[a("strong",[e._v("member_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Name")]),e._v(" "),a("li",[a("strong",[e._v("image_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Avatar id")]),e._v(" "),a("li",[a("strong",[e._v("member_info")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Introduction")])]),e._v(" "),a("h4",{attrs:{id:"example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}}" -d \'{"jsonrpc":"2.0","method":"ibax.getMember","id":1,"params":["1497-2036-4953-3607-1121",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 14,\n "member_name": "som",\n "image_id": 5, \n "member_info": "{\\"information\\": \\"Everything will be okay in the end. If it\'s not okay, it\'s not the end.\\"}"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontracts"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContracts")])]),e._v(" "),a("p",[e._v("Get the list of contracts in the current ecosystem, you can set the offset and the number of entries.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")]),e._v(" "),a("li",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-32"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract ID.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("wallet_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The address of the account to which the contract is bound.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the application to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change the permissions of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("token_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the ecosystem where the pass is used as a payment for the contract.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContracts","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 293,\n "list": [\n {\n "address": "0000-0000-0000-0000-0000",\n "app_id": "1",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "ecosystem_id": "1",\n "id": "1",\n "name": "DeveloperCondition",\n "token_id": "1",\n "value": "// This contract is used to ...",\n "wallet_id": "0"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontractinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontractinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContractInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified contract.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("contractName")]),e._v("\t-\t"),a("em",[e._v("String")]),e._v("\t-\tThe\tname\tof\tthe\tcontract.\tThe\tformat\tis "),a("code",[e._v("@ecosystem_id%%contractName%")]),e._v(", e.g. @1contractName (the specified eco1contract name contractName) or contractName (the current eco-contract name contractName).")])]),e._v(" "),a("h4",{attrs:{id:"return-value-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-33"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the contract ID in the VM.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("state")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("walletid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the account to which the contract is bound")]),e._v(" "),a("li",[a("strong",[e._v("tokenid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the ecosystem ID of the pass that is used as the payment for the contract.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("tableid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - ID of the entry in the "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")]),e._v(" "),a("li",[a("strong",[e._v("fields")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - array containing structural information for each parameter of the contract "),a("strong",[e._v("data")]),e._v(" section:\n"),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The type of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("optional")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - parameter options, "),a("code",[e._v("true")]),e._v(" means optional parameters, "),a("code",[e._v("false")]),e._v(" means mandatory parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","id":1,"params":["@1TokensSend"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5098,\n "state": 1,\n "tableid": "98",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Amount",\n "type": "money",\n "optional": false\n },\n {\n "name": "Recipient",\n "type": "string",\n "optional": true\n },\n {\n "name": "iName",\n "type": "string",\n "optional": true\n },\n {\n "name": "Comment",\n "type": "string",\n "optional": true\n },\n {\n "name": "Ecosystem",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1TokensSend"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-sendtx"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.sendTx")])]),e._v(" "),a("p",[e._v("Receives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an error response.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Transaction data object\n"),a("ul",[a("li",[a("strong",[e._v("tx_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the content of the transaction, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-34"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - transaction hash arrays:\n"),a("ul",[a("li",[a("strong",[e._v("tx1")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction 1.")]),e._v(" "),a("li",[a("strong",[e._v("txN")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction N.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.sendTx","id":1,"params":[{"tx1":...,"txN":...}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hashes":[\n {"hash1":"hash1"},\n {"hashN":"hashN"}\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txStatus")])]),e._v(" "),a("p",[e._v("Gets the block ID and error message of the specified transaction hash. If the return value of the block ID and error text message is null, then the transaction is not yet contained in the block.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash, split using "),a("code",[e._v(",")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"return-value-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-35"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - returns the block ID if the transaction was executed successfully;")]),e._v(" "),a("p",[e._v("If the transaction execution fails, "),a("em",[e._v("blockid")]),e._v(" will be "),a("code",[e._v("0")]),e._v(", and the corresponding block ID will be returned if the transaction execution error is penalized.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("result")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("errmsg")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Returns an error text message if the execution of the transaction failed.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Error type")]),e._v(" "),a("li",[a("strong",[e._v("error")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - error message")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("penalty")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - if the transaction execution fails, (0: no penalty 1: penalty)")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.txStatus","id":1,"params":["cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9,4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": "793",\n "result": "",\n "penalty": 0\n },\n "cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9": {\n "blockid": "793",\n "errmsg": {\n "type": "warning",\n "error": "platform ecosystem can not be burning Tokens"\n },\n "result": "",\n "penalty": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfo")])]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. If optional parameters are specified, the contract name and its associated parameters can also be returned.")]),e._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-36"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction.\nIf the value is "),a("code",[e._v("0")]),e._v(", no transactions are found for this hash.\nIf the transaction occurred on the current node, it can be obtained via "),a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of node confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Returns contract details if "),a("code",[e._v("contentinfo=true")]),e._v(" is specified. null if not specified")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])]),e._v(" "),a("h4",{attrs:{id:"example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.txInfo","id":1,"params":["020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "blockid": "796",\n "confirm": 0,\n "data": {\n "block_id": 796,\n "block_hash": "bccbc3cf47b49bee5fb7321810884db49b73f5114b0a6fcd234dd3fdf9c22ef4",\n "address": "0666-7782-2939-7671-3160",\n "ecosystem": 2,\n "hash": "020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "1000000000000",\n "Recipient": "0666-7782-2939-7671-3160"\n },\n "created_at": 1678774455841,\n "size": "213.00B",\n "status": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfomultiple"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("p",[e._v("Returns transaction-related information for the specified hash list.")]),e._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - A list of transaction hashes.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-37"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("results")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Data dictionary with transaction hash as key and transaction details as value.\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction. if the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("li",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - If "),a("code",[e._v("contentinfo=true")]),e._v("is specified, the contract details are returned to this parameter. null when not specified\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v("- "),a("em",[e._v("Number")]),e._v(" - Block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":[["1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284","4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"],true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "results": {\n "1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284": {\n "blockid": 0,\n "confirm": 0,\n "data": null\n },\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": 793,\n "confirm": 0,\n "data": {\n "block_id": 793,\n "block_hash": "ef3b2f2e18662e0b8bba136a209e30c5aae76d9a82e0b21209786f62fe5676e4",\n "address": "0666-0819-7161-7879-5186",\n "ecosystem": 1,\n "hash": "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "200",\n "Comment": "Hello Dear",\n "Recipient": "1196-2490-5275-7101-3496"\n },\n "created_at": 1678765099072,\n "size": "297.00B",\n "status": 0\n }\n }\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagevalidatorscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. @1params_list (specifying ecology 1 page name params_list) or params_list (current ecology page name params_list)")])]),e._v(" "),a("h4",{attrs:{id:"return-value-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-38"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("validate_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Specifies the number of nodes to be validated by the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "validate_count": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpage"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPage")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified page name, which is the result of processing by the templating engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the page with the ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".")]),e._v(" "),a("p",[e._v("If you don't have an ecosystem ID, the default is to find the current ecological page, e.g. "),a("code",[e._v("main_page")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-39"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the menu to which the page belongs.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("menutree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree of the page's menus.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - page JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPage","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "menu": "developer_menu",\n "menutree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ],\n "tree": [\n {\n ....\n }\n ...\n ],\n "nodesCount": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenu"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenu")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified menu name, which is the result of processing by the template engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\n"),a("blockquote",[a("p",[e._v("Menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%menu_name%")]),e._v(", e.g.\n"),a("code",[e._v("@1main_menu")]),e._v(".\nIf you don't bring the ecosystem ID, the menu of the current ecology will be found by default, for example\n"),a("code",[e._v("main_menu")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-40"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the menu title.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Menu JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenu","id":1,"params":["@1default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "title": "default",\n "tree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsource"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSource")])]),e._v(" "),a("p",[e._v("Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nPage name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", for example "),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, the default is to find the current ecological page e.g. "),a("code",[e._v("main_page")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-41"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree for the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSource","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": [\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1applications"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"name\\": \\"System\\"}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "setvar",\n "attr": {\n "name": "role_developer_id",\n "value": "AppParam(Ecosystem: #ecosystem_id#, App: #application_id#, Name: role_developer)"\n }\n },\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1roles_participants"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"$and\\": [{\\"role->id\\": {\\"$in\\": [#role_developer_id#]}}, {\\"role->id\\": \\"#role_id#\\"}], \\"member->account\\": \\"#account_id#\\", \\"deleted\\": 0}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "if",\n "attr": {\n "condition": "#developer_access_id#>0"\n },\n "children": [\n {\n "tag": "setvar",\n "attr": {\n "name": "this_page",\n "value": "@1params_list"\n }\n }\n\t\t\t\t\t\t...\n ],\n "tail": [\n {\n "tag": "else",\n "children": [\n {\n "tag": "settitle",\n "attr": {\n "title": "$@1ecosystem_parameters$"\n }\n }\n\t\t\t\t\t\t\t\t...\n ]\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagehash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagehash"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageHash")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page is not found.")]),e._v(" "),a("p",[e._v("To receive the correct hash when making requests to other nodes, you must also pass the\n"),a("em",[e._v("ecosystem,key_id,role_id")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the page with the ecosystem ID. The format is "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. "),a("code",[e._v("@1main_page")]),e._v(", you can specify the eco ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Get the specified page object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")]),e._v(" "),a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The role ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-42"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" -\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageHash","id":1,"params":["@1params_list",0,{"role_id":"1","key_id":"-6484253546138538120"}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "fc5ed3b5e879dd5521dfb792e815019bd8411851e850e75a3590d71e950a0465"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContent")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" Specified as "),a("code",[e._v("true")]),e._v(", this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("template")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page code.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("source")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - If specified as "),a("code",[e._v("true")]),e._v(", the JSON object tree does not perform any functions and receives data.")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-43"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - JSON object tree.")])]),e._v(" "),a("h4",{attrs:{id:"example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-43"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getContent","id":1,"params":[{"template","..."source":true}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": {\n "type":"......", \n "children": [\n {...},\n {...}\n ]\n }\n }\n }\n \n')])])]),a("h3",{attrs:{id:"ibax-getblockinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlockInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified block ID.")]),e._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-44"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block hash value.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollbacks_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensus_mode")]),e._v(" "),a("em",[e._v("Number")]),e._v(" - Consensus mode, parameters (1: creator management mode 2: DAO governance mode)")])])]),e._v(" "),a("h4",{attrs:{id:"example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-44"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlockInfo","id":1,"params":[12]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "Hl+/VvYFFu4iq4zLrRDGHBhm7DM7llEAfEJyaX2Q3is=",\n "key_id": 6667782293976713160,\n "time": 1677134955,\n "tx_count": 1,\n "rollbacks_hash": "o37QAighKMb8WqbEHAqCQb5bOfMvOqV0WoTaN631q74=",\n "node_position": 0,\n "consensus_mode": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getconfig"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getConfig")])]),e._v(" "),a("p",[e._v("Get the host address and port of centrifugo")]),e._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("option")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Configuration item")]),e._v(" "),a("ol",[a("li",[e._v('"centrifugo" - messaging service')])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-45"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("centrifugo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" host address and port of centrifugo Result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-45"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getConfig","id":1,"params":["centrifugo"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "centrifugo":"http://127.0.0.1:8100"\n }\n }\n')])])]),a("h3",{attrs:{id:"net-getnetwork"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-getnetwork"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.getNetwork")])]),e._v(" "),a("p",[e._v("Get node information")]),e._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-46"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")]),e._v(" "),a("li",[a("strong",[e._v("centrifugo_url")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - centrifugo message service address")]),e._v(" "),a("li",[a("strong",[e._v("test")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether it is a test chain")]),e._v(" "),a("li",[a("strong",[e._v("private")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether the chain is private")]),e._v(" "),a("li",[a("strong",[e._v("honor_nodes")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - List of honor nodes\n"),a("ul",[a("li",[a("strong",[e._v("tcp_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - tcp address")]),e._v(" "),a("li",[a("strong",[e._v("api_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - api address")]),e._v(" "),a("li",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - node public key")]),e._v(" "),a("li",[a("strong",[e._v("unban_time")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unlock time")])])])]),e._v(" "),a("h4",{attrs:{id:"example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-46"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.getNetwork","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "network_id": "1",\n "centrifugo_url": "127.0.0.1",\n "test": false,\n "private": false,\n "honor_nodes": [\n {\n "tcp_address": "127.0.0.1:7078",\n "api_address": "http://127.0.0.1:7078",\n "public_key": "049a41b24862f8db61ee66fb206094baa57bfeac7ea786d63662a964d144eb85d1a0e230928d56f46dd61eefac7640b6aa2883b2445c7b2adc0e581f983ff0aedb",\n "unban_time": "-62135596800"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"net-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-status"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.status")])]),e._v(" "),a("p",[e._v("Get the current node status")]),e._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-47"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - Node Status\n"node server status is running" - the node is running\n"node server is updating" - node is being updated\n"node server is stopped" - node suspended')])]),e._v(" "),a("h4",{attrs:{id:"example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-47"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.status","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"rpc-modules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-modules"}},[e._v("#")]),e._v(" "),a("strong",[e._v("rpc.modules")])]),e._v(" "),a("p",[e._v("Get the currently registered JSON-RPC interface")]),e._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-48"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Array")]),e._v(" - JSON-RPC interface array")])]),e._v(" "),a("h4",{attrs:{id:"example-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-48"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"rpc.modules","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n "net.getNetwork",\n "ibax.getAppContent",\n "ibax.honorNodesCount",\n "ibax.maxBlockId",\n "ibax.detailedBlock",\n "ibax.getConfig",\n "ibax.getTableCount",\n "ibax.getMenu"\n ]\n }\n')])])]),a("h3",{attrs:{id:"admin-startjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-startjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.startJsonRpc")])]),e._v(" "),a("p",[e._v("Can be used to switch between JSON-RPC change namespace services")]),e._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("methods")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - JSON-RPC module, default: "ibax,net"')]),e._v(" "),a("h4",{attrs:{id:"return-value-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-49"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-49"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.startJsonRpc","id":1,"params":["ibax,net,admin"]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"admin-stopjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-stopjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.stopJsonRpc")])]),e._v(" "),a("p",[e._v("Close the JSON-RPC service")]),e._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-50"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-50"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.stopJsonRpc","id":1,"params":[]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"debug-getnodebanstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getnodebanstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getNodeBanStat")])]),e._v(" "),a("p",[e._v("Get node disable status")]),e._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-51"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript\n"),a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Disable status, "),a("code",[e._v("true")]),e._v(" ban status, "),a("code",[e._v("false")]),e._v(" not disabled")]),e._v(" "),a("h4",{attrs:{id:"example-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-51"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getNodeBanStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n {\n "node_position": 0,\n "status": true\n }\n ]\n }\n')])])]),a("h3",{attrs:{id:"debug-getmemstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getmemstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getMemStat")])]),e._v(" "),a("p",[e._v("Get the current node memory usage")]),e._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-52"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("alloc")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes requested and still in use")]),e._v(" "),a("li",[a("strong",[e._v("sys")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes fetched from the system")])]),e._v(" "),a("h4",{attrs:{id:"example-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-52"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getMemStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "alloc": 11537432,\n "sys": 35329248\n }\n }\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/24.ff0bd2fa.js b/assets/js/24.57e15656.js similarity index 99% rename from assets/js/24.ff0bd2fa.js rename to assets/js/24.57e15656.js index c93e021..0541845 100644 --- a/assets/js/24.ff0bd2fa.js +++ b/assets/js/24.57e15656.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{405:function(e,r,t){"use strict";t.r(r);var a=t(51),s=Object(a.a)({},(function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"plattformparameter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#plattformparameter"}},[e._v("#")]),e._v(" Plattformparameter")]),e._v(" "),t("p",[e._v("Dies sind Parameter zur Konfiguration von IBAX. Sie gelten für das Blockchain-Netzwerk und alle darin enthaltenen Ökosysteme.")]),e._v(" "),t("h2",{attrs:{id:"ort-zum-speichern-von-plattformparametern"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ort-zum-speichern-von-plattformparametern"}},[e._v("#")]),e._v(" Ort zum Speichern von Plattformparametern")]),e._v(" "),t("p",[e._v("Plattformparameter werden in der Tabelle "),t("code",[e._v("system parameters")]),e._v(" gespeichert.")]),e._v(" "),t("p",[e._v("Diese Tabelle befindet sich im ersten (Standard-)Ökosystem, das im Blockchain-Netzwerk erstellt wurde.")]),e._v(" "),t("h2",{attrs:{id:"anderung-der-plattformparameter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anderung-der-plattformparameter"}},[e._v("#")]),e._v(" Änderung der Plattformparameter")]),e._v(" "),t("p",[e._v("Eine Änderung der Plattformparameter kann nur durch Abstimmung erfolgen. Sie können den UpdateSysParam-Vertrag nur verwenden, um Plattformparameter zu ändern, die durch Definitionen im Rechtssystem der Plattform verwaltet werden.")]),e._v(" "),t("h2",{attrs:{id:"plattformparameter-konfigurieren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#plattformparameter-konfigurieren"}},[e._v("#")]),e._v(" Plattformparameter konfigurieren")]),e._v(" "),t("h3",{attrs:{id:"konfigurieren-sie-das-blockchain-netzwerk"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-das-blockchain-netzwerk"}},[e._v("#")]),e._v(" Konfigurieren Sie das Blockchain-Netzwerk")]),e._v(" "),t("p",[e._v("Knoten:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#volle-knoten"}},[e._v("Volle Knoten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#anzahl-der-knoten"}},[e._v("Anzahl der Knoten")])])]),e._v(" "),t("p",[e._v("Knotenverbote:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#falsche-Bl%C3%B6cke-pro-Tag"}},[e._v("falsche Blöcke pro Tag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])])]),e._v(" "),t("h3",{attrs:{id:"konfigurieren-sie-ein-neues-okosystem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-ein-neues-okosystem"}},[e._v("#")]),e._v(" Konfigurieren Sie ein neues Ökosystem")]),e._v(" "),t("p",[e._v("Standardseite und Menü:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("Standard-Ökosystemseite")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("Standard-Ökosystem-Menü")])])]),e._v(" "),t("p",[e._v("Standardvertrag:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("Standard-Ökosystemvertrag")])])]),e._v(" "),t("h3",{attrs:{id:"konfigurieren-sie-die-datenbank"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-die-datenbank"}},[e._v("#")]),e._v(" Konfigurieren Sie die Datenbank")]),e._v(" "),t("p",[e._v("Tischlimits:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#max-spalte"}},[e._v("Max Spalte")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-indizes"}},[e._v("Max Indizes")])])]),e._v(" "),t("h3",{attrs:{id:"generierung-von-blocken-konfigurieren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#generierung-von-blocken-konfigurieren"}},[e._v("#")]),e._v(" Generierung von Blöcken konfigurieren")]),e._v(" "),t("p",[e._v("Zeitbegrenzungen:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#L%C3%BCcke-zwischen-Bl%C3%B6cken"}},[e._v("Lücke zwischen Blöcken")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max. Blockgenerierungszeit")])])]),e._v(" "),t("p",[e._v("Transaktionslimits:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#max-tx-Block"}},[e._v("max. Sendeblock")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max. Sendeblock pro Benutzer")])])]),e._v(" "),t("p",[e._v("Größenbeschränkungen:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#max-tx-Gr%C3%B6%C3%9Fe"}},[e._v("maximale Sendegröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-Blockgr%C3%B6%C3%9Fe"}},[e._v("maximale Blockgröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-forsign-size"}},[e._v("maximale Zeichengröße")])])]),e._v(" "),t("p",[e._v("Kraftstoffgrenzen:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#max.-Kraftstoffblock"}},[e._v("max. Kraftstoffblock")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max. Kraftstoffverbrauch")])])]),e._v(" "),t("p",[e._v("Rollback-Limits blockieren:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Rollback-Bl%C3%B6cke"}},[e._v("Rollback-Blöcke")])])]),e._v(" "),t("h3",{attrs:{id:"konfigurieren-sie-die-tankmarken"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-die-tankmarken"}},[e._v("#")]),e._v(" Konfigurieren Sie die Tankmarken")]),e._v(" "),t("p",[e._v("Prämien und Provisionen:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Block-Belohnung"}},[e._v("Block-Belohnung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#provisionsgeldb%C3%B6rse"}},[e._v("Provisionsgeldbörse")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#provisionsgr%C3%B6%C3%9Fe"}},[e._v("Provisionsgröße")])])]),e._v(" "),t("p",[e._v("Kraftstoffratenumrechnung:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Kraftstoffrate"}},[e._v("Kraftstoffrate")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsrate"}},[e._v("Preiserstellungsrate")])])]),e._v(" "),t("p",[e._v("Transaktionsgröße und Datenpreis:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Preis-TX-Daten"}},[e._v("Preis-TX-Daten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("Preis tx Größe Geldbörse")])])]),e._v(" "),t("p",[e._v("Price for new elements:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preis-schaffen-%C3%B6kosystem"}},[e._v("Preis schaffen Ökosystem")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-tabelle-erstellen"}},[e._v("Preis Tabelle erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsspalte"}},[e._v("Preiserstellungsspalte")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsvertrag"}},[e._v("Preiserstellungsvertrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-create-menu"}},[e._v("Preiserstellungsmenü")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsseite"}},[e._v("Preiserstellungsseite")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsanwendung"}},[e._v("Preiserstellungsanwendung")]),e._v("\nPrice for operations:\n")])]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#platform-parameters"}},[e._v("Plattformparameter")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#location-to-store-platform-parameters"}},[e._v("Speicherort für Plattformparameter")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#change-of-platform-parameters"}},[e._v("Änderung der Plattformparameter")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#configure-platform-parameters"}},[e._v("Plattformparameter konfigurieren")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#configure-the-blockchain-network"}},[e._v("Blockchain-Netzwerk konfigurieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#configure-a-new-ecosystem"}},[e._v("Neues Ökosystem konfigurieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#configure-the-database"}},[e._v("Datenbank konfigurieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("Generierung von Blöcken konfigurieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#configure-the-fuel-tokens"}},[e._v("Treibstoffmarken konfigurieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#abgeschrieben"}},[e._v("Abgeschrieben")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#details-of-platform-parameters"}},[e._v("Details der Plattformparameter")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#block-belohnung"}},[e._v("Blockbelohnung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Blockchain-URL"}},[e._v("Blockchain-URL")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#provisionsgr%C3%B6%C3%9Fe"}},[e._v("Provisionsgröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#provisionsgeldb%C3%B6rse"}},[e._v("Provisionsgeldbörse")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("Standard-Ökosystemvertrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("Standard-Ökosystem-Menü")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("Standard-Ökosystemseite")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Kraftstoffrate"}},[e._v("Kraftstoffrate")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preiserstellungsrate"}},[e._v("Preiserstellungsrate")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vollst%C3%A4ndige-knoten"}},[e._v("Vollständige Knoten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#l%C3%BCcke-zwischen-Bl%C3%B6cken"}},[e._v("Lücke zwischen Blöcken")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#falsche-Bl%C3%B6cke-pro-Tag"}},[e._v("Falsche Blöcke pro Tag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-block-generation-time"}},[e._v("Max. Blockgenerierungszeit")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-Blockgr%C3%B6%C3%9Fe"}},[e._v("Maximale Blockgröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-spalten"}},[e._v("Max Spalten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-forsign-size"}},[e._v("maximale Zeichengröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-Kraftstoffblock"}},[e._v("max. Kraftstoffblock")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max. Kraftstoffverbrauch")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-Indizes"}},[e._v("maximale Indizes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-tx-Block"}},[e._v("max. Sendeblock")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max. Sendeblock pro Benutzer")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-tx-Gr%C3%B6%C3%9Fe"}},[e._v("maximale Sendegröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#anzahl-der-knoten"}},[e._v("Anzahl der Knoten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-%C3%B6kosystem-erstellen"}},[e._v("Preis-Ökosystem erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preiserstellungsantrag"}},[e._v("Preiserstellungsantrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preistabelle-erstellen"}},[e._v("Preistabelle erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsspalte"}},[e._v("Preiserstellungsspalte")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsvertrag"}},[e._v("Preiserstellungsvertrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-create-menu"}},[e._v("Preiserstellungsmenü")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsseite"}},[e._v("Preiserstellungsseite")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preis-Exec-Adresse-zu-ID"}},[e._v("Preis-Exec-Adresse zu ID")])]),e._v(" "),t("li",[e._v("[Preis-Exec-Bind-Wallet] (#preis-Exec-Bind-Wallet)")]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preisausf%C3%BChrungsspaltenbedingung"}},[e._v("Preisausführungsspaltenbedingung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preis-Exec-Compile-Vertrag"}},[e._v("Preis-Exec-Vertrag kompilieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preisexec-enth%C3%A4lt"}},[e._v("Preisexec enthält")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preisausf%C3%BChrungsvertrag-nach-ID"}},[e._v("Preisausführungsvertrag nach ID")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preisausf%C3%BChrungsvertrag-nach-Name"}},[e._v("Preisausführungsvertrag nach Name")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-exec-contracts-list"}},[e._v("Liste der Price-Exec-Verträge")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-exec-spalte-erstellen"}},[e._v("Preis-Exec-Spalte erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-exec-%C3%B6kosystem-erstellen"}},[e._v("Price Exec Ecosystem erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-exec-tabelle-erstellen"}},[e._v("Preis-Exec-Tabelle erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preis-Exec-Ecosys-Param"}},[e._v("Preis-Exec-Ecosys-Param")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Auswertung"}},[e._v("Preis-Auswertung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preisauswertungsbedingung"}},[e._v("Preisauswertungsbedingung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-Flush-Vertrag"}},[e._v("Preis-Exec-Flush-Vertrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-hat-Pr%C3%A4fix"}},[e._v("Preis-Exec hat Präfix")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preisausf%C3%BChrungs-ID-zur-Adresse"}},[e._v("Preisausführungs-ID zur Adresse")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preisexec-ist-Objekt"}},[e._v("Preisexec ist Objekt")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-Join"}},[e._v("Preis-Exec-Join")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-exec-json-to-map"}},[e._v("Preis-exec-json zur Karte")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Ausf%C3%BChrungsl%C3%A4nge"}},[e._v("Preis-Ausführungslänge")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-Perm-Spalte"}},[e._v("Preis-Exec-Perm-Spalte")])]),e._v(" "),t("li",[e._v("[Preis-Exec-Perm-Tabelle] (#preis-exec-perm-tabelle)")]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-Pub-zu-ID"}},[e._v("Preis-Exec-Pub zu ID")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-Ersetzen"}},[e._v("Preisexec ersetzen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-exec-sha256"}},[e._v("Preis exec sha256")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preisausf%C3%BChrungsgr%C3%B6%C3%9Fe"}},[e._v("Preisausführungsgröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preis-Exec-Substr"}},[e._v("Preis-Exec-Substr")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preis-Exec-System-Kraftstoff"}},[e._v("Preis-Exec-System-Kraftstoff")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-exec-sys-param-int"}},[e._v("Preis-exec-sys-param-int")])]),e._v(" "),t("li",[e._v("[Preis-Exec-Systemparameter-String] (#preis-exec-system-param-string)")]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preisausf%C3%BChrungstabellenbedingungen"}},[e._v("Bedingungen der Preisausführungstabelle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-exec-brieftasche-l%C3%B6sen"}},[e._v("Preisexec-Brieftasche lösen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-exec-Update-Sprache"}},[e._v("Preis-Exec-Update-Sprache")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#bedingung-f%C3%BCr-preisausf%C3%BChrung-validieren"}},[e._v("Bedingung für Preisausführung validieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-TX-Daten"}},[e._v("Preis-TX-Daten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-tx-gr%C3%B6%C3%9Fe-brieftasche"}},[e._v("Preis tx-Größe Brieftasche")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#rollback-bl%C3%B6cke"}},[e._v("Rollback-Blöcke")])])])])])])]),e._v(" "),t("h3",{attrs:{id:"abgeschrieben"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#abgeschrieben"}},[e._v("#")]),e._v(" Abgeschrieben")]),e._v(" "),t("p",[e._v("Abgeschriebene Parameter:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Blockchain-URL"}},[e._v("Blockchain-URL")])])]),e._v(" "),t("h2",{attrs:{id:"details-der-plattformparameter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#details-der-plattformparameter"}},[e._v("#")]),e._v(" Details der Plattformparameter")]),e._v(" "),t("h3",{attrs:{id:"blockbelohnung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#blockbelohnung"}},[e._v("#")]),e._v(" Blockbelohnung")]),e._v(" "),t("p",[e._v("Die Anzahl der IBXC-Token, die dem Ehrenknoten gewährt wurden, der den Block generiert.\nDas Konto, das die Belohnung erhält, wird im Parameter "),t("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" angegeben.")]),e._v(" "),t("h3",{attrs:{id:"blockchain-url"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-url"}},[e._v("#")]),e._v(" Blockchain-URL")]),e._v(" "),t("p",[e._v("Abgeschrieben.")]),e._v(" "),t("h3",{attrs:{id:"provisionsgroße"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#provisionsgroße"}},[e._v("#")]),e._v(" Provisionsgröße")]),e._v(" "),t("p",[e._v("Prozentsatz der Provision.")]),e._v(" "),t("p",[e._v("Die Höhe der Provision wird als Prozentsatz der Gesamtkosten der Vertragsdurchführung berechnet. Die Einheit des Provisionstokens ist IBXC.")]),e._v(" "),t("p",[e._v("Die Provision wird an die im Parameter provisions_wallet angegebene Kontoadresse überwiesen.")]),e._v(" "),t("h3",{attrs:{id:"provisionsgeldborse"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#provisionsgeldborse"}},[e._v("#")]),e._v(" Provisionsgeldbörse")]),e._v(" "),t("p",[e._v("Die Kontoadresse, um die Provision zu erhalten.")]),e._v(" "),t("p",[e._v("Die Höhe der Provision wird durch den Parameter provisions_größe angegeben.")]),e._v(" "),t("h3",{attrs:{id:"standard-okosystemvertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#standard-okosystemvertrag"}},[e._v("#")]),e._v(" Standard-Ökosystemvertrag")]),e._v(" "),t("p",[e._v("Der Quellcode des Standardvertrags im neuen Ökosystem.")]),e._v(" "),t("p",[e._v("Dieser Vertrag bietet Zugang zum Ökosystem-Ersteller.")]),e._v(" "),t("h3",{attrs:{id:"standard-okosystem-menu"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#standard-okosystem-menu"}},[e._v("#")]),e._v(" Standard-Ökosystem-Menü")]),e._v(" "),t("p",[e._v("Der Quellcode des Standardmenüs des neuen Ökosystems.")]),e._v(" "),t("h3",{attrs:{id:"standard-okosystemseite"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#standard-okosystemseite"}},[e._v("#")]),e._v(" Standard-Ökosystemseite")]),e._v(" "),t("p",[e._v("Der Quellcode der Standardseite des neuen Ökosystems.")]),e._v(" "),t("h3",{attrs:{id:"kraftstoffrate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kraftstoffrate"}},[e._v("#")]),e._v(" Kraftstoffrate")]),e._v(" "),t("p",[e._v("Die Wechselkurse verschiedener Ökosystem-Token nach Kraftstoffeinheit.")]),e._v(" "),t("p",[e._v("Das Format dieses Parameters:")]),e._v(" "),t("p",[t("code",[e._v('[["ecosystem_id", "token_to_fuel_rate"], ["ecosystem_id2", "token_to_fuel_rate2"], ...]')])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("ecosystem_id")])]),e._v(" "),t("p",[e._v("Ecosystem ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("token_to_fuel_rate")])]),e._v(" "),t("p",[e._v("Wechselkurs des Tokens nach Kraftstoffeinheit.")])])]),e._v(" "),t("p",[e._v("Zum Beispiel:")]),e._v(" "),t("p",[t("code",[e._v('[["1","1000000000000"], ["2", "1000"]]')])]),e._v(" "),t("p",[e._v("Ein Token des Ökosystems 1 wird gegen 1.000.000.000.000 Kraftstoffeinheiten eingetauscht. Ein Token des Ökosystems 2 wird gegen 1.000 Kraftstoffeinheiten eingetauscht.")]),e._v(" "),t("h3",{attrs:{id:"preiserstellungsrate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preiserstellungsrate"}},[e._v("#")]),e._v(" Preiserstellungsrate")]),e._v(" "),t("p",[e._v("Die Brennstoffrate eines neuen Elements.")]),e._v(" "),t("h3",{attrs:{id:"vollstandige-knoten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vollstandige-knoten"}},[e._v("#")]),e._v(" vollständige Knoten")]),e._v(" "),t("p",[e._v("Die Liste der Ehrenknoten des Blockchain-Netzwerks.")]),e._v(" "),t("p",[e._v("Das Format dieses Parameters:\n"),t("code",[e._v('[{"api_address":"https://apihost1:port1","public_key":"nodepub1","tcp_address":"tcphost1:port2"},{"api_address":"https://apihost2:port1","public_key":"nodepub2","tcp_address":"tcphost2:port2"}]')])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("tcp_address")])]),e._v(" "),t("p",[e._v("TCP-Adresse und Port des Knotenhosts.\nTransaktionen und neue Blöcke werden an diese Hostadresse gesendet, die auch verwendet werden kann, um die vollständige Blockchain aus dem ersten Block zu erhalten.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("api_address")])]),e._v(" "),t("p",[e._v("API-Adresse und Port des Knotenhosts.\nÜber die API-Adresse können Sie auf alle Funktionen der Plattform zugreifen, ohne Weaver zu verwenden. Siehe Details in RESTful-API.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("public_key")])])])]),e._v(" "),t("p",[e._v("Öffentlicher Schlüssel des Knotens, der zur Überprüfung der Blocksignatur verwendet wird.")]),e._v(" "),t("h3",{attrs:{id:"lucke-zwischen-blocken"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lucke-zwischen-blocken"}},[e._v("#")]),e._v(" Lücke zwischen Blöcken")]),e._v(" "),t("p",[e._v("Das Zeitintervall (in Sekunden) zum Generieren von zwei Blöcken auf einem Knoten.")]),e._v(" "),t("p",[e._v("Alle Knoten im Netzwerk verwenden es, um zu bestimmen, wann ein neuer Block generiert werden soll. Wenn der aktuelle Knoten innerhalb dieses Zeitraums keinen neuen Block erzeugt, geht die Reihe zum nächsten Knoten in der Liste der Ehrenknoten über.")]),e._v(" "),t("p",[e._v("Der Mindestwert dieses Parameters ist "),t("code",[e._v("1")]),e._v(" Sekunde.")]),e._v(" "),t("h3",{attrs:{id:"falsche-blocke-pro-tag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#falsche-blocke-pro-tag"}},[e._v("#")]),e._v(" falsche Blöcke pro Tag")]),e._v(" "),t("p",[e._v("Die Anzahl der fehlerhaften Blöcke, die ein Knoten pro Tag generieren darf, bevor er gesperrt wird.")]),e._v(" "),t("p",[e._v("Wenn mehr als die Hälfte der Knoten im Netzwerk die gleiche Anzahl fehlerhafter Blöcke von einem Knoten erhalten, wird der Knoten innerhalb eines in "),t("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")]),e._v(" festgelegten Zeitraums aus dem Netzwerk gesperrt.")]),e._v(" "),t("h3",{attrs:{id:"max-block-generation-time"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-block-generation-time"}},[e._v("#")]),e._v(" max block generation time")]),e._v(" "),t("p",[e._v("The maximum time for generating a block, in milliseconds. If a block is not successfully generated within this time period, a timeout error will be reported.")]),e._v(" "),t("h3",{attrs:{id:"maximale-blockgroße"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maximale-blockgroße"}},[e._v("#")]),e._v(" maximale Blockgröße")]),e._v(" "),t("p",[e._v("Die maximale Größe eines Blocks in Bytes.")]),e._v(" "),t("h3",{attrs:{id:"max-spalten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-spalten"}},[e._v("#")]),e._v(" max. Spalten")]),e._v(" "),t("p",[e._v("Die maximale Anzahl von Feldern in einer einzelnen Tabelle.")]),e._v(" "),t("p",[e._v("Sie enthält jedoch nicht die vordefinierte Spalte "),t("code",[e._v("id")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"maximale-forsign-große"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maximale-forsign-große"}},[e._v("#")]),e._v(" maximale Forsign-Größe")]),e._v(" "),t("p",[e._v("Die maximale Größe einer Transaktionssignatur in Bytes.")]),e._v(" "),t("h3",{attrs:{id:"maximaler-kraftstoffblock"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maximaler-kraftstoffblock"}},[e._v("#")]),e._v(" maximaler Kraftstoffblock")]),e._v(" "),t("p",[e._v("Die maximale Gesamttreibstoffgebühr eines einzelnen Blocks.")]),e._v(" "),t("h3",{attrs:{id:"max-kraftstoffverbrauch"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-kraftstoffverbrauch"}},[e._v("#")]),e._v(" max. Kraftstoffverbrauch")]),e._v(" "),t("p",[e._v("Die maximale Gesamttreibstoffgebühr einer einzelnen Transaktion.")]),e._v(" "),t("h3",{attrs:{id:"maximale-indizes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maximale-indizes"}},[e._v("#")]),e._v(" maximale Indizes")]),e._v(" "),t("p",[e._v("Die maximale Anzahl von Primärschlüsselfeldern in einer einzelnen Tabelle.")]),e._v(" "),t("h3",{attrs:{id:"max-sendeblock"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-sendeblock"}},[e._v("#")]),e._v(" max. Sendeblock")]),e._v(" "),t("p",[e._v("Die maximale Anzahl von Transaktionen in einem einzelnen Block.")]),e._v(" "),t("h3",{attrs:{id:"max-sendeblock-pro-benutzer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-sendeblock-pro-benutzer"}},[e._v("#")]),e._v(" max. Sendeblock pro Benutzer")]),e._v(" "),t("p",[e._v("Die maximale Anzahl von Transaktionen eines Kontos in einem Block.")]),e._v(" "),t("h3",{attrs:{id:"maximale-sendegroße"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maximale-sendegroße"}},[e._v("#")]),e._v(" maximale Sendegröße")]),e._v(" "),t("p",[e._v("Die maximale Größe einer Transaktion in Bytes.")]),e._v(" "),t("h3",{attrs:{id:"node-sperrzeit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#node-sperrzeit"}},[e._v("#")]),e._v(" Node-Sperrzeit")]),e._v(" "),t("p",[e._v("Der globale Sperrzeitraum des Knotens in Millisekunden.\nWenn mehr als die Hälfte der Knoten im Netzwerk fehlerhafte Blöcke von einem Knoten bis zur Anzahl von "),t("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("falschen Blöcken pro Tag")]),e._v(" erhalten, wird der Knoten für diesen Zeitraum im Netzwerk gesperrt .")]),e._v(" "),t("h3",{attrs:{id:"knotensperrzeit-lokal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#knotensperrzeit-lokal"}},[e._v("#")]),e._v(" Knotensperrzeit lokal")]),e._v(" "),t("p",[e._v("Die lokale Sperrzeit des Knotens in Millisekunden.")]),e._v(" "),t("p",[e._v("Wenn ein Knoten einen falschen Block von einem anderen Knoten empfängt, wird er den Knoten des Absenders während dieses Zeitraums lokal sperren.")]),e._v(" "),t("h3",{attrs:{id:"anzahl-der-knoten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anzahl-der-knoten"}},[e._v("#")]),e._v(" Anzahl der Knoten")]),e._v(" "),t("p",[e._v("Die maximale Anzahl an Honor-Knoten im Parameter "),t("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"preis-schafft-okosystem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-schafft-okosystem"}},[e._v("#")]),e._v(" Preis schafft Ökosystem")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr, um ein neues einheitliches Ökosystem zu schaffen.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzliche Treibstoffgebühr des "),t("code",[e._v("@1NewEcosystem")]),e._v("-Vertrags. Bei Vertragsabschluss wird auch die Treibstoffgebühr für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"preis-anwendung-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-anwendung-erstellen"}},[e._v("#")]),e._v(" Preis Anwendung erstellen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr zum Erstellen einer neuen Einzelanwendung.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzliche Treibstoffgebühr des "),t("code",[e._v("@1NewApplication")]),e._v("-Vertrags. Bei Vertragsabschluss wird auch die Treibstoffgebühr für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"preis-tabelle-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-tabelle-erstellen"}},[e._v("#")]),e._v(" Preis Tabelle erstellen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr zum Erstellen einer neuen einzelnen Tabelle.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzlichen Treibstoffkosten des "),t("code",[e._v("@1NewTable")]),e._v("-Vertrags. Bei Vertragsabschluss werden auch die Treibstoffkosten für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("p",[e._v("Spalte ### Preis erstellen\nDie Kraftstoffgebühr zum Erstellen eines neuen einzelnen Tabellenfeldes.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzlichen Treibstoffkosten des "),t("code",[e._v("@1NewColumn")]),e._v("-Vertrags. Bei Vertragsabschluss werden auch die Treibstoffkosten für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"preis-vertrag-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-vertrag-erstellen"}},[e._v("#")]),e._v(" Preis Vertrag erstellen")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr ist ein neuer Einzelvertrag zu erstellen.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzlichen Treibstoffkosten des "),t("code",[e._v("@1NewContract")]),e._v("-Vertrags. Bei Vertragsabschluss werden auch die Treibstoffkosten für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"preis-menu-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-menu-erstellen"}},[e._v("#")]),e._v(" Preis Menü erstellen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr zum Erstellen eines neuen Einzelmenüs.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzlichen Treibstoffkosten des "),t("code",[e._v("@1NewMenu")]),e._v("-Vertrags. Bei Vertragsabschluss werden auch die Treibstoffkosten für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"seite-zum-erstellen-von-preisen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#seite-zum-erstellen-von-preisen"}},[e._v("#")]),e._v(" Seite zum Erstellen von Preisen")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr zum Erstellen einer neuen einzelnen Seite.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzlichen Treibstoffkosten des "),t("code",[e._v("@1NewPage")]),e._v("-Vertrags. Bei Vertragsabschluss werden auch die Treibstoffkosten für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-address-to-id"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-address-to-id"}},[e._v("#")]),e._v(" price exec address to id")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("AddressToId()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-bind-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-bind-wallet"}},[e._v("#")]),e._v(" Price Exec Bind Wallet")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der "),t("code",[e._v("Activate()")]),e._v("-Funktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"bedingung-der-preisausfuhrungsspalte"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bedingung-der-preisausfuhrungsspalte"}},[e._v("#")]),e._v(" Bedingung der Preisausführungsspalte")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("ColumnCondition()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-kompilieren-vertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-kompilieren-vertrag"}},[e._v("#")]),e._v(" Price Exec kompilieren Vertrag")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("CompileContract()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisexe-enthalt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisexe-enthalt"}},[e._v("#")]),e._v(" Preisexe enthält")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der "),t("code",[e._v("Contains()")]),e._v("-Funktion, berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausfuhrungsvertrag-nach-id"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausfuhrungsvertrag-nach-id"}},[e._v("#")]),e._v(" Preisausführungsvertrag nach ID")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("GetContractById()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-vertrag-nach-namen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-vertrag-nach-namen"}},[e._v("#")]),e._v(" Price Exec-Vertrag nach Namen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("GetContractByName()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"liste-der-price-exec-vertrage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#liste-der-price-exec-vertrage"}},[e._v("#")]),e._v(" Liste der Price Exec-Verträge")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("ContractsList()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-spalte-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-spalte-erstellen"}},[e._v("#")]),e._v(" Preis-Exec-Spalte erstellen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("CreateColumn()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-schafft-ein-okosystem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-schafft-ein-okosystem"}},[e._v("#")]),e._v(" Price Exec schafft ein Ökosystem")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("CreateEcosystem()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausfuhrung-tabelle-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausfuhrung-tabelle-erstellen"}},[e._v("#")]),e._v(" Preisausführung Tabelle erstellen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("CreateTable()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-ausfuhrung-ecosys-param"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-ausfuhrung-ecosys-param"}},[e._v("#")]),e._v(" Preis Ausführung Ecosys Param")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("EcosysParam()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausw"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausw"}},[e._v("#")]),e._v(" Preisausw")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("Eval()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausfuhrungszustand"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausfuhrungszustand"}},[e._v("#")]),e._v(" Preisausführungszustand")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("EvalCondition()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-flush-vertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-flush-vertrag"}},[e._v("#")]),e._v(" Price Exec Flush-Vertrag")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("FlushContract()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-hat-prafix"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-hat-prafix"}},[e._v("#")]),e._v(" Price Exec hat Präfix")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("HasPrefix()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausfuhrungs-id-an-adresse"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausfuhrungs-id-an-adresse"}},[e._v("#")]),e._v(" Preisausführungs-ID an Adresse")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("IdToAddress()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisexec-ist-objekt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisexec-ist-objekt"}},[e._v("#")]),e._v(" Preisexec ist Objekt")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("IsObject()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-beitreten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-beitreten"}},[e._v("#")]),e._v(" Price Exec beitreten")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der "),t("code",[e._v("Join()")]),e._v("-Funktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-json-zur-karte"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-json-zur-karte"}},[e._v("#")]),e._v(" Price exec json zur Karte")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("JSONToMap()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-ausf-len"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-ausf-len"}},[e._v("#")]),e._v(" Preis ausf. len")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("Len()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-perma-spalte"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-perma-spalte"}},[e._v("#")]),e._v(" Preis exec perma Spalte")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("PermColumn()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-perm-tabelle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-tabelle"}},[e._v("#")]),e._v(" Price Exec Perm-Tabelle")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("PermTable()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-pub-zu-id"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-pub-zu-id"}},[e._v("#")]),e._v(" Preis Exec Pub zu ID")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("PubToID()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-ersetzen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-ersetzen"}},[e._v("#")]),e._v(" Preis exec ersetzen")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der "),t("code",[e._v("Replace()")]),e._v("-Funktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-sha256"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-sha256"}},[e._v("#")]),e._v(" Preis exec sha256")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("Sha256()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausfuhrungsgroße"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausfuhrungsgroße"}},[e._v("#")]),e._v(" Preisausführungsgröße")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("Size()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-substr"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-substr"}},[e._v("#")]),e._v(" Preis Exec Substr")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("theSubstr()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-sys-kraftstoff"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-sys-kraftstoff"}},[e._v("#")]),e._v(" Preis exec sys Kraftstoff")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("SysFuel()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-ausfuhrung-systemparameter-int"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-ausfuhrung-systemparameter-int"}},[e._v("#")]),e._v(" Preis Ausführung Systemparameter Int")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("SysParamInt()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-sys-param-string"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-string"}},[e._v("#")]),e._v(" price exec sys param string")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("SysParamString()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-tabellenbedingungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-tabellenbedingungen"}},[e._v("#")]),e._v(" Price Exec-Tabellenbedingungen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("TableConditions()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-wallet-entbinden"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-wallet-entbinden"}},[e._v("#")]),e._v(" Price Exec Wallet entbinden")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der "),t("code",[e._v("Deactivate()")]),e._v("-Funktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-update-sprache"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-update-sprache"}},[e._v("#")]),e._v(" Preis-Exec-Update-Sprache")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der "),t("code",[e._v("UpdateLang()")]),e._v("-Funktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausf-bedingung-validieren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausf-bedingung-validieren"}},[e._v("#")]),e._v(" Preisausf. Bedingung validieren")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("ValidateCondition()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-tx-daten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-tx-daten"}},[e._v("#")]),e._v(" Preis-TX-Daten")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für alle 1024 Byte einer Transaktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-tx-brieftasche"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-tx-brieftasche"}},[e._v("#")]),e._v(" Preis TX-Brieftasche")]),e._v(" "),t("p",[e._v("Die Gebühr nach Transaktionsgröße, ihre Einheit ist das IBXC-Token.")]),e._v(" "),t("p",[e._v("Mit Ausnahme des Ökosystems 1 fällt bei der Umsetzung eines Vertrags in anderen Ökosystemen anteilig eine Nutzungsgebühr für Blockspeicherplatz an, und ihr Satz beträgt "),t("em",[e._v("Preis für die Tx-Wallet")]),e._v(" IBXC-Token pro Megabyte.")]),e._v(" "),t("h3",{attrs:{id:"rollback-blocke"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollback-blocke"}},[e._v("#")]),e._v(" Rollback-Blöcke")]),e._v(" "),t("p",[e._v("Maximale Anzahl von Blöcken, die zurückgesetzt werden können, wenn ein Fork in der Blockchain erkannt wird.")])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{403:function(e,r,t){"use strict";t.r(r);var a=t(51),s=Object(a.a)({},(function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"plattformparameter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#plattformparameter"}},[e._v("#")]),e._v(" Plattformparameter")]),e._v(" "),t("p",[e._v("Dies sind Parameter zur Konfiguration von IBAX. Sie gelten für das Blockchain-Netzwerk und alle darin enthaltenen Ökosysteme.")]),e._v(" "),t("h2",{attrs:{id:"ort-zum-speichern-von-plattformparametern"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ort-zum-speichern-von-plattformparametern"}},[e._v("#")]),e._v(" Ort zum Speichern von Plattformparametern")]),e._v(" "),t("p",[e._v("Plattformparameter werden in der Tabelle "),t("code",[e._v("system parameters")]),e._v(" gespeichert.")]),e._v(" "),t("p",[e._v("Diese Tabelle befindet sich im ersten (Standard-)Ökosystem, das im Blockchain-Netzwerk erstellt wurde.")]),e._v(" "),t("h2",{attrs:{id:"anderung-der-plattformparameter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anderung-der-plattformparameter"}},[e._v("#")]),e._v(" Änderung der Plattformparameter")]),e._v(" "),t("p",[e._v("Eine Änderung der Plattformparameter kann nur durch Abstimmung erfolgen. Sie können den UpdateSysParam-Vertrag nur verwenden, um Plattformparameter zu ändern, die durch Definitionen im Rechtssystem der Plattform verwaltet werden.")]),e._v(" "),t("h2",{attrs:{id:"plattformparameter-konfigurieren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#plattformparameter-konfigurieren"}},[e._v("#")]),e._v(" Plattformparameter konfigurieren")]),e._v(" "),t("h3",{attrs:{id:"konfigurieren-sie-das-blockchain-netzwerk"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-das-blockchain-netzwerk"}},[e._v("#")]),e._v(" Konfigurieren Sie das Blockchain-Netzwerk")]),e._v(" "),t("p",[e._v("Knoten:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#volle-knoten"}},[e._v("Volle Knoten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#anzahl-der-knoten"}},[e._v("Anzahl der Knoten")])])]),e._v(" "),t("p",[e._v("Knotenverbote:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#falsche-Bl%C3%B6cke-pro-Tag"}},[e._v("falsche Blöcke pro Tag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])])]),e._v(" "),t("h3",{attrs:{id:"konfigurieren-sie-ein-neues-okosystem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-ein-neues-okosystem"}},[e._v("#")]),e._v(" Konfigurieren Sie ein neues Ökosystem")]),e._v(" "),t("p",[e._v("Standardseite und Menü:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("Standard-Ökosystemseite")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("Standard-Ökosystem-Menü")])])]),e._v(" "),t("p",[e._v("Standardvertrag:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("Standard-Ökosystemvertrag")])])]),e._v(" "),t("h3",{attrs:{id:"konfigurieren-sie-die-datenbank"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-die-datenbank"}},[e._v("#")]),e._v(" Konfigurieren Sie die Datenbank")]),e._v(" "),t("p",[e._v("Tischlimits:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#max-spalte"}},[e._v("Max Spalte")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-indizes"}},[e._v("Max Indizes")])])]),e._v(" "),t("h3",{attrs:{id:"generierung-von-blocken-konfigurieren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#generierung-von-blocken-konfigurieren"}},[e._v("#")]),e._v(" Generierung von Blöcken konfigurieren")]),e._v(" "),t("p",[e._v("Zeitbegrenzungen:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#L%C3%BCcke-zwischen-Bl%C3%B6cken"}},[e._v("Lücke zwischen Blöcken")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max. Blockgenerierungszeit")])])]),e._v(" "),t("p",[e._v("Transaktionslimits:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#max-tx-Block"}},[e._v("max. Sendeblock")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max. Sendeblock pro Benutzer")])])]),e._v(" "),t("p",[e._v("Größenbeschränkungen:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#max-tx-Gr%C3%B6%C3%9Fe"}},[e._v("maximale Sendegröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-Blockgr%C3%B6%C3%9Fe"}},[e._v("maximale Blockgröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-forsign-size"}},[e._v("maximale Zeichengröße")])])]),e._v(" "),t("p",[e._v("Kraftstoffgrenzen:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#max.-Kraftstoffblock"}},[e._v("max. Kraftstoffblock")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max. Kraftstoffverbrauch")])])]),e._v(" "),t("p",[e._v("Rollback-Limits blockieren:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Rollback-Bl%C3%B6cke"}},[e._v("Rollback-Blöcke")])])]),e._v(" "),t("h3",{attrs:{id:"konfigurieren-sie-die-tankmarken"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#konfigurieren-sie-die-tankmarken"}},[e._v("#")]),e._v(" Konfigurieren Sie die Tankmarken")]),e._v(" "),t("p",[e._v("Prämien und Provisionen:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Block-Belohnung"}},[e._v("Block-Belohnung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#provisionsgeldb%C3%B6rse"}},[e._v("Provisionsgeldbörse")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#provisionsgr%C3%B6%C3%9Fe"}},[e._v("Provisionsgröße")])])]),e._v(" "),t("p",[e._v("Kraftstoffratenumrechnung:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Kraftstoffrate"}},[e._v("Kraftstoffrate")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsrate"}},[e._v("Preiserstellungsrate")])])]),e._v(" "),t("p",[e._v("Transaktionsgröße und Datenpreis:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Preis-TX-Daten"}},[e._v("Preis-TX-Daten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("Preis tx Größe Geldbörse")])])]),e._v(" "),t("p",[e._v("Price for new elements:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#preis-schaffen-%C3%B6kosystem"}},[e._v("Preis schaffen Ökosystem")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-tabelle-erstellen"}},[e._v("Preis Tabelle erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsspalte"}},[e._v("Preiserstellungsspalte")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsvertrag"}},[e._v("Preiserstellungsvertrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-create-menu"}},[e._v("Preiserstellungsmenü")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsseite"}},[e._v("Preiserstellungsseite")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsanwendung"}},[e._v("Preiserstellungsanwendung")]),e._v("\nPrice for operations:\n")])]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#platform-parameters"}},[e._v("Plattformparameter")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#location-to-store-platform-parameters"}},[e._v("Speicherort für Plattformparameter")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#change-of-platform-parameters"}},[e._v("Änderung der Plattformparameter")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#configure-platform-parameters"}},[e._v("Plattformparameter konfigurieren")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#configure-the-blockchain-network"}},[e._v("Blockchain-Netzwerk konfigurieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#configure-a-new-ecosystem"}},[e._v("Neues Ökosystem konfigurieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#configure-the-database"}},[e._v("Datenbank konfigurieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("Generierung von Blöcken konfigurieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#configure-the-fuel-tokens"}},[e._v("Treibstoffmarken konfigurieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#abgeschrieben"}},[e._v("Abgeschrieben")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#details-of-platform-parameters"}},[e._v("Details der Plattformparameter")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#block-belohnung"}},[e._v("Blockbelohnung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Blockchain-URL"}},[e._v("Blockchain-URL")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#provisionsgr%C3%B6%C3%9Fe"}},[e._v("Provisionsgröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#provisionsgeldb%C3%B6rse"}},[e._v("Provisionsgeldbörse")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("Standard-Ökosystemvertrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("Standard-Ökosystem-Menü")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("Standard-Ökosystemseite")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Kraftstoffrate"}},[e._v("Kraftstoffrate")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preiserstellungsrate"}},[e._v("Preiserstellungsrate")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vollst%C3%A4ndige-knoten"}},[e._v("Vollständige Knoten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#l%C3%BCcke-zwischen-Bl%C3%B6cken"}},[e._v("Lücke zwischen Blöcken")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#falsche-Bl%C3%B6cke-pro-Tag"}},[e._v("Falsche Blöcke pro Tag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-block-generation-time"}},[e._v("Max. Blockgenerierungszeit")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-Blockgr%C3%B6%C3%9Fe"}},[e._v("Maximale Blockgröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-spalten"}},[e._v("Max Spalten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-forsign-size"}},[e._v("maximale Zeichengröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-Kraftstoffblock"}},[e._v("max. Kraftstoffblock")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max. Kraftstoffverbrauch")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-Indizes"}},[e._v("maximale Indizes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-tx-Block"}},[e._v("max. Sendeblock")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max. Sendeblock pro Benutzer")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#max-tx-Gr%C3%B6%C3%9Fe"}},[e._v("maximale Sendegröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#anzahl-der-knoten"}},[e._v("Anzahl der Knoten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-%C3%B6kosystem-erstellen"}},[e._v("Preis-Ökosystem erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preiserstellungsantrag"}},[e._v("Preiserstellungsantrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preistabelle-erstellen"}},[e._v("Preistabelle erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsspalte"}},[e._v("Preiserstellungsspalte")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsvertrag"}},[e._v("Preiserstellungsvertrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-create-menu"}},[e._v("Preiserstellungsmenü")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preiserstellungsseite"}},[e._v("Preiserstellungsseite")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preis-Exec-Adresse-zu-ID"}},[e._v("Preis-Exec-Adresse zu ID")])]),e._v(" "),t("li",[e._v("[Preis-Exec-Bind-Wallet] (#preis-Exec-Bind-Wallet)")]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preisausf%C3%BChrungsspaltenbedingung"}},[e._v("Preisausführungsspaltenbedingung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preis-Exec-Compile-Vertrag"}},[e._v("Preis-Exec-Vertrag kompilieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preisexec-enth%C3%A4lt"}},[e._v("Preisexec enthält")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preisausf%C3%BChrungsvertrag-nach-ID"}},[e._v("Preisausführungsvertrag nach ID")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preisausf%C3%BChrungsvertrag-nach-Name"}},[e._v("Preisausführungsvertrag nach Name")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-exec-contracts-list"}},[e._v("Liste der Price-Exec-Verträge")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-exec-spalte-erstellen"}},[e._v("Preis-Exec-Spalte erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-exec-%C3%B6kosystem-erstellen"}},[e._v("Price Exec Ecosystem erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-exec-tabelle-erstellen"}},[e._v("Preis-Exec-Tabelle erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preis-Exec-Ecosys-Param"}},[e._v("Preis-Exec-Ecosys-Param")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Auswertung"}},[e._v("Preis-Auswertung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preisauswertungsbedingung"}},[e._v("Preisauswertungsbedingung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-Flush-Vertrag"}},[e._v("Preis-Exec-Flush-Vertrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-hat-Pr%C3%A4fix"}},[e._v("Preis-Exec hat Präfix")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preisausf%C3%BChrungs-ID-zur-Adresse"}},[e._v("Preisausführungs-ID zur Adresse")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preisexec-ist-Objekt"}},[e._v("Preisexec ist Objekt")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-Join"}},[e._v("Preis-Exec-Join")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-exec-json-to-map"}},[e._v("Preis-exec-json zur Karte")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Ausf%C3%BChrungsl%C3%A4nge"}},[e._v("Preis-Ausführungslänge")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-Perm-Spalte"}},[e._v("Preis-Exec-Perm-Spalte")])]),e._v(" "),t("li",[e._v("[Preis-Exec-Perm-Tabelle] (#preis-exec-perm-tabelle)")]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-Pub-zu-ID"}},[e._v("Preis-Exec-Pub zu ID")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-Exec-Ersetzen"}},[e._v("Preisexec ersetzen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-exec-sha256"}},[e._v("Preis exec sha256")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preisausf%C3%BChrungsgr%C3%B6%C3%9Fe"}},[e._v("Preisausführungsgröße")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preis-Exec-Substr"}},[e._v("Preis-Exec-Substr")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preis-Exec-System-Kraftstoff"}},[e._v("Preis-Exec-System-Kraftstoff")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-exec-sys-param-int"}},[e._v("Preis-exec-sys-param-int")])]),e._v(" "),t("li",[e._v("[Preis-Exec-Systemparameter-String] (#preis-exec-system-param-string)")]),e._v(" "),t("li",[t("a",{attrs:{href:"#Preisausf%C3%BChrungstabellenbedingungen"}},[e._v("Bedingungen der Preisausführungstabelle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-exec-brieftasche-l%C3%B6sen"}},[e._v("Preisexec-Brieftasche lösen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#price-exec-Update-Sprache"}},[e._v("Preis-Exec-Update-Sprache")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#bedingung-f%C3%BCr-preisausf%C3%BChrung-validieren"}},[e._v("Bedingung für Preisausführung validieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-TX-Daten"}},[e._v("Preis-TX-Daten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#preis-tx-gr%C3%B6%C3%9Fe-brieftasche"}},[e._v("Preis tx-Größe Brieftasche")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#rollback-bl%C3%B6cke"}},[e._v("Rollback-Blöcke")])])])])])])]),e._v(" "),t("h3",{attrs:{id:"abgeschrieben"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#abgeschrieben"}},[e._v("#")]),e._v(" Abgeschrieben")]),e._v(" "),t("p",[e._v("Abgeschriebene Parameter:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Blockchain-URL"}},[e._v("Blockchain-URL")])])]),e._v(" "),t("h2",{attrs:{id:"details-der-plattformparameter"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#details-der-plattformparameter"}},[e._v("#")]),e._v(" Details der Plattformparameter")]),e._v(" "),t("h3",{attrs:{id:"blockbelohnung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#blockbelohnung"}},[e._v("#")]),e._v(" Blockbelohnung")]),e._v(" "),t("p",[e._v("Die Anzahl der IBXC-Token, die dem Ehrenknoten gewährt wurden, der den Block generiert.\nDas Konto, das die Belohnung erhält, wird im Parameter "),t("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" angegeben.")]),e._v(" "),t("h3",{attrs:{id:"blockchain-url"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-url"}},[e._v("#")]),e._v(" Blockchain-URL")]),e._v(" "),t("p",[e._v("Abgeschrieben.")]),e._v(" "),t("h3",{attrs:{id:"provisionsgroße"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#provisionsgroße"}},[e._v("#")]),e._v(" Provisionsgröße")]),e._v(" "),t("p",[e._v("Prozentsatz der Provision.")]),e._v(" "),t("p",[e._v("Die Höhe der Provision wird als Prozentsatz der Gesamtkosten der Vertragsdurchführung berechnet. Die Einheit des Provisionstokens ist IBXC.")]),e._v(" "),t("p",[e._v("Die Provision wird an die im Parameter provisions_wallet angegebene Kontoadresse überwiesen.")]),e._v(" "),t("h3",{attrs:{id:"provisionsgeldborse"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#provisionsgeldborse"}},[e._v("#")]),e._v(" Provisionsgeldbörse")]),e._v(" "),t("p",[e._v("Die Kontoadresse, um die Provision zu erhalten.")]),e._v(" "),t("p",[e._v("Die Höhe der Provision wird durch den Parameter provisions_größe angegeben.")]),e._v(" "),t("h3",{attrs:{id:"standard-okosystemvertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#standard-okosystemvertrag"}},[e._v("#")]),e._v(" Standard-Ökosystemvertrag")]),e._v(" "),t("p",[e._v("Der Quellcode des Standardvertrags im neuen Ökosystem.")]),e._v(" "),t("p",[e._v("Dieser Vertrag bietet Zugang zum Ökosystem-Ersteller.")]),e._v(" "),t("h3",{attrs:{id:"standard-okosystem-menu"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#standard-okosystem-menu"}},[e._v("#")]),e._v(" Standard-Ökosystem-Menü")]),e._v(" "),t("p",[e._v("Der Quellcode des Standardmenüs des neuen Ökosystems.")]),e._v(" "),t("h3",{attrs:{id:"standard-okosystemseite"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#standard-okosystemseite"}},[e._v("#")]),e._v(" Standard-Ökosystemseite")]),e._v(" "),t("p",[e._v("Der Quellcode der Standardseite des neuen Ökosystems.")]),e._v(" "),t("h3",{attrs:{id:"kraftstoffrate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kraftstoffrate"}},[e._v("#")]),e._v(" Kraftstoffrate")]),e._v(" "),t("p",[e._v("Die Wechselkurse verschiedener Ökosystem-Token nach Kraftstoffeinheit.")]),e._v(" "),t("p",[e._v("Das Format dieses Parameters:")]),e._v(" "),t("p",[t("code",[e._v('[["ecosystem_id", "token_to_fuel_rate"], ["ecosystem_id2", "token_to_fuel_rate2"], ...]')])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("ecosystem_id")])]),e._v(" "),t("p",[e._v("Ecosystem ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("token_to_fuel_rate")])]),e._v(" "),t("p",[e._v("Wechselkurs des Tokens nach Kraftstoffeinheit.")])])]),e._v(" "),t("p",[e._v("Zum Beispiel:")]),e._v(" "),t("p",[t("code",[e._v('[["1","1000000000000"], ["2", "1000"]]')])]),e._v(" "),t("p",[e._v("Ein Token des Ökosystems 1 wird gegen 1.000.000.000.000 Kraftstoffeinheiten eingetauscht. Ein Token des Ökosystems 2 wird gegen 1.000 Kraftstoffeinheiten eingetauscht.")]),e._v(" "),t("h3",{attrs:{id:"preiserstellungsrate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preiserstellungsrate"}},[e._v("#")]),e._v(" Preiserstellungsrate")]),e._v(" "),t("p",[e._v("Die Brennstoffrate eines neuen Elements.")]),e._v(" "),t("h3",{attrs:{id:"vollstandige-knoten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vollstandige-knoten"}},[e._v("#")]),e._v(" vollständige Knoten")]),e._v(" "),t("p",[e._v("Die Liste der Ehrenknoten des Blockchain-Netzwerks.")]),e._v(" "),t("p",[e._v("Das Format dieses Parameters:\n"),t("code",[e._v('[{"api_address":"https://apihost1:port1","public_key":"nodepub1","tcp_address":"tcphost1:port2"},{"api_address":"https://apihost2:port1","public_key":"nodepub2","tcp_address":"tcphost2:port2"}]')])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("tcp_address")])]),e._v(" "),t("p",[e._v("TCP-Adresse und Port des Knotenhosts.\nTransaktionen und neue Blöcke werden an diese Hostadresse gesendet, die auch verwendet werden kann, um die vollständige Blockchain aus dem ersten Block zu erhalten.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("api_address")])]),e._v(" "),t("p",[e._v("API-Adresse und Port des Knotenhosts.\nÜber die API-Adresse können Sie auf alle Funktionen der Plattform zugreifen, ohne Weaver zu verwenden. Siehe Details in RESTful-API.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("public_key")])])])]),e._v(" "),t("p",[e._v("Öffentlicher Schlüssel des Knotens, der zur Überprüfung der Blocksignatur verwendet wird.")]),e._v(" "),t("h3",{attrs:{id:"lucke-zwischen-blocken"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lucke-zwischen-blocken"}},[e._v("#")]),e._v(" Lücke zwischen Blöcken")]),e._v(" "),t("p",[e._v("Das Zeitintervall (in Sekunden) zum Generieren von zwei Blöcken auf einem Knoten.")]),e._v(" "),t("p",[e._v("Alle Knoten im Netzwerk verwenden es, um zu bestimmen, wann ein neuer Block generiert werden soll. Wenn der aktuelle Knoten innerhalb dieses Zeitraums keinen neuen Block erzeugt, geht die Reihe zum nächsten Knoten in der Liste der Ehrenknoten über.")]),e._v(" "),t("p",[e._v("Der Mindestwert dieses Parameters ist "),t("code",[e._v("1")]),e._v(" Sekunde.")]),e._v(" "),t("h3",{attrs:{id:"falsche-blocke-pro-tag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#falsche-blocke-pro-tag"}},[e._v("#")]),e._v(" falsche Blöcke pro Tag")]),e._v(" "),t("p",[e._v("Die Anzahl der fehlerhaften Blöcke, die ein Knoten pro Tag generieren darf, bevor er gesperrt wird.")]),e._v(" "),t("p",[e._v("Wenn mehr als die Hälfte der Knoten im Netzwerk die gleiche Anzahl fehlerhafter Blöcke von einem Knoten erhalten, wird der Knoten innerhalb eines in "),t("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")]),e._v(" festgelegten Zeitraums aus dem Netzwerk gesperrt.")]),e._v(" "),t("h3",{attrs:{id:"max-block-generation-time"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-block-generation-time"}},[e._v("#")]),e._v(" max block generation time")]),e._v(" "),t("p",[e._v("The maximum time for generating a block, in milliseconds. If a block is not successfully generated within this time period, a timeout error will be reported.")]),e._v(" "),t("h3",{attrs:{id:"maximale-blockgroße"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maximale-blockgroße"}},[e._v("#")]),e._v(" maximale Blockgröße")]),e._v(" "),t("p",[e._v("Die maximale Größe eines Blocks in Bytes.")]),e._v(" "),t("h3",{attrs:{id:"max-spalten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-spalten"}},[e._v("#")]),e._v(" max. Spalten")]),e._v(" "),t("p",[e._v("Die maximale Anzahl von Feldern in einer einzelnen Tabelle.")]),e._v(" "),t("p",[e._v("Sie enthält jedoch nicht die vordefinierte Spalte "),t("code",[e._v("id")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"maximale-forsign-große"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maximale-forsign-große"}},[e._v("#")]),e._v(" maximale Forsign-Größe")]),e._v(" "),t("p",[e._v("Die maximale Größe einer Transaktionssignatur in Bytes.")]),e._v(" "),t("h3",{attrs:{id:"maximaler-kraftstoffblock"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maximaler-kraftstoffblock"}},[e._v("#")]),e._v(" maximaler Kraftstoffblock")]),e._v(" "),t("p",[e._v("Die maximale Gesamttreibstoffgebühr eines einzelnen Blocks.")]),e._v(" "),t("h3",{attrs:{id:"max-kraftstoffverbrauch"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-kraftstoffverbrauch"}},[e._v("#")]),e._v(" max. Kraftstoffverbrauch")]),e._v(" "),t("p",[e._v("Die maximale Gesamttreibstoffgebühr einer einzelnen Transaktion.")]),e._v(" "),t("h3",{attrs:{id:"maximale-indizes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maximale-indizes"}},[e._v("#")]),e._v(" maximale Indizes")]),e._v(" "),t("p",[e._v("Die maximale Anzahl von Primärschlüsselfeldern in einer einzelnen Tabelle.")]),e._v(" "),t("h3",{attrs:{id:"max-sendeblock"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-sendeblock"}},[e._v("#")]),e._v(" max. Sendeblock")]),e._v(" "),t("p",[e._v("Die maximale Anzahl von Transaktionen in einem einzelnen Block.")]),e._v(" "),t("h3",{attrs:{id:"max-sendeblock-pro-benutzer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#max-sendeblock-pro-benutzer"}},[e._v("#")]),e._v(" max. Sendeblock pro Benutzer")]),e._v(" "),t("p",[e._v("Die maximale Anzahl von Transaktionen eines Kontos in einem Block.")]),e._v(" "),t("h3",{attrs:{id:"maximale-sendegroße"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maximale-sendegroße"}},[e._v("#")]),e._v(" maximale Sendegröße")]),e._v(" "),t("p",[e._v("Die maximale Größe einer Transaktion in Bytes.")]),e._v(" "),t("h3",{attrs:{id:"node-sperrzeit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#node-sperrzeit"}},[e._v("#")]),e._v(" Node-Sperrzeit")]),e._v(" "),t("p",[e._v("Der globale Sperrzeitraum des Knotens in Millisekunden.\nWenn mehr als die Hälfte der Knoten im Netzwerk fehlerhafte Blöcke von einem Knoten bis zur Anzahl von "),t("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("falschen Blöcken pro Tag")]),e._v(" erhalten, wird der Knoten für diesen Zeitraum im Netzwerk gesperrt .")]),e._v(" "),t("h3",{attrs:{id:"knotensperrzeit-lokal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#knotensperrzeit-lokal"}},[e._v("#")]),e._v(" Knotensperrzeit lokal")]),e._v(" "),t("p",[e._v("Die lokale Sperrzeit des Knotens in Millisekunden.")]),e._v(" "),t("p",[e._v("Wenn ein Knoten einen falschen Block von einem anderen Knoten empfängt, wird er den Knoten des Absenders während dieses Zeitraums lokal sperren.")]),e._v(" "),t("h3",{attrs:{id:"anzahl-der-knoten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anzahl-der-knoten"}},[e._v("#")]),e._v(" Anzahl der Knoten")]),e._v(" "),t("p",[e._v("Die maximale Anzahl an Honor-Knoten im Parameter "),t("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"preis-schafft-okosystem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-schafft-okosystem"}},[e._v("#")]),e._v(" Preis schafft Ökosystem")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr, um ein neues einheitliches Ökosystem zu schaffen.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzliche Treibstoffgebühr des "),t("code",[e._v("@1NewEcosystem")]),e._v("-Vertrags. Bei Vertragsabschluss wird auch die Treibstoffgebühr für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"preis-anwendung-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-anwendung-erstellen"}},[e._v("#")]),e._v(" Preis Anwendung erstellen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr zum Erstellen einer neuen Einzelanwendung.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzliche Treibstoffgebühr des "),t("code",[e._v("@1NewApplication")]),e._v("-Vertrags. Bei Vertragsabschluss wird auch die Treibstoffgebühr für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"preis-tabelle-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-tabelle-erstellen"}},[e._v("#")]),e._v(" Preis Tabelle erstellen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr zum Erstellen einer neuen einzelnen Tabelle.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzlichen Treibstoffkosten des "),t("code",[e._v("@1NewTable")]),e._v("-Vertrags. Bei Vertragsabschluss werden auch die Treibstoffkosten für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("p",[e._v("Spalte ### Preis erstellen\nDie Kraftstoffgebühr zum Erstellen eines neuen einzelnen Tabellenfeldes.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzlichen Treibstoffkosten des "),t("code",[e._v("@1NewColumn")]),e._v("-Vertrags. Bei Vertragsabschluss werden auch die Treibstoffkosten für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"preis-vertrag-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-vertrag-erstellen"}},[e._v("#")]),e._v(" Preis Vertrag erstellen")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr ist ein neuer Einzelvertrag zu erstellen.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzlichen Treibstoffkosten des "),t("code",[e._v("@1NewContract")]),e._v("-Vertrags. Bei Vertragsabschluss werden auch die Treibstoffkosten für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"preis-menu-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-menu-erstellen"}},[e._v("#")]),e._v(" Preis Menü erstellen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr zum Erstellen eines neuen Einzelmenüs.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzlichen Treibstoffkosten des "),t("code",[e._v("@1NewMenu")]),e._v("-Vertrags. Bei Vertragsabschluss werden auch die Treibstoffkosten für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"seite-zum-erstellen-von-preisen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#seite-zum-erstellen-von-preisen"}},[e._v("#")]),e._v(" Seite zum Erstellen von Preisen")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr zum Erstellen einer neuen einzelnen Seite.")]),e._v(" "),t("p",[e._v("Dieser Parameter definiert die zusätzlichen Treibstoffkosten des "),t("code",[e._v("@1NewPage")]),e._v("-Vertrags. Bei Vertragsabschluss werden auch die Treibstoffkosten für die Ausführung verschiedener Funktionen dieses Vertrages berechnet und in die Gesamtkosten einbezogen.")]),e._v(" "),t("p",[e._v("Dieser Parameter wird in Kraftstoffeinheiten berechnet. Verwenden Sie "),t("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" und "),t("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(", um Treibstoffeinheiten in IBXC-Token umzuwandeln.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-address-to-id"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-address-to-id"}},[e._v("#")]),e._v(" price exec address to id")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("AddressToId()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-bind-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-bind-wallet"}},[e._v("#")]),e._v(" Price Exec Bind Wallet")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der "),t("code",[e._v("Activate()")]),e._v("-Funktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"bedingung-der-preisausfuhrungsspalte"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bedingung-der-preisausfuhrungsspalte"}},[e._v("#")]),e._v(" Bedingung der Preisausführungsspalte")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("ColumnCondition()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-kompilieren-vertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-kompilieren-vertrag"}},[e._v("#")]),e._v(" Price Exec kompilieren Vertrag")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("CompileContract()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisexe-enthalt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisexe-enthalt"}},[e._v("#")]),e._v(" Preisexe enthält")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der "),t("code",[e._v("Contains()")]),e._v("-Funktion, berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausfuhrungsvertrag-nach-id"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausfuhrungsvertrag-nach-id"}},[e._v("#")]),e._v(" Preisausführungsvertrag nach ID")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("GetContractById()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-vertrag-nach-namen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-vertrag-nach-namen"}},[e._v("#")]),e._v(" Price Exec-Vertrag nach Namen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("GetContractByName()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"liste-der-price-exec-vertrage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#liste-der-price-exec-vertrage"}},[e._v("#")]),e._v(" Liste der Price Exec-Verträge")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("ContractsList()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-spalte-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-spalte-erstellen"}},[e._v("#")]),e._v(" Preis-Exec-Spalte erstellen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("CreateColumn()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-schafft-ein-okosystem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-schafft-ein-okosystem"}},[e._v("#")]),e._v(" Price Exec schafft ein Ökosystem")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("CreateEcosystem()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausfuhrung-tabelle-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausfuhrung-tabelle-erstellen"}},[e._v("#")]),e._v(" Preisausführung Tabelle erstellen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("CreateTable()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-ausfuhrung-ecosys-param"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-ausfuhrung-ecosys-param"}},[e._v("#")]),e._v(" Preis Ausführung Ecosys Param")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("EcosysParam()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausw"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausw"}},[e._v("#")]),e._v(" Preisausw")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("Eval()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausfuhrungszustand"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausfuhrungszustand"}},[e._v("#")]),e._v(" Preisausführungszustand")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("EvalCondition()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-flush-vertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-flush-vertrag"}},[e._v("#")]),e._v(" Price Exec Flush-Vertrag")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("FlushContract()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-hat-prafix"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-hat-prafix"}},[e._v("#")]),e._v(" Price Exec hat Präfix")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("HasPrefix()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausfuhrungs-id-an-adresse"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausfuhrungs-id-an-adresse"}},[e._v("#")]),e._v(" Preisausführungs-ID an Adresse")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("IdToAddress()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisexec-ist-objekt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisexec-ist-objekt"}},[e._v("#")]),e._v(" Preisexec ist Objekt")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("IsObject()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-beitreten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-beitreten"}},[e._v("#")]),e._v(" Price Exec beitreten")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der "),t("code",[e._v("Join()")]),e._v("-Funktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-json-zur-karte"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-json-zur-karte"}},[e._v("#")]),e._v(" Price exec json zur Karte")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("JSONToMap()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-ausf-len"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-ausf-len"}},[e._v("#")]),e._v(" Preis ausf. len")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("Len()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-perma-spalte"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-perma-spalte"}},[e._v("#")]),e._v(" Preis exec perma Spalte")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("PermColumn()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-perm-tabelle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-tabelle"}},[e._v("#")]),e._v(" Price Exec Perm-Tabelle")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("PermTable()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-pub-zu-id"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-pub-zu-id"}},[e._v("#")]),e._v(" Preis Exec Pub zu ID")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("PubToID()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-ersetzen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-ersetzen"}},[e._v("#")]),e._v(" Preis exec ersetzen")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der "),t("code",[e._v("Replace()")]),e._v("-Funktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-sha256"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-sha256"}},[e._v("#")]),e._v(" Preis exec sha256")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("Sha256()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausfuhrungsgroße"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausfuhrungsgroße"}},[e._v("#")]),e._v(" Preisausführungsgröße")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("Size()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-substr"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-substr"}},[e._v("#")]),e._v(" Preis Exec Substr")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("theSubstr()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-sys-kraftstoff"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-sys-kraftstoff"}},[e._v("#")]),e._v(" Preis exec sys Kraftstoff")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("SysFuel()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-ausfuhrung-systemparameter-int"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-ausfuhrung-systemparameter-int"}},[e._v("#")]),e._v(" Preis Ausführung Systemparameter Int")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("SysParamInt()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-sys-param-string"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-string"}},[e._v("#")]),e._v(" price exec sys param string")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("SysParamString()")]),e._v(", berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-tabellenbedingungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-tabellenbedingungen"}},[e._v("#")]),e._v(" Price Exec-Tabellenbedingungen")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("TableConditions()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"price-exec-wallet-entbinden"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-wallet-entbinden"}},[e._v("#")]),e._v(" Price Exec Wallet entbinden")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der "),t("code",[e._v("Deactivate()")]),e._v("-Funktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-exec-update-sprache"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-exec-update-sprache"}},[e._v("#")]),e._v(" Preis-Exec-Update-Sprache")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für den Aufruf der "),t("code",[e._v("UpdateLang()")]),e._v("-Funktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preisausf-bedingung-validieren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preisausf-bedingung-validieren"}},[e._v("#")]),e._v(" Preisausf. Bedingung validieren")]),e._v(" "),t("p",[e._v("Die Kraftstoffgebühr für den Aufruf der Funktion "),t("code",[e._v("ValidateCondition()")]),e._v(", berechnet in Kraftstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-tx-daten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-tx-daten"}},[e._v("#")]),e._v(" Preis-TX-Daten")]),e._v(" "),t("p",[e._v("Die Treibstoffgebühr für alle 1024 Byte einer Transaktion, berechnet in Treibstoffeinheiten.")]),e._v(" "),t("h3",{attrs:{id:"preis-tx-brieftasche"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#preis-tx-brieftasche"}},[e._v("#")]),e._v(" Preis TX-Brieftasche")]),e._v(" "),t("p",[e._v("Die Gebühr nach Transaktionsgröße, ihre Einheit ist das IBXC-Token.")]),e._v(" "),t("p",[e._v("Mit Ausnahme des Ökosystems 1 fällt bei der Umsetzung eines Vertrags in anderen Ökosystemen anteilig eine Nutzungsgebühr für Blockspeicherplatz an, und ihr Satz beträgt "),t("em",[e._v("Preis für die Tx-Wallet")]),e._v(" IBXC-Token pro Megabyte.")]),e._v(" "),t("h3",{attrs:{id:"rollback-blocke"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollback-blocke"}},[e._v("#")]),e._v(" Rollback-Blöcke")]),e._v(" "),t("p",[e._v("Maximale Anzahl von Blöcken, die zurückgesetzt werden können, wenn ein Fork in der Blockchain erkannt wird.")])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/25.a364ffe9.js b/assets/js/25.08e6622a.js similarity index 99% rename from assets/js/25.a364ffe9.js rename to assets/js/25.08e6622a.js index 7e7685f..5e580a2 100644 --- a/assets/js/25.a364ffe9.js +++ b/assets/js/25.08e6622a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{406:function(e,n,a){"use strict";a.r(n);var r=a(51),t=Object(r.a)({},(function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"damon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#damon"}},[e._v("#")]),e._v(" Dämon")]),e._v(" "),a("p",[e._v("In diesem Abschnitt beschreiben wir aus technischer Sicht, wie IBax-Knoten miteinander interagieren.")]),e._v(" "),a("h2",{attrs:{id:"uber-den-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uber-den-server-daemon"}},[e._v("#")]),e._v(" Über den Server-Daemon")]),e._v(" "),a("p",[e._v("Der Server-Daemon muss auf jedem Netzwerkknoten laufen, der verschiedene Serverfunktionen ausführt und das Blockchain-Protokoll von IBax unterstützt. Im Blockchain-Netzwerk verteilt der Daemon Blöcke und Transaktionen, generiert neue Blöcke und verifiziert empfangene Blöcke und Transaktionen und kann das Fork-Problem vermeiden.")]),e._v(" "),a("h3",{attrs:{id:"honor-knoten-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-knoten-daemon"}},[e._v("#")]),e._v(" Honor-Knoten-Daemon")]),e._v(" "),a("p",[e._v("Ein Ehrenknoten führt die folgenden Server-Daemons aus:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-Daemon"}},[e._v("BlockGenerator-Daemon")])]),e._v(" "),a("p",[e._v("Generieren neuer Blöcke.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-Daemon"}},[e._v("BlockCollection-Daemon")])]),e._v(" "),a("p",[e._v("Herunterladen neuer Blöcke von anderen Knoten.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-Daemon"}},[e._v("Bestätigungs-Daemon")])]),e._v(" "),a("p",[e._v("Bestätigen, dass Blöcke auf dem Knoten auch auf den meisten anderen Knoten vorhanden sind.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-Daemon"}},[e._v("Disseminator-Daemon")])]),e._v(" "),a("p",[e._v("Verteilen von Transaktionen und Blöcken an andere Ehrenknoten.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks-Daemon")]),e._v(" "),a("p",[e._v("Blöcke in der Warteschlange, die Blöcke von anderen Knoten enthält.")]),e._v(" "),a("p",[e._v("Die Blockverarbeitungslogik ist die gleiche wie bei "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection-Daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx-Daemon")]),e._v(" "),a("p",[e._v("Überprüfung der Transaktionen in der Warteschlange.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler-Daemon")]),e._v(" "),a("p",[e._v("Laufende Verträge wie geplant.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-knoten-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-knoten-daemon"}},[e._v("#")]),e._v(" Guardian-Knoten-Daemon")]),e._v(" "),a("p",[e._v("Ein Wächterknoten führt die folgenden Server-Daemons aus:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-Daemon"}},[e._v("BlockCollection-Daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-Daemon"}},[e._v("Bestätigungs-Daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-Daemon"}},[e._v("Disseminator-Daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Planer")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection-Daemon")]),e._v(" "),a("p",[e._v("Dieser Daemon lädt Blöcke herunter und synchronisiert die Blockchain mit anderen Netzwerkknoten.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronisation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronisation"}},[e._v("#")]),e._v(" Blockchain-Synchronisation")]),e._v(" "),a("p",[e._v("Dieser Daemon synchronisiert die Blockchain, indem er die maximale Blockhöhe im Blockchain-Netzwerk bestimmt, neue Blöcke anfordert und das Fork-Problem in der Blockchain löst.")]),e._v(" "),a("h4",{attrs:{id:"nach-blockchain-updates-suchen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nach-blockchain-updates-suchen"}},[e._v("#")]),e._v(" Nach Blockchain-Updates suchen")]),e._v(" "),a("p",[e._v("Dieser Daemon sendet Anforderungen von der aktuellen Block-ID an alle Ehrenknoten.")]),e._v(" "),a("p",[e._v("Wenn die aktuelle Block-ID des Knotens, auf dem der Daemon läuft, kleiner ist als die aktuelle Block-ID eines beliebigen Ehrenknotens, gilt der Blockchain-Netzwerkknoten als veraltet.")]),e._v(" "),a("h4",{attrs:{id:"neue-blocke-herunterladen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#neue-blocke-herunterladen"}},[e._v("#")]),e._v(" Neue Blöcke herunterladen")]),e._v(" "),a("p",[e._v("Der Knoten, der die größte aktuelle Blockhöhe zurückgibt, wird als letzter Knoten betrachtet.\nDer Daemon lädt alle unbekannten Blöcke herunter.")]),e._v(" "),a("h4",{attrs:{id:"losung-des-fork-problems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#losung-des-fork-problems"}},[e._v("#")]),e._v(" Lösung des Fork-Problems")]),e._v(" "),a("p",[e._v("Wenn ein Fork in der Blockchain erkannt wird, verschiebt der Daemon den Fork rückwärts, indem er alle Blöcke in einen gemeinsamen übergeordneten Block herunterlädt.\nWenn der gemeinsame übergeordnete Block gefunden wird, wird ein Blockchain-Rollback auf dem Knoten durchgeführt, auf dem der Daemon ausgeführt wird, und der richtige Block wird zur Blockchain hinzugefügt, bis der neueste enthalten ist.")]),e._v(" "),a("h3",{attrs:{id:"tabellen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tabellen"}},[e._v("#")]),e._v(" Tabellen")]),e._v(" "),a("p",[e._v("Der BlocksCollection-Daemon verwendet die folgenden Tabellen:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("Transaktionen")]),e._v(" "),a("li",[e._v("Transaktionsstatus")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"anfrage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage"}},[e._v("#")]),e._v(" Anfrage")]),e._v(" "),a("p",[e._v("Der BlockCollection-Daemon sendet die folgenden Anforderungen an andere Daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" zeigt auf die größte Block-ID unter allen Ehrenknoten.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" zeigt auf die Daten mit der größten Block-ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-damon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-damon"}},[e._v("#")]),e._v(" BlockGenerator-Dämon")]),e._v(" "),a("p",[e._v("Der BlockGenerator-Daemon generiert neue Blöcke.")]),e._v(" "),a("h3",{attrs:{id:"vorabuberprufung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vorabuberprufung"}},[e._v("#")]),e._v(" Vorabüberprüfung")]),e._v(" "),a("p",[e._v("Der BlockGenerator-Daemon analysiert die neuesten Blöcke in der Blockchain, um neue Blockgenerierungspläne zu erstellen.")]),e._v(" "),a("p",[e._v("Wenn die folgenden Bedingungen erfüllt sind, kann ein neuer Block generiert werden:")]),e._v(" "),a("ul",[a("li",[e._v("Der Knoten, der den letzten Block generiert hat, befindet sich in einem Knoten innerhalb der Ehrenknotenliste und führt den Daemon aus.")]),e._v(" "),a("li",[e._v("Die kürzeste Zeit, seit der letzte nicht verifizierte Block generiert wurde.")])]),e._v(" "),a("h3",{attrs:{id:"blockgenerierung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerierung"}},[e._v("#")]),e._v(" Blockgenerierung")]),e._v(" "),a("p",[e._v("Ein vom Daemon generierter neuer Block enthält alle neuen Transaktionen, die vom "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator-Daemon")]),e._v(" anderer Knoten empfangen oder von dem Knoten generiert werden können, der den Daemon ausführt. Der generierte Block wird in der Node-Datenbank gespeichert.")]),e._v(" "),a("h3",{attrs:{id:"tabellen-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tabellen-2"}},[e._v("#")]),e._v(" Tabellen")]),e._v(" "),a("p",[e._v("Der BlockGenerator-Daemon verwendet die folgenden Tabellen:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (speichert neue Blöcke)")]),e._v(" "),a("li",[e._v("Transaktionen")]),e._v(" "),a("li",[e._v("Transaktionsstatus")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"anfrage-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-2"}},[e._v("#")]),e._v(" Anfrage")]),e._v(" "),a("p",[e._v("Der BlockGenerator-Daemon stellt keine Anfrage an andere Daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator-Daemon")]),e._v(" "),a("p",[e._v("Der Disseminator-Daemon sendet Transaktionen und Blöcke an alle Ehrenknoten.")]),e._v(" "),a("h3",{attrs:{id:"guardian-knoten"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-knoten"}},[e._v("#")]),e._v(" Guardian-Knoten")]),e._v(" "),a("p",[e._v("Bei der Arbeit an einem Wächterknoten sendet der Daemon von seinem Knoten generierte Transaktionen an alle Ehrenknoten.")]),e._v(" "),a("h3",{attrs:{id:"ehrenknoten"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ehrenknoten"}},[e._v("#")]),e._v(" Ehrenknoten")]),e._v(" "),a("p",[e._v("Bei der Arbeit an einem Ehrenknoten sendet der Daemon generierte Blöcke und Transaktions-Hashes an alle Ehrenknoten.")]),e._v(" "),a("p",[e._v("Dann antwortet der Ehrenknoten auf Transaktionsanfragen, die ihm unbekannt sind. Als Antwort sendet der Daemon die vollständigen Transaktionsdaten.")]),e._v(" "),a("h3",{attrs:{id:"tabellen-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tabellen-3"}},[e._v("#")]),e._v(" Tabellen")]),e._v(" "),a("p",[e._v("Der Disseminator-Daemon verwendet die folgenden Tabellen:")]),e._v(" "),a("ul",[a("li",[e._v("Transaktionen")])]),e._v(" "),a("h3",{attrs:{id:"anfrage-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-3"}},[e._v("#")]),e._v(" Anfrage")]),e._v(" "),a("p",[e._v("Der Disseminator-Daemon sendet die folgenden Anforderungen an andere Daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Senden Sie Transaktionen und Block-Hashes an den Ehrenknoten.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Transaktionsdaten vom Ehrenknoten empfangen.")])]),e._v(" "),a("h2",{attrs:{id:"bestatigungs-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bestatigungs-daemon"}},[e._v("#")]),e._v(" Bestätigungs-Daemon")]),e._v(" "),a("p",[e._v("Der Confirmations-Daemon prüft, ob alle Blöcke in seinem Knoten auf den meisten anderen Knoten vorhanden sind.")]),e._v(" "),a("h3",{attrs:{id:"bestatigung-blockieren"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bestatigung-blockieren"}},[e._v("#")]),e._v(" Bestätigung blockieren")]),e._v(" "),a("p",[e._v("Ein von mehreren Knoten im Netzwerk bestätigter Block wird als bestätigter Block betrachtet.")]),e._v(" "),a("p",[e._v("Der Daemon bestätigt nacheinander alle Blöcke, beginnend mit dem ersten, der derzeit nicht in der Datenbank bestätigt ist.")]),e._v(" "),a("p",[e._v("Jeder Block wird wie folgt bestätigt:")]),e._v(" "),a("ul",[a("li",[e._v("Senden einer Anfrage, die die ID des zu bestätigenden Blocks enthält, an alle Ehrenknoten.")]),e._v(" "),a("li",[e._v("Alle Ehrenknoten reagieren auf den Block-Hash.")]),e._v(" "),a("li",[e._v("Wenn der geantwortete Hash mit dem Hash des Blocks auf dem Daemon-Knoten übereinstimmt, wird der Wert des Bestätigungszählers erhöht. Falls nicht, wird der Löschzählerwert erhöht.")])]),e._v(" "),a("h3",{attrs:{id:"tabellen-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tabellen-4"}},[e._v("#")]),e._v(" Tabellen")]),e._v(" "),a("p",[e._v("Der Confirmations-Daemon verwendet die folgenden Tabellen:")]),e._v(" "),a("ul",[a("li",[e._v("Bestätigung")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"anfrage-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-4"}},[e._v("#")]),e._v(" Anfrage")]),e._v(" "),a("p",[e._v("Der Confirmations-Daemon sendet die folgenden Anfragen an andere Daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Fordert Block-Hashes vom Honor-Knoten an.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-dienstprotokoll"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-dienstprotokoll"}},[e._v("#")]),e._v(" TCP-Dienstprotokoll")]),e._v(" "),a("p",[e._v("Das TCP-Dienstprotokoll arbeitet auf Ehrenknoten und Wächterknoten, die das Binärprotokoll auf TCP für Anfragen von den Daemons BlocksCollection, Disseminator und Confirmation verwenden.")]),e._v(" "),a("h2",{attrs:{id:"anfragetyp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfragetyp"}},[e._v("#")]),e._v(" Anfragetyp")]),e._v(" "),a("p",[e._v("Jede Anfrage hat einen Typ, der durch die ersten zwei Bytes der Anfrage definiert ist.")]),e._v(" "),a("h2",{attrs:{id:"typ-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typ-1"}},[e._v("#")]),e._v(" Typ 1")]),e._v(" "),a("h4",{attrs:{id:"absender-anfordern"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#absender-anfordern"}},[e._v("#")]),e._v(" Absender anfordern")]),e._v(" "),a("p",[e._v("Diese Anfrage wird vom [Disseminator-Daemon] (#disseminator-daemon) gesendet.")]),e._v(" "),a("h4",{attrs:{id:"daten-anfordern"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daten-anfordern"}},[e._v("#")]),e._v(" Daten anfordern")]),e._v(" "),a("p",[e._v("Hashes der Transaktion und des Blocks.")]),e._v(" "),a("h4",{attrs:{id:"bearbeitung-der-anfrage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bearbeitung-der-anfrage"}},[e._v("#")]),e._v(" Bearbeitung der Anfrage")]),e._v(" "),a("p",[e._v("Der Block-Hash wird der Block-Warteschlange hinzugefügt.")]),e._v(" "),a("p",[e._v("Analysiert und verifiziert die Transaktions-Hashes und wählt Transaktionen aus, die noch nicht auf dem Knoten erschienen sind.")]),e._v(" "),a("h4",{attrs:{id:"antwort"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort"}},[e._v("#")]),e._v(" Antwort")]),e._v(" "),a("p",[e._v("Nein. Nach der Verarbeitung der Anfrage wird eine "),a("a",{attrs:{href:"#type-2"}},[e._v("Typ 2")]),e._v("-Anfrage ausgegeben.")]),e._v(" "),a("h2",{attrs:{id:"typ-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typ-2"}},[e._v("#")]),e._v(" Typ 2")]),e._v(" "),a("h4",{attrs:{id:"absender-anfordern-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#absender-anfordern-2"}},[e._v("#")]),e._v(" Absender anfordern")]),e._v(" "),a("p",[e._v("Diese Anfrage wird vom [Disseminator-Daemon] (#disseminator-daemon) gesendet.")]),e._v(" "),a("h4",{attrs:{id:"daten-anfordern-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daten-anfordern-2"}},[e._v("#")]),e._v(" Daten anfordern")]),e._v(" "),a("p",[e._v("Die Transaktionsdaten, einschließlich der Datengröße:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 Bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Größe der Transaktionsdaten in Byte.")])]),e._v(" "),a("li",[a("p",[e._v("Daten (data_size bytes)")])])]),e._v(" "),a("p",[e._v("Die Transaktionsdaten.")]),e._v(" "),a("h4",{attrs:{id:"bearbeitung-der-anfrage-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bearbeitung-der-anfrage-2"}},[e._v("#")]),e._v(" Bearbeitung der Anfrage")]),e._v(" "),a("p",[e._v("Verifiziert die Transaktion und fügt sie der Transaktionswarteschlange hinzu.")]),e._v(" "),a("h4",{attrs:{id:"antwort-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-2"}},[e._v("#")]),e._v(" Antwort")]),e._v(" "),a("p",[e._v("Nein.")]),e._v(" "),a("h2",{attrs:{id:"typ-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typ-4"}},[e._v("#")]),e._v(" Typ 4")]),e._v(" "),a("h4",{attrs:{id:"absender-anfordern-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#absender-anfordern-3"}},[e._v("#")]),e._v(" Absender anfordern")]),e._v(" "),a("p",[e._v("Diese Anfrage wird vom [Bestätigungs-Daemon] (#confirmations-Daemon) gesendet.")]),e._v(" "),a("h4",{attrs:{id:"daten-anfordern-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daten-anfordern-3"}},[e._v("#")]),e._v(" Daten anfordern")]),e._v(" "),a("p",[e._v("Block-ID.")]),e._v(" "),a("h4",{attrs:{id:"antwort-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-3"}},[e._v("#")]),e._v(" Antwort")]),e._v(" "),a("p",[e._v("Hash blockieren.")]),e._v(" "),a("p",[e._v("Gibt "),a("code",[e._v("0")]),e._v(" zurück, wenn kein Block mit dieser ID vorhanden ist.")]),e._v(" "),a("h2",{attrs:{id:"geben-sie-7-ein"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#geben-sie-7-ein"}},[e._v("#")]),e._v(" Geben Sie 7 ein")]),e._v(" "),a("h4",{attrs:{id:"absender-anfordern-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#absender-anfordern-4"}},[e._v("#")]),e._v(" Absender anfordern")]),e._v(" "),a("p",[e._v("Diese Anfrage wird vom [BlockCollection-Daemon] (#blockcollection-Daemon) gesendet.")]),e._v(" "),a("h4",{attrs:{id:"daten-anfordern-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daten-anfordern-4"}},[e._v("#")]),e._v(" Daten anfordern")]),e._v(" "),a("p",[e._v("Block-ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 Bytes)")])]),e._v(" "),a("h4",{attrs:{id:"antwort-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-4"}},[e._v("#")]),e._v(" Antwort")]),e._v(" "),a("p",[e._v("Die Blockdaten, einschließlich der Datengröße.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 Bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Größe der Blockdaten in Bytes.")])]),e._v(" "),a("li",[a("p",[e._v("Daten (data_size bytes)")])])]),e._v(" "),a("p",[e._v("Die Blockdaten.")]),e._v(" "),a("p",[e._v("Die Verbindung wird geschlossen, wenn kein Block mit dieser ID vorhanden ist.")]),e._v(" "),a("h2",{attrs:{id:"geben-sie-10-ein"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#geben-sie-10-ein"}},[e._v("#")]),e._v(" Geben Sie 10 ein")]),e._v(" "),a("h4",{attrs:{id:"absender-anfordern-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#absender-anfordern-5"}},[e._v("#")]),e._v(" Absender anfordern")]),e._v(" "),a("p",[e._v("Diese Anfrage wird vom [BlockCollection-Daemon] (#blockcollection-Daemon) gesendet.")]),e._v(" "),a("h4",{attrs:{id:"daten-anfordern-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daten-anfordern-5"}},[e._v("#")]),e._v(" Daten anfordern")]),e._v(" "),a("p",[e._v("Nein.")]),e._v(" "),a("h4",{attrs:{id:"antwort-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-5"}},[e._v("#")]),e._v(" Antwort")]),e._v(" "),a("p",[e._v("Block-ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 Bytes)")])])])}),[],!1,null,null,null);n.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{404:function(e,n,a){"use strict";a.r(n);var r=a(51),t=Object(r.a)({},(function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"damon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#damon"}},[e._v("#")]),e._v(" Dämon")]),e._v(" "),a("p",[e._v("In diesem Abschnitt beschreiben wir aus technischer Sicht, wie IBax-Knoten miteinander interagieren.")]),e._v(" "),a("h2",{attrs:{id:"uber-den-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uber-den-server-daemon"}},[e._v("#")]),e._v(" Über den Server-Daemon")]),e._v(" "),a("p",[e._v("Der Server-Daemon muss auf jedem Netzwerkknoten laufen, der verschiedene Serverfunktionen ausführt und das Blockchain-Protokoll von IBax unterstützt. Im Blockchain-Netzwerk verteilt der Daemon Blöcke und Transaktionen, generiert neue Blöcke und verifiziert empfangene Blöcke und Transaktionen und kann das Fork-Problem vermeiden.")]),e._v(" "),a("h3",{attrs:{id:"honor-knoten-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-knoten-daemon"}},[e._v("#")]),e._v(" Honor-Knoten-Daemon")]),e._v(" "),a("p",[e._v("Ein Ehrenknoten führt die folgenden Server-Daemons aus:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-Daemon"}},[e._v("BlockGenerator-Daemon")])]),e._v(" "),a("p",[e._v("Generieren neuer Blöcke.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-Daemon"}},[e._v("BlockCollection-Daemon")])]),e._v(" "),a("p",[e._v("Herunterladen neuer Blöcke von anderen Knoten.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-Daemon"}},[e._v("Bestätigungs-Daemon")])]),e._v(" "),a("p",[e._v("Bestätigen, dass Blöcke auf dem Knoten auch auf den meisten anderen Knoten vorhanden sind.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-Daemon"}},[e._v("Disseminator-Daemon")])]),e._v(" "),a("p",[e._v("Verteilen von Transaktionen und Blöcken an andere Ehrenknoten.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks-Daemon")]),e._v(" "),a("p",[e._v("Blöcke in der Warteschlange, die Blöcke von anderen Knoten enthält.")]),e._v(" "),a("p",[e._v("Die Blockverarbeitungslogik ist die gleiche wie bei "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection-Daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx-Daemon")]),e._v(" "),a("p",[e._v("Überprüfung der Transaktionen in der Warteschlange.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler-Daemon")]),e._v(" "),a("p",[e._v("Laufende Verträge wie geplant.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-knoten-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-knoten-daemon"}},[e._v("#")]),e._v(" Guardian-Knoten-Daemon")]),e._v(" "),a("p",[e._v("Ein Wächterknoten führt die folgenden Server-Daemons aus:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-Daemon"}},[e._v("BlockCollection-Daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-Daemon"}},[e._v("Bestätigungs-Daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-Daemon"}},[e._v("Disseminator-Daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Planer")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection-Daemon")]),e._v(" "),a("p",[e._v("Dieser Daemon lädt Blöcke herunter und synchronisiert die Blockchain mit anderen Netzwerkknoten.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronisation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronisation"}},[e._v("#")]),e._v(" Blockchain-Synchronisation")]),e._v(" "),a("p",[e._v("Dieser Daemon synchronisiert die Blockchain, indem er die maximale Blockhöhe im Blockchain-Netzwerk bestimmt, neue Blöcke anfordert und das Fork-Problem in der Blockchain löst.")]),e._v(" "),a("h4",{attrs:{id:"nach-blockchain-updates-suchen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nach-blockchain-updates-suchen"}},[e._v("#")]),e._v(" Nach Blockchain-Updates suchen")]),e._v(" "),a("p",[e._v("Dieser Daemon sendet Anforderungen von der aktuellen Block-ID an alle Ehrenknoten.")]),e._v(" "),a("p",[e._v("Wenn die aktuelle Block-ID des Knotens, auf dem der Daemon läuft, kleiner ist als die aktuelle Block-ID eines beliebigen Ehrenknotens, gilt der Blockchain-Netzwerkknoten als veraltet.")]),e._v(" "),a("h4",{attrs:{id:"neue-blocke-herunterladen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#neue-blocke-herunterladen"}},[e._v("#")]),e._v(" Neue Blöcke herunterladen")]),e._v(" "),a("p",[e._v("Der Knoten, der die größte aktuelle Blockhöhe zurückgibt, wird als letzter Knoten betrachtet.\nDer Daemon lädt alle unbekannten Blöcke herunter.")]),e._v(" "),a("h4",{attrs:{id:"losung-des-fork-problems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#losung-des-fork-problems"}},[e._v("#")]),e._v(" Lösung des Fork-Problems")]),e._v(" "),a("p",[e._v("Wenn ein Fork in der Blockchain erkannt wird, verschiebt der Daemon den Fork rückwärts, indem er alle Blöcke in einen gemeinsamen übergeordneten Block herunterlädt.\nWenn der gemeinsame übergeordnete Block gefunden wird, wird ein Blockchain-Rollback auf dem Knoten durchgeführt, auf dem der Daemon ausgeführt wird, und der richtige Block wird zur Blockchain hinzugefügt, bis der neueste enthalten ist.")]),e._v(" "),a("h3",{attrs:{id:"tabellen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tabellen"}},[e._v("#")]),e._v(" Tabellen")]),e._v(" "),a("p",[e._v("Der BlocksCollection-Daemon verwendet die folgenden Tabellen:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("Transaktionen")]),e._v(" "),a("li",[e._v("Transaktionsstatus")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"anfrage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage"}},[e._v("#")]),e._v(" Anfrage")]),e._v(" "),a("p",[e._v("Der BlockCollection-Daemon sendet die folgenden Anforderungen an andere Daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" zeigt auf die größte Block-ID unter allen Ehrenknoten.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" zeigt auf die Daten mit der größten Block-ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-damon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-damon"}},[e._v("#")]),e._v(" BlockGenerator-Dämon")]),e._v(" "),a("p",[e._v("Der BlockGenerator-Daemon generiert neue Blöcke.")]),e._v(" "),a("h3",{attrs:{id:"vorabuberprufung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vorabuberprufung"}},[e._v("#")]),e._v(" Vorabüberprüfung")]),e._v(" "),a("p",[e._v("Der BlockGenerator-Daemon analysiert die neuesten Blöcke in der Blockchain, um neue Blockgenerierungspläne zu erstellen.")]),e._v(" "),a("p",[e._v("Wenn die folgenden Bedingungen erfüllt sind, kann ein neuer Block generiert werden:")]),e._v(" "),a("ul",[a("li",[e._v("Der Knoten, der den letzten Block generiert hat, befindet sich in einem Knoten innerhalb der Ehrenknotenliste und führt den Daemon aus.")]),e._v(" "),a("li",[e._v("Die kürzeste Zeit, seit der letzte nicht verifizierte Block generiert wurde.")])]),e._v(" "),a("h3",{attrs:{id:"blockgenerierung"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerierung"}},[e._v("#")]),e._v(" Blockgenerierung")]),e._v(" "),a("p",[e._v("Ein vom Daemon generierter neuer Block enthält alle neuen Transaktionen, die vom "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator-Daemon")]),e._v(" anderer Knoten empfangen oder von dem Knoten generiert werden können, der den Daemon ausführt. Der generierte Block wird in der Node-Datenbank gespeichert.")]),e._v(" "),a("h3",{attrs:{id:"tabellen-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tabellen-2"}},[e._v("#")]),e._v(" Tabellen")]),e._v(" "),a("p",[e._v("Der BlockGenerator-Daemon verwendet die folgenden Tabellen:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (speichert neue Blöcke)")]),e._v(" "),a("li",[e._v("Transaktionen")]),e._v(" "),a("li",[e._v("Transaktionsstatus")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"anfrage-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-2"}},[e._v("#")]),e._v(" Anfrage")]),e._v(" "),a("p",[e._v("Der BlockGenerator-Daemon stellt keine Anfrage an andere Daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator-Daemon")]),e._v(" "),a("p",[e._v("Der Disseminator-Daemon sendet Transaktionen und Blöcke an alle Ehrenknoten.")]),e._v(" "),a("h3",{attrs:{id:"guardian-knoten"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-knoten"}},[e._v("#")]),e._v(" Guardian-Knoten")]),e._v(" "),a("p",[e._v("Bei der Arbeit an einem Wächterknoten sendet der Daemon von seinem Knoten generierte Transaktionen an alle Ehrenknoten.")]),e._v(" "),a("h3",{attrs:{id:"ehrenknoten"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ehrenknoten"}},[e._v("#")]),e._v(" Ehrenknoten")]),e._v(" "),a("p",[e._v("Bei der Arbeit an einem Ehrenknoten sendet der Daemon generierte Blöcke und Transaktions-Hashes an alle Ehrenknoten.")]),e._v(" "),a("p",[e._v("Dann antwortet der Ehrenknoten auf Transaktionsanfragen, die ihm unbekannt sind. Als Antwort sendet der Daemon die vollständigen Transaktionsdaten.")]),e._v(" "),a("h3",{attrs:{id:"tabellen-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tabellen-3"}},[e._v("#")]),e._v(" Tabellen")]),e._v(" "),a("p",[e._v("Der Disseminator-Daemon verwendet die folgenden Tabellen:")]),e._v(" "),a("ul",[a("li",[e._v("Transaktionen")])]),e._v(" "),a("h3",{attrs:{id:"anfrage-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-3"}},[e._v("#")]),e._v(" Anfrage")]),e._v(" "),a("p",[e._v("Der Disseminator-Daemon sendet die folgenden Anforderungen an andere Daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Senden Sie Transaktionen und Block-Hashes an den Ehrenknoten.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Transaktionsdaten vom Ehrenknoten empfangen.")])]),e._v(" "),a("h2",{attrs:{id:"bestatigungs-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bestatigungs-daemon"}},[e._v("#")]),e._v(" Bestätigungs-Daemon")]),e._v(" "),a("p",[e._v("Der Confirmations-Daemon prüft, ob alle Blöcke in seinem Knoten auf den meisten anderen Knoten vorhanden sind.")]),e._v(" "),a("h3",{attrs:{id:"bestatigung-blockieren"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bestatigung-blockieren"}},[e._v("#")]),e._v(" Bestätigung blockieren")]),e._v(" "),a("p",[e._v("Ein von mehreren Knoten im Netzwerk bestätigter Block wird als bestätigter Block betrachtet.")]),e._v(" "),a("p",[e._v("Der Daemon bestätigt nacheinander alle Blöcke, beginnend mit dem ersten, der derzeit nicht in der Datenbank bestätigt ist.")]),e._v(" "),a("p",[e._v("Jeder Block wird wie folgt bestätigt:")]),e._v(" "),a("ul",[a("li",[e._v("Senden einer Anfrage, die die ID des zu bestätigenden Blocks enthält, an alle Ehrenknoten.")]),e._v(" "),a("li",[e._v("Alle Ehrenknoten reagieren auf den Block-Hash.")]),e._v(" "),a("li",[e._v("Wenn der geantwortete Hash mit dem Hash des Blocks auf dem Daemon-Knoten übereinstimmt, wird der Wert des Bestätigungszählers erhöht. Falls nicht, wird der Löschzählerwert erhöht.")])]),e._v(" "),a("h3",{attrs:{id:"tabellen-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tabellen-4"}},[e._v("#")]),e._v(" Tabellen")]),e._v(" "),a("p",[e._v("Der Confirmations-Daemon verwendet die folgenden Tabellen:")]),e._v(" "),a("ul",[a("li",[e._v("Bestätigung")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"anfrage-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfrage-4"}},[e._v("#")]),e._v(" Anfrage")]),e._v(" "),a("p",[e._v("Der Confirmations-Daemon sendet die folgenden Anfragen an andere Daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Fordert Block-Hashes vom Honor-Knoten an.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-dienstprotokoll"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-dienstprotokoll"}},[e._v("#")]),e._v(" TCP-Dienstprotokoll")]),e._v(" "),a("p",[e._v("Das TCP-Dienstprotokoll arbeitet auf Ehrenknoten und Wächterknoten, die das Binärprotokoll auf TCP für Anfragen von den Daemons BlocksCollection, Disseminator und Confirmation verwenden.")]),e._v(" "),a("h2",{attrs:{id:"anfragetyp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#anfragetyp"}},[e._v("#")]),e._v(" Anfragetyp")]),e._v(" "),a("p",[e._v("Jede Anfrage hat einen Typ, der durch die ersten zwei Bytes der Anfrage definiert ist.")]),e._v(" "),a("h2",{attrs:{id:"typ-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typ-1"}},[e._v("#")]),e._v(" Typ 1")]),e._v(" "),a("h4",{attrs:{id:"absender-anfordern"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#absender-anfordern"}},[e._v("#")]),e._v(" Absender anfordern")]),e._v(" "),a("p",[e._v("Diese Anfrage wird vom [Disseminator-Daemon] (#disseminator-daemon) gesendet.")]),e._v(" "),a("h4",{attrs:{id:"daten-anfordern"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daten-anfordern"}},[e._v("#")]),e._v(" Daten anfordern")]),e._v(" "),a("p",[e._v("Hashes der Transaktion und des Blocks.")]),e._v(" "),a("h4",{attrs:{id:"bearbeitung-der-anfrage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bearbeitung-der-anfrage"}},[e._v("#")]),e._v(" Bearbeitung der Anfrage")]),e._v(" "),a("p",[e._v("Der Block-Hash wird der Block-Warteschlange hinzugefügt.")]),e._v(" "),a("p",[e._v("Analysiert und verifiziert die Transaktions-Hashes und wählt Transaktionen aus, die noch nicht auf dem Knoten erschienen sind.")]),e._v(" "),a("h4",{attrs:{id:"antwort"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort"}},[e._v("#")]),e._v(" Antwort")]),e._v(" "),a("p",[e._v("Nein. Nach der Verarbeitung der Anfrage wird eine "),a("a",{attrs:{href:"#type-2"}},[e._v("Typ 2")]),e._v("-Anfrage ausgegeben.")]),e._v(" "),a("h2",{attrs:{id:"typ-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typ-2"}},[e._v("#")]),e._v(" Typ 2")]),e._v(" "),a("h4",{attrs:{id:"absender-anfordern-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#absender-anfordern-2"}},[e._v("#")]),e._v(" Absender anfordern")]),e._v(" "),a("p",[e._v("Diese Anfrage wird vom [Disseminator-Daemon] (#disseminator-daemon) gesendet.")]),e._v(" "),a("h4",{attrs:{id:"daten-anfordern-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daten-anfordern-2"}},[e._v("#")]),e._v(" Daten anfordern")]),e._v(" "),a("p",[e._v("Die Transaktionsdaten, einschließlich der Datengröße:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 Bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Größe der Transaktionsdaten in Byte.")])]),e._v(" "),a("li",[a("p",[e._v("Daten (data_size bytes)")])])]),e._v(" "),a("p",[e._v("Die Transaktionsdaten.")]),e._v(" "),a("h4",{attrs:{id:"bearbeitung-der-anfrage-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bearbeitung-der-anfrage-2"}},[e._v("#")]),e._v(" Bearbeitung der Anfrage")]),e._v(" "),a("p",[e._v("Verifiziert die Transaktion und fügt sie der Transaktionswarteschlange hinzu.")]),e._v(" "),a("h4",{attrs:{id:"antwort-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-2"}},[e._v("#")]),e._v(" Antwort")]),e._v(" "),a("p",[e._v("Nein.")]),e._v(" "),a("h2",{attrs:{id:"typ-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#typ-4"}},[e._v("#")]),e._v(" Typ 4")]),e._v(" "),a("h4",{attrs:{id:"absender-anfordern-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#absender-anfordern-3"}},[e._v("#")]),e._v(" Absender anfordern")]),e._v(" "),a("p",[e._v("Diese Anfrage wird vom [Bestätigungs-Daemon] (#confirmations-Daemon) gesendet.")]),e._v(" "),a("h4",{attrs:{id:"daten-anfordern-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daten-anfordern-3"}},[e._v("#")]),e._v(" Daten anfordern")]),e._v(" "),a("p",[e._v("Block-ID.")]),e._v(" "),a("h4",{attrs:{id:"antwort-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-3"}},[e._v("#")]),e._v(" Antwort")]),e._v(" "),a("p",[e._v("Hash blockieren.")]),e._v(" "),a("p",[e._v("Gibt "),a("code",[e._v("0")]),e._v(" zurück, wenn kein Block mit dieser ID vorhanden ist.")]),e._v(" "),a("h2",{attrs:{id:"geben-sie-7-ein"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#geben-sie-7-ein"}},[e._v("#")]),e._v(" Geben Sie 7 ein")]),e._v(" "),a("h4",{attrs:{id:"absender-anfordern-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#absender-anfordern-4"}},[e._v("#")]),e._v(" Absender anfordern")]),e._v(" "),a("p",[e._v("Diese Anfrage wird vom [BlockCollection-Daemon] (#blockcollection-Daemon) gesendet.")]),e._v(" "),a("h4",{attrs:{id:"daten-anfordern-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daten-anfordern-4"}},[e._v("#")]),e._v(" Daten anfordern")]),e._v(" "),a("p",[e._v("Block-ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 Bytes)")])]),e._v(" "),a("h4",{attrs:{id:"antwort-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-4"}},[e._v("#")]),e._v(" Antwort")]),e._v(" "),a("p",[e._v("Die Blockdaten, einschließlich der Datengröße.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 Bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Größe der Blockdaten in Bytes.")])]),e._v(" "),a("li",[a("p",[e._v("Daten (data_size bytes)")])])]),e._v(" "),a("p",[e._v("Die Blockdaten.")]),e._v(" "),a("p",[e._v("Die Verbindung wird geschlossen, wenn kein Block mit dieser ID vorhanden ist.")]),e._v(" "),a("h2",{attrs:{id:"geben-sie-10-ein"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#geben-sie-10-ein"}},[e._v("#")]),e._v(" Geben Sie 10 ein")]),e._v(" "),a("h4",{attrs:{id:"absender-anfordern-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#absender-anfordern-5"}},[e._v("#")]),e._v(" Absender anfordern")]),e._v(" "),a("p",[e._v("Diese Anfrage wird vom [BlockCollection-Daemon] (#blockcollection-Daemon) gesendet.")]),e._v(" "),a("h4",{attrs:{id:"daten-anfordern-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daten-anfordern-5"}},[e._v("#")]),e._v(" Daten anfordern")]),e._v(" "),a("p",[e._v("Nein.")]),e._v(" "),a("h4",{attrs:{id:"antwort-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#antwort-5"}},[e._v("#")]),e._v(" Antwort")]),e._v(" "),a("p",[e._v("Block-ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 Bytes)")])])])}),[],!1,null,null,null);n.default=t.exports}}]); \ No newline at end of file diff --git a/assets/js/26.4d190cda.js b/assets/js/26.57296ca7.js similarity index 99% rename from assets/js/26.4d190cda.js rename to assets/js/26.57296ca7.js index 1d06de7..9081614 100644 --- a/assets/js/26.4d190cda.js +++ b/assets/js/26.57296ca7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{404:function(e,a,t){"use strict";t.r(a);var r=t(51),n=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"intelligente-vertrage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#intelligente-vertrage"}},[e._v("#")]),e._v(" Intelligente Verträge")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Vertragsstruktur"}},[e._v("Vertragsstruktur")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Datenabschnitt"}},[e._v("Datenabschnitt")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#abschnitt-bedingungen"}},[e._v("Abschnitt Bedingungen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#aktionsabschnitt"}},[e._v("Aktionsabschnitt")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#variablen"}},[e._v("Variablen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#verschachtelte-vertr%C3%A4ge"}},[e._v("Verschachtelte Verträge")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#datei-upload"}},[e._v("Datei-Upload")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#abfragen-im-json-format"}},[e._v("Abfragen im JSON-Format")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#abfragen-mit-datums-und-zeitoperationen"}},[e._v("Abfragen mit Datums- und Zeitoperationen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#nadelvertragssprache"}},[e._v("Nadelvertragssprache")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#basiselemente-und-struktur"}},[e._v("Basiselemente und Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#datentypen-und-variablen"}},[e._v("Datentypen und Variablen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#reihe"}},[e._v("Reihe")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#If-und-While-Anweisungen"}},[e._v("If- und While-Anweisungen")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Funktionen"}},[e._v("Funktionen")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Funktionsdeklaration"}},[e._v("Funktionsdeklaration")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#parameter-variabler-l%C3%A4nge"}},[e._v("Parameter variabler Länge")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#optionale-parameter"}},[e._v("Optionale Parameter")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#klassifizierung-der-nadelfunktionen"}},[e._v("Klassifizierung der Nadelfunktionen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#referenz-der-Nadelfunktionen"}},[e._v("Referenz der Nadelfunktionen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbsuche"}},[e._v("DBSuche")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbreihe"}},[e._v("DBReihe")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbw%C3%A4hlen-sie-metriken-aus"}},[e._v("DBWählen Sie Metriken aus")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#werdengeschichte"}},[e._v("WerdenGeschichte")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#verlaufszeile-erhalten"}},[e._v("Verlaufszeile erhalten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#spaltentyp-erhalten"}},[e._v("Spaltentyp erhalten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#daten-abrufen-von-XLSX"}},[e._v("Daten abrufen vonXLSX")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#reihe-bekommen-countXLSX"}},[e._v("Reihe bekommen CountXLSX")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#block-bekommen"}},[e._v("Block bekommen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbeinf%C3%BCgung"}},[e._v("DBEinfügung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbaktualisieren"}},[e._v("DBAktualisieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbaktualisieren-ext"}},[e._v("DBAktualisierenExt")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Spalte-l%C3%B6schen"}},[e._v("Spalte löschen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Tabelle-l%C3%B6schen"}},[e._v("Tabelle löschen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#append"}},[e._v("Anhängen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#beitreten"}},[e._v("Beitreten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#teilt"}},[e._v("Teilt")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#len"}},[e._v("Len")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#reihe"}},[e._v("Reihe")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#one"}},[e._v("One")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#kartenschl%C3%BCssel-erhalten"}},[e._v("Kartenschlüssel erhalten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#sortierte-schl%C3%BCssel"}},[e._v("Sortierte Schlüssel")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#anrufvertrag"}},[e._v("Anrufvertrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Vertragszugang"}},[e._v("Vertragszugang")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vertragsbedingungen"}},[e._v("Vertragsbedingungen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#eval-zustand"}},[e._v("Eval Zustand")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vertrag-erhalten-von-ID"}},[e._v("Vertrag erhalten von ID")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vertrag-namentlich-erhalten"}},[e._v("Vertrag namentlich erhalten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#rollenzugriff"}},[e._v("Rollenzugriff")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#transaktionsinfo"}},[e._v("Transaktionsinfo")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Wurf"}},[e._v("Wurf")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#bedingung-validieren"}},[e._v("Bedingung validieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#adresse-an-ID"}},[e._v("Adresse an ID")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ID-an-adresse"}},[e._v("ID an Adresse")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#bub-zu-ID"}},[e._v("Pub zu ID")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dekodieren-base64"}},[e._v("DekodierenBase64")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#kodieren-base64"}},[e._v("KodierenBase64")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Schweben"}},[e._v("Schweben")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#hextobytes"}},[e._v("HexToBytes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Geld-formatieren"}},[e._v("Geld formatieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#zuf%C3%A4llig"}},[e._v("Zufällig")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#int"}},[e._v("Int")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#hash"}},[e._v("Hash")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#sha256"}},[e._v("Sha256")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#str"}},[e._v("Str")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#jsonencode"}},[e._v("JSONEncode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#jsonencodeindent"}},[e._v("JSONEncodeIndent")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#jsondecode"}},[e._v("JSONDecode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#hasprefix"}},[e._v("HasPrefix")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#enth%C3%A4lt"}},[e._v("Enthält")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ersetzen"}},[e._v("Ersetzen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#gr%C3%B6%C3%9Fe"}},[e._v("Größe")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#sprintf"}},[e._v("Sprintf")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#substr"}},[e._v("Substr")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#zu-senken"}},[e._v("Zu senken")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#nachOber"}},[e._v("NachOber")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#trimspace"}},[e._v("TrimSpace")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#boden"}},[e._v("Boden")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#protokoll"}},[e._v("Protokoll")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#protokoll10"}},[e._v("Protokoll10")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#puh"}},[e._v("Puh")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#runden"}},[e._v("Runden")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#quadrat"}},[e._v("Quadrat")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#zeichenfolge-zu-bytes"}},[e._v("Zeichenfolge zu Bytes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#byte-zu-zeichenfolge"}},[e._v("Byte zu Zeichenfolge")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#sysparamstring"}},[e._v("SysParamString")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#sysparamint"}},[e._v("SysParamInt")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#DBAktualisierenSysParam"}},[e._v("DBAktualisierenSysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#benachrichtigungen-aktualisieren"}},[e._v("Benachrichtigungen aktualisieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#UpdateRoles-Benachrichtigungen"}},[e._v("UpdateRoles-Benachrichtigungen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#httprequest"}},[e._v("HTTPRequest")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#httppostjson"}},[e._v("HTTPPostJSON")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Blockzeit"}},[e._v("Blockzeit")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Terminzeit"}},[e._v("Terminzeit")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Unix-DateTime"}},[e._v("Unix-DateTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#OBS-erstellen"}},[e._v("OBS erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#WerdenOBSList"}},[e._v("WerdenOBSList")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#LaufOBS"}},[e._v("LaufOBS")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#HaltOBS"}},[e._v("HaltOBS")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#EntfernenOBS"}},[e._v("EntfernenOBS")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Systemvertr%C3%A4ge"}},[e._v("Systemverträge")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Neues-%C3%96kosystem"}},[e._v("Neues Ökosystem")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#%C3%B6kosystemname-bearbeiten"}},[e._v("Ökosystemname bearbeiten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Neuer-vertrag"}},[e._v("Neuer Vertrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Vertrag-bearbeiten"}},[e._v("Vertrag bearbeiten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Brieftasche-binden"}},[e._v("Brieftasche binden")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Wallet-entbinden"}},[e._v("Wallet entbinden")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Neuer-Parameter"}},[e._v("Neuer Parameter")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Parameter-bearbeiten"}},[e._v("Parameter bearbeiten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Neues-Men%C3%BC"}},[e._v("NeuesMenü")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Men%C3%BC-bearbeiten"}},[e._v("Menü bearbeiten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Men%C3%BC-anh%C3%A4ngen"}},[e._v("Menü anhängen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Neue-Seite"}},[e._v("Neue Seite")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Seite-bearbeiten"}},[e._v("Seite bearbeiten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Seite-anh%C3%A4ngen"}},[e._v("Seite anhängen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#NeuerBlock"}},[e._v("NeuerBlock")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Block-bearbeiten"}},[e._v("Block bearbeiten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#NeueTabelle"}},[e._v("NeueTabelle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Tabelle-bearbeiten"}},[e._v("Tabelle bearbeiten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#neueSpalte"}},[e._v("NeueSpalte")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Spalte-bearbeiten"}},[e._v("Spalte bearbeiten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#NeuLang"}},[e._v("NeuLang")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#BearbeitenLang"}},[e._v("BearbeitenLang")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Importieren"}},[e._v("Importieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ImportHochladen"}},[e._v("ImportHochladen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#newappparam"}},[e._v("NewAppParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#bearbeitenappparam"}},[e._v("BearbeitenAppParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Neuer-verz%C3%B6gerter-Vertrag"}},[e._v("Neuer verzögerter Vertrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Versp%C3%A4teten-Vertrag-bearbeiten"}},[e._v("Verspäteten Vertrag bearbeiten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Bin%C3%A4r-hochladen"}},[e._v("Binär hochladen")])])])])]),e._v(" "),t("p",[e._v("Smart Contract (im Folgenden Vertrag genannt) ist eines der Grundelemente einer Anwendung. Die Implementierung eines Vertrages auf einer Seite durch den Benutzer ist in der Regel ein einmaliger Vorgang, dessen Zweck es ist, einen Datenbankeintrag zu aktualisieren oder zu erstellen. Alle Datenoperationen einer Anwendung bilden ein Vertragssystem, und diese Verträge interagieren miteinander durch Datenbank- oder Vertragsinhaltsfunktionen.")]),e._v(" "),t("h2",{attrs:{id:"vertragsstruktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertragsstruktur"}},[e._v("#")]),e._v(" Vertragsstruktur")]),e._v(" "),t("p",[e._v("Verwenden Sie das Schlüsselwort "),t("code",[e._v("vertrag")]),e._v(", um einen Vertrag zu deklarieren, gefolgt vom Vertragsnamen, und der Vertragsinhalt muss in geschweiften Klammern eingeschlossen sein. Ein Vertrag besteht im Wesentlichen aus drei Teilen:")]),e._v(" "),t("ol",[t("li",[t("p",[t("strong",[e._v("Daten")]),e._v(" – "),t("a",{attrs:{href:"#data-section"}},[e._v("data section")]),e._v(", wobei die Variablen der Eingabedaten deklariert werden, einschließlich Variablenname und Variablentyp;")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("conditions")]),e._v(" – "),t("a",{attrs:{href:"#conditions-section"}},[e._v("conditions section")]),e._v(", wo die Korrektheit der Daten validiert wird;")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("action")]),e._v(" – "),t("a",{attrs:{href:"#action-section"}},[e._v("action section")]),e._v(", wobei die Datenmanipulationen definiert werden.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("contract MyContract {\n data {\n FromId int\n ToId int\n Amount money\n }\n func conditions {\n ...\n }\n func action {\n ...\n }\n}\n")])])]),t("h3",{attrs:{id:"datenbereich"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datenbereich"}},[e._v("#")]),e._v(" Datenbereich")]),e._v(" "),t("p",[e._v("Der Abschnitt "),t("code",[e._v("data")]),e._v(" beschreibt die Vertragsdateneingaben und die empfangenen Formularparameter.")]),e._v(" "),t("p",[e._v("Die Struktur jeder Zeile nach Sequenz:")]),e._v(" "),t("ul",[t("li",[e._v("Variablenname - empfängt nur Variablen, keine Arrays;")]),e._v(" "),t("li",[e._v("Variablendatentyp - der "),t("a",{attrs:{href:"#Datentypen-und-Variablen"}},[e._v("date type")]),e._v(" der Variablen;")]),e._v(" "),t("li",[e._v("optional - ein optionaler Parameter, der das Formularelement nicht ausfüllen muss.")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('contract my {\n data {\n Name string\n RequestId int\n Photo file "optional"\n Amount money\n Private bytes\n }\n ...\n}\n')])])]),t("h3",{attrs:{id:"abschnitt-bedingungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#abschnitt-bedingungen"}},[e._v("#")]),e._v(" Abschnitt Bedingungen")]),e._v(" "),t("p",[e._v("Der Abschnitt "),t("code",[e._v("condition")]),e._v(" beschreibt die Validierung der empfangenen Daten.")]),e._v(" "),t("p",[e._v("Die folgenden Befehle werden für Fehlerwarnungen verwendet: schwerwiegende Fehler "),t("code",[e._v("error")]),e._v(", warnende Fehler "),t("code",[e._v("warning")]),e._v(", suggestive Fehler "),t("code",[e._v("info")]),e._v(". Diese drei Befehle erzeugen einen Fehler, der die Ausführung von Verträgen beendet, und jeder Fehler druckt eine andere Art von Fehlerprotokollinformationen. Zum Beispiel:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('if fuel == 0 {\n error "fuel cannot be zero!"\n}\nif money < limit {\n warning Sprintf("You don\'t have enough money: %v <%v", money, limit)\n}\nif idexist > 0 {\n info "You have already been registered"\n}\n')])])]),t("h3",{attrs:{id:"aktionsabschnitt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#aktionsabschnitt"}},[e._v("#")]),e._v(" Aktionsabschnitt")]),e._v(" "),t("p",[e._v("Der Abschnitt "),t("code",[e._v("action")]),e._v(" beschreibt den Hauptcode des Vertrags, der andere Daten abruft und die Ergebniswerte in Tabellen aufzeichnet. Zum Beispiel:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('action {\nDBUpdate("keys", $key_id, {"-amount": $amount})\nDBUpdate("keys", $recipient, {"+amount": $amount, "pub": $Pub})\n}\n')])])]),t("h2",{attrs:{id:"variablen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#variablen"}},[e._v("#")]),e._v(" Variablen")]),e._v(" "),t("p",[e._v("Im Datenabschnitt deklarierte Variablen werden über das "),t("code",[e._v("$")]),e._v("-Symbol gefolgt vom Variablennamen an andere Vertragsabschnitte übergeben. Das Symbol „$“ kann auch verwendet werden, um andere Variablen zu deklarieren, die sich nicht im Datenabschnitt befinden und als globale Variablen dieses Vertrags und aller Verträge gelten, in die dieser Vertrag verschachtelt ist.")]),e._v(" "),t("p",[e._v("In Verträgen können vordefinierte Variablen verwendet werden, die Transaktionsdaten enthalten, die den Vertrag aufgerufen haben:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("$time")]),e._v(" - Transaktionszeitstempel;")]),e._v(" "),t("li",[t("code",[e._v("$ecosystem_id")]),e._v(" - Ökosystem-ID;")]),e._v(" "),t("li",[t("code",[e._v("$block")]),e._v(" - ID des Blocks, der die Transaktion enthält;")]),e._v(" "),t("li",[t("code",[e._v("$key_id")]),e._v(" - Adresse des Kontos, das die aktuelle Transaktion unterzeichnet hat;")]),e._v(" "),t("li",[t("code",[e._v("$type")]),e._v(" - Vertrags-ID in der virtuellen Maschine;")]),e._v(" "),t("li",[t("code",[e._v("$block_key_id")]),e._v(" - Kontoadresse des Knotens, der den Block erzeugt hat;")]),e._v(" "),t("li",[t("code",[e._v("$block_time")]),e._v(" - Zeitstempel der Blockgenerierung;")]),e._v(" "),t("li",[t("code",[e._v("$original_contract")]),e._v(" -Name des Vertrags, der die Transaktion ursprünglich verarbeitet hat. Dies bedeutet, dass der Vertrag während der Transaktionsvalidierung aufgerufen wird, wenn die Variable eine leere Zeichenfolge ist. Um zu prüfen, ob der Vertrag von einem anderen Vertrag oder direkt von der Transaktion aufgerufen wird, müssen Sie die Werte von $original_contract und $this_contract vergleichen. Das bedeutet, dass der Vertrag von der Transaktion aufgerufen wird, wenn sie gleich sind;")]),e._v(" "),t("li",[t("code",[e._v("$this_contract")]),e._v(" - Name des aktuell ausgeführten Vertrages;")]),e._v(" "),t("li",[t("code",[e._v("$guest_key")]),e._v(" - Adresse des Gastkontos;")]),e._v(" "),t("li",[t("code",[e._v("$stack")]),e._v(" - Contract Array Stack mit dem Datentyp Array, der alle ausgeführten Contracts enthält. Das erste Element des Arrays stellt den Namen des Vertrags dar, der gerade ausgeführt wird, während das letzte Element den Namen des Vertrags darstellt, der die Transaktion ursprünglich verarbeitet hat;")]),e._v(" "),t("li",[t("code",[e._v("$node_position")]),e._v(" - die Indexnummer des Verifizierungsknotenarrays, wo sich der Block befindet;")]),e._v(" "),t("li",[t("code",[e._v("$txhash")]),e._v(" - Transaktions-Hash;")]),e._v(" "),t("li",[t("code",[e._v("$contract")]),e._v(" - das aktuelle Vertragsstruktur-Array.")])]),e._v(" "),t("p",[e._v("Auf vordefinierte Variablen kann nicht nur in Verträgen zugegriffen werden, sondern auch in Berechtigungsfeldern, die die Zugriffsberechtigungsbedingungen der Anwendungselemente definieren. Bei Verwendung in Berechtigungsfeldern sind vordefinierte Variablen für Blockinformationen immer gleich Null, wie z. B. "),t("code",[e._v("$time")]),e._v(", "),t("code",[e._v("$block")]),e._v(" usw.")]),e._v(" "),t("p",[e._v("Eine vordefinierte Variable "),t("code",[e._v("$result")]),e._v(" wird mit dem Rückgabeergebnis des Vertrags zugewiesen.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('contract my {\n data {\n Name string\n Amount money\n }\n func conditions {\n if $Amount <= 0 {\n error "Amount cannot be 0"\n }\n $ownerId = 1232\n }\n func action {\n var amount money\n amount = $Amount - 10\n DBUpdate("mytable", $ownerId, {name: $Name,amount: amount})\n DBUpdate("mytable2", $ownerId, {amount: 10})\n }\n}\n')])])]),t("h2",{attrs:{id:"verschachtelte-vertrage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#verschachtelte-vertrage"}},[e._v("#")]),e._v(" Verschachtelte Verträge")]),e._v(" "),t("p",[e._v("Sie können Verträge in den Abschnitten „Bedingungen“ und „Aktionen“ des Vertrags verschachteln. Verschachtelte Verträge können direkt aufgerufen werden, und die Vertragsparameter werden in Klammern hinter dem Vertragsnamen angegeben, z. B. "),t("code",[e._v("@1NameContract(Params)")]),e._v(". Sie können auch verschachtelte Verträge mit der Funktion "),t("a",{attrs:{href:"#callcontract"}},[e._v("CallContract")]),e._v(" aufrufen.")]),e._v(" "),t("h2",{attrs:{id:"datei-upload"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datei-upload"}},[e._v("#")]),e._v(" Datei-Upload")]),e._v(" "),t("p",[e._v("Um eine Datei über ein Formular im Format "),t("code",[e._v("multipart/form-data")]),e._v(" hochzuladen, muss der Datentyp des Vertrages "),t("code",[e._v("file")]),e._v(" sein.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("contract Upload {\n data {\n \t File file\n }\n ...\n}\n")])])]),t("p",[e._v("Der Vertrag "),t("a",{attrs:{href:"#uploadbinary"}},[e._v("UploadBinary")]),e._v(" wird zum Hochladen und Speichern von Dateien verwendet. Mit der Logicor-Sprachfunktion "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#binary"}},[e._v("Binary")]),e._v(" im Seiteneditor erhalten Sie den Link zum Herunterladen der Datei.")],1),e._v(" "),t("h2",{attrs:{id:"abfragen-im-json-format"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#abfragen-im-json-format"}},[e._v("#")]),e._v(" Abfragen im JSON-Format")]),e._v(" "),t("p",[e._v("In der Vertragssprache kann als Feldtyp "),t("strong",[e._v("JSON")]),e._v(" angegeben werden. Sie können die Syntax: "),t("strong",[e._v("columnname->fieldname")]),e._v(" verwenden, um das Eingabefeld zu verarbeiten. Der erhaltene Wert wird in "),t("strong",[e._v("columnname.fieldname")]),e._v(" aufgezeichnet. Die obige Syntax kann in Columns,One,Where der Funktion "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" verwendet werden.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var ret map\nvar val str\nvar list array\nret = DBFind("mytable").Columns("myname,doc,doc->ind").WhereId($Id).Row()\nval = ret["doc.ind"]\nval = DBFind("mytable").Columns("myname,doc->type").WhereId($Id).One("doc->type")\nlist = DBFind("mytable").Columns("myname,doc,doc->ind").Where("doc->ind = ?", "101")\nval = DBFind("mytable").WhereId($Id).One("doc->check")\n')])])]),t("h2",{attrs:{id:"abfragen-mit-datums-und-zeitoperationen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#abfragen-mit-datums-und-zeitoperationen"}},[e._v("#")]),e._v(" Abfragen mit Datums- und Zeitoperationen")]),e._v(" "),t("p",[e._v("Sie können das Datum und die Uhrzeit nicht direkt mit den Vertragssprachenfunktionen abfragen und aktualisieren, aber Sie können PostgreSQL-Funktionen und -Features in der Where-Anweisung wie im folgenden Beispiel verwenden. Beispielsweise müssen Sie das Feld date_column mit der aktuellen Uhrzeit vergleichen. Wenn date_column ein Zeitstempeltyp ist, sollte der Ausdruck "),t("code",[e._v("date_column NOW()")]),e._v(" lauten.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Where("to_timestamp(date_column)> NOW()")\nWhere("date_column , >=, <=, ==, !=, ||, &&")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("if val> 10 || id != $block_key_id {\n ...\n} else {\n ...\n}\n")])])]),t("p",[e._v("Der Codeblock wird ausgeführt, wenn die bedingte Anweisung der "),t("strong",[e._v("while")]),e._v("-Schleife wahr ist. "),t("strong",[e._v("break")]),e._v(" bedeutet, die Schleife des Codeblocks zu beenden. Wenn Sie eine Schleife von Anfang an beginnen möchten, verwenden Sie "),t("strong",[e._v("continue")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var i int\nwhile true {\n if i > 100 {\n break\n }\n ...\n if i == 50 {\n continue\n }\n ...\n i = i + 1\n}\n")])])]),t("p",[e._v("Zusätzlich zu bedingten Anweisungen unterstützt Needle auch Standardarithmetikoperationen: "),t("code",[e._v("+")]),e._v(", "),t("code",[e._v("-")]),e._v(", "),t("code",[e._v("*")]),e._v(", "),t("code",[e._v("/")]),e._v(".")]),e._v(" "),t("p",[e._v("Variablen vom Typ String und Bytes können als bedingte Anweisung verwendet werden. Wenn die Länge des Typs größer als Null ist, ist die Bedingung wahr, andernfalls ist sie falsch.")]),e._v(" "),t("h2",{attrs:{id:"funktionen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#funktionen"}},[e._v("#")]),e._v(" Funktionen")]),e._v(" "),t("p",[e._v("Funktionen können einige Operationen mit den vom "),t("a",{attrs:{href:"#data-section"}},[e._v("data section")]),e._v(" eines Vertrags empfangenen Daten ausführen: Daten aus der Datenbank lesen und schreiben, den Werttyp konvertieren und die Interaktion zwischen Verträgen herstellen.")]),e._v(" "),t("h3",{attrs:{id:"funktionsdeklaration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#funktionsdeklaration"}},[e._v("#")]),e._v(" Funktionsdeklaration")]),e._v(" "),t("p",[e._v("Verwenden Sie das Schlüsselwort func, um eine Funktion zu deklarieren, gefolgt vom Namen und der Liste der übergebenen Parameter und ihrer Typen. Alle Parameter sind in Klammern eingeschlossen und durch Kommas getrennt. Nach den Klammern muss der Datentyp des von der Funktion zurückgegebenen Werts deklariert werden. Der Funktionskörper muss in geschweifte Klammern eingeschlossen werden. Wenn die Funktion keine Parameter hat, können die geschweiften Klammern weggelassen werden. Um einen Wert von einer Funktion zurückzugeben, verwenden Sie das Schlüsselwort "),t("code",[e._v("return")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('func myfunc(left int, right int) int {\n return left*right + left - right\n}\nfunc test int {\n return myfunc(10, 30) + myfunc(20, 50)\n}\nfunc ooops {\n error "Ooops..."\n}\n')])])]),t("p",[e._v("Funktion gibt keine Fehler zurück, da alle Fehlerprüfungen automatisch durchgeführt werden. Wenn in irgendeiner Funktion ein Fehler auftritt, beendet der Vertrag seinen Betrieb und zeigt die Fehlerbeschreibung in einem Fenster an.")]),e._v(" "),t("h3",{attrs:{id:"parameter-variabler-lange"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameter-variabler-lange"}},[e._v("#")]),e._v(" Parameter variabler Länge")]),e._v(" "),t("p",[e._v("Funktionen können Parameter mit variabler Länge definieren, verwenden Sie das Symbol "),t("code",[e._v("...")]),e._v(" als letzten Parametertyp der Funktion, um Parameter mit variabler Länge mit einem Datentyp von "),t("code",[e._v("Array")]),e._v(" anzugeben. Parameter mit variabler Länge umfassen alle Variablen ab dem Zeitpunkt, an dem der Parameter im Aufruf übergeben wird. Alle Arten von Variablen können übergeben werden, aber Sie müssen mit Konflikten durch Nichtübereinstimmung von Datentypen umgehen.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('func sum(out string, values ...) {\nvar i, res int\n\nwhile i 12")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{"field": {"$gte": 12}}')]),e._v("\nGleichwertig "),t("code",[e._v("field >= 12")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{"$and": [, , ]}')]),e._v("\nGleichwertig "),t("code",[e._v("expr1 AND expr2 AND expr3")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{"$or": [, , ]}')]),e._v("\nGleichwertig "),t("code",[e._v("expr1 OR expr2 OR expr3")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{field: {"$like": "value"}}')]),e._v("\nGleichwertig "),t("code",[e._v("field like'%value%'")]),e._v(" (fuzzy search).")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{field: {"$begin": "value"}}')]),e._v("\nGleichwertig "),t("code",[e._v("field like'value%'")]),e._v(" (starts with "),t("code",[e._v("value")]),e._v(").")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{field: {"$end": "value"}}')]),e._v("\nGleichwertig "),t("code",[e._v("field like'%value'")]),e._v(" (ends with "),t("code",[e._v("value")]),e._v(").")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{field: "$isnull"}')]),e._v("\nÄquivalent zum Feld ist null.")])])])])]),e._v(" "),t("p",[e._v("Achten Sie darauf, die Schlüssel von Objekt-Arrays nicht zu überschreiben. Wenn Sie beispielsweise mit "),t("code",[e._v("id>2 und id<5")]),e._v(" abfragen möchten, können Sie "),t("code",[e._v('{id:{"$gt": 2}, id:{"$lt": 5}}')]),e._v(" nicht verwenden, da die Das erste Element wird durch das zweite Element überschrieben. Sie sollten die folgende Abfragestruktur verwenden:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{id: [{"$gt": 2}, {"$lt": 5}]}\n')])])]),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{"$and": [{id:{"$gt": 2}}, {id:{"$lt": 5}}]}\n')])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Abfragen nach ID. Beispiel: .WhereId(1).")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Befehl")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v('Wird verwendet, um die Ergebnismenge nach einer bestimmten Spalte oder standardmäßig nach ID zu sortieren.\n\nWenn Sie nur ein Feld zum Sortieren verwenden, können Sie es als Zeichenfolge angeben. Um mehrere Felder zu sortieren, müssen Sie ein Array von String-Objekten angeben:\n\nAbsteigende Reihenfolge: `{"field": "-1"}` Äquivalent zu `field desc`.\n\nAufsteigende Reihenfolge: `{"field": "1"}` Äquivalent zu `field asc`.\n')])])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Grenze")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Gibt die Anzahl der Einträge zurück. 25, standardmäßig. Die maximale Anzahl beträgt 10.000.\n")])])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Versatz")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Versatz.\n")])])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Ökosystemid")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Ökosystem-ID. Standardmäßig wird die Tabelle des aktuellen Ökosystems abgefragt.\n")])])])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-2"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var i int\nvar ret string\nret = DBFind("contracts").Columns("id,value").Where({id: [{"$gt": 2}, {"$lt": 5}]}).Order( "id")\nwhile i 0 {\n item = list[0]\n}\n')])])]),t("h3",{attrs:{id:"gethistoryrow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gethistoryrow"}},[e._v("#")]),e._v(" GetHistoryRow")]),e._v(" "),t("p",[e._v("Gibt einen einzelnen Snapshot aus dem Änderungsverlauf eines angegebenen Eintrags in einer angegebenen Tabelle zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistoryRow(table string, id int, rollbackId int) map\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("table")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Eintrags-ID.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("rollbackId")])]),e._v(" "),t("p",[e._v("rollback_tx die Eintrags-ID der Tabelle.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' $result = GetHistoryRow("contracts",205,2358)\n')])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[e._v("#")]),e._v(" GetColumnType")]),e._v(" "),t("p",[e._v("Gibt den Datentyp eines angegebenen Felds in einer angegebenen Tabelle zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetColumnType(table, column string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("table")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("column")])]),e._v(" "),t("p",[e._v("Field Name.")])])]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Return value")])])]),e._v(" "),t("p",[e._v("Folgende Typen können zurückgegeben werden: "),t("code",[e._v("text, varchar, number, money, double, bytes, json, datetime, double")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"beispiel-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-7"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var coltype string\ncoltype = GetColumnType("members", "member_name")\n')])])]),t("h3",{attrs:{id:"daten-abrufen-vonxlsx"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daten-abrufen-vonxlsx"}},[e._v("#")]),e._v(" Daten abrufen vonXLSX")]),e._v(" "),t("p",[e._v("Gibt Daten aus XLSX-Tabellen zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetDataFromXLSX(binId int, line int, count int, sheet int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("binId")])]),e._v(" "),t("p",[e._v("ID im XLSX-Format in der Binärtabelle binär.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("line")])]),e._v(" "),t("p",[e._v("Die Startzeilennummer, beginnend standardmäßig bei 0.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("count")])]),e._v(" "),t("p",[e._v("Die Anzahl der Zeilen, die zurückgegeben werden müssen.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("sheet")])]),e._v(" "),t("p",[e._v("Listennummer, beginnend standardmäßig bei 1.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-8"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var a array\na = GetDataFromXLSX(3, 12, 10, 1)\n")])])]),t("h3",{attrs:{id:"getrowscountxlsx"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getrowscountxlsx"}},[e._v("#")]),e._v(" GetRowsCountXLSX")]),e._v(" "),t("p",[e._v("Gibt die Anzahl der Zeilen in einer angegebenen XLSX-Datei zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetRowsCountXLSX(binId int, sheet int) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("binId")])]),e._v(" "),t("p",[e._v("ID in XLSX format in the binary table binary.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("sheet")])]),e._v(" "),t("p",[e._v("List number, starting from 1 by default.")])])]),e._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var count int\ncount = GetRowsCountXLSX(binid, 1)\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[e._v("#")]),e._v(" LangRes")]),e._v(" "),t("p",[e._v("Gibt eine mehrsprachige Ressource mit Namensbeschriftung für die Sprache lang zurück, die als zweistelliger Code angegeben ist, zum Beispiel: "),t("code",[e._v("en")]),e._v(", "),t("code",[e._v("zh")]),e._v(". Wenn für eine ausgewählte Sprache keine Sprache vorhanden ist, wird die Sprachressource des "),t("code",[e._v("en")]),e._v("-Labels zurückgegeben.,")]),e._v(" "),t("h4",{attrs:{id:"syntax-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(label string, lang string) string\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("label")])]),e._v(" "),t("p",[e._v("Name der Sprachressource.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("lang")])]),e._v(" "),t("p",[e._v("Zweistelliger Sprachcode.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-9"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('warning LangRes("@1confirm", "en")\nerror LangRes("@1problems", "zh")\n')])])]),t("h3",{attrs:{id:"block-bekommen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#block-bekommen"}},[e._v("#")]),e._v(" Block bekommen")]),e._v(" "),t("p",[e._v("Gibt relevante Informationen zu einem angegebenen Block zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetBlock(blockID int64) map\n\n")])])]),t("p",[e._v("*"),t("strong",[e._v("blockID")])]),e._v(" "),t("p",[e._v("Block-ID.")]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Return value")])])]),e._v(" "),t("p",[e._v("Gibt ein Array von Objekten zurück:")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("Ich würde")])]),e._v(" "),t("p",[e._v("Block-ID.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Time")])]),e._v(" "),t("p",[e._v("Zeitstempel der Blockgenerierung.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("key_id")])]),e._v(" "),t("p",[e._v("Die Kontoadresse des Verifizierungsknotens hat den Block generiert.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-10"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var b map\nb = GetBlock(1)\nPrintln(b)\n")])])]),t("h3",{attrs:{id:"dbeinfugen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbeinfugen"}},[e._v("#")]),e._v(" DBEinfügen")]),e._v(" "),t("p",[e._v("Fügt einer angegebenen Tabelle einen Eintrag hinzu und gibt die Eintrags-ID zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBInsert(table string, params map) int\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tblname")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Parameter")])]),e._v(" "),t("p",[e._v("Ein Array von Objekten, bei dem Schlüssel Feldnamen und Werte eingefügte Werte sind.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-11"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBInsert("mytable", {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"db-update"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#db-update"}},[e._v("#")]),e._v(" DB-Update")]),e._v(" "),t("p",[e._v("Ändert den Spaltenwert einer angegebenen Eintrags-ID in einer angegebenen Tabelle. Wenn die Eintrags-ID nicht in der Tabelle vorhanden ist, wird ein Fehler zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBUpdate(tblname string, id int, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tblname")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Eintrags-ID.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Params")])]),e._v(" "),t("p",[e._v("Ein Array von Objekten, bei dem Schlüssel Feldnamen und Werte neue Werte nach Änderungen sind.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-12"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBUpdate("mytable", myid, {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"db-updateext"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#db-updateext"}},[e._v("#")]),e._v(" DB-UpdateExt")]),e._v(" "),t("p",[e._v("Ändert den Wert einer Spalte in einer angegebenen Tabelle, die der Abfragebedingung entspricht.")]),e._v(" "),t("h4",{attrs:{id:"syntax-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBUpdateExt(tblname string, where map, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tblname")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("where")])]),e._v(" "),t("p",[e._v("Bedingungen abfragen.")]),e._v(" "),t("p",[e._v("Weitere Einzelheiten finden Sie unter "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("params")])])])]),e._v(" "),t("p",[e._v("Ein Array von Objekten, bei dem Schlüssel Feldnamen und Werte neue Werte nach Änderungen sind.")]),e._v(" "),t("h4",{attrs:{id:"beispiel-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-13"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBUpdateExt("mytable", {id: $key_id, ecosystem: $ecosystem_id}, {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"spalte-loschen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#spalte-loschen"}},[e._v("#")]),e._v(" Spalte löschen")]),e._v(" "),t("p",[e._v("Löscht ein Feld in einer angegebenen Tabelle, das keine Datensätze enthält.")]),e._v(" "),t("h4",{attrs:{id:"syntax-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DelColumn(tblname string, column string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tblname")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("column")])]),e._v(" "),t("p",[e._v("The field to be deleted.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DelColumn("mytable", "mycolumn")\n')])])]),t("h3",{attrs:{id:"spalte-loschen-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#spalte-loschen-2"}},[e._v("#")]),e._v(" Spalte löschen")]),e._v(" "),t("p",[e._v("Löscht eine angegebene Tabelle, die keine Datensätze enthält.")]),e._v(" "),t("h4",{attrs:{id:"syntax-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DelTable(tblname string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tblname")])]),e._v(" "),t("p",[e._v("Table name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DelTable("mytable")\n')])])]),t("h3",{attrs:{id:"anhangen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anhangen"}},[e._v("#")]),e._v(" Anhängen")]),e._v(" "),t("p",[e._v("Fügt einen beliebigen Werttyp in das src-Array ein.")]),e._v(" "),t("h4",{attrs:{id:"syntax-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("p",[e._v("Append(src array, val anyType) array")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("src")])]),e._v(" "),t("p",[e._v("Das ursprüngliche Array.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("val")])]),e._v(" "),t("p",[e._v("Der einzufügende Wert.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-14"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var list array\nlist = Append(list, "new_val")\n')])])]),t("h3",{attrs:{id:"beitreten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beitreten"}},[e._v("#")]),e._v(" Beitreten")]),e._v(" "),t("p",[e._v("Kombiniert Elemente des in-Arrays zu einer Zeichenfolge mit einem angegebenen Sep-Trennzeichen.")]),e._v(" "),t("h4",{attrs:{id:"syntax-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Join(in array, sep string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("In")])]),e._v(" "),t("p",[e._v("Array-Name.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("sep")])]),e._v(" "),t("p",[e._v("Separator.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-15"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' var val string, myarr array\n myarr[0] = "first"\n myarr[1] = 10\n val = Join(myarr, ",")\n')])])]),t("h3",{attrs:{id:"teilt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#teilt"}},[e._v("#")]),e._v(" Teilt")]),e._v(" "),t("p",[e._v("Verwendet das Trennzeichen sep, um den in-String in Elemente aufzuteilen und sie in ein Array einzufügen.")]),e._v(" "),t("h4",{attrs:{id:"syntax-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Split(in string, sep string) array\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("In")])]),e._v(" "),t("p",[e._v("String.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("sep")])]),e._v(" "),t("p",[e._v("Separator.")])])]),e._v(" "),t("h4",{attrs:{id:"example-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var myarr array\nmyarr = Split("first,second,third", ",")\n')])])]),t("h3",{attrs:{id:"len"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#len"}},[e._v("#")]),e._v(" Len")]),e._v(" "),t("p",[e._v("Gibt die Anzahl der Elemente in einem angegebenen Array zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Len(val array) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("val")])]),e._v(" "),t("p",[e._v("Array.")])])]),e._v(" "),t("h4",{attrs:{id:"example-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("if Len(mylist) == 0 {\n ...\n}\n")])])]),t("h3",{attrs:{id:"reihe"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reihe"}},[e._v("#")]),e._v(" Reihe")]),e._v(" "),t("p",[e._v("Der Listenparameter darf in diesem Fall nicht angegeben werden. Gibt das erste Objekt-Array in der Array-Liste zurück. Wenn die Liste leer ist, wird ein leeres Ergebnis zurückgegeben. Diese Funktion wird meistens in Verbindung mit der Funktion "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" verwendet. Bei Verwendung dieser Funktion können Sie keine Parameter angeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" Row(list array) map\n")])])]),t("ul",[t("li",[t("strong",[e._v("list")])])]),e._v(" "),t("p",[e._v("Das Array von Objekten, das von der DBFind-Funktion zurückgegeben wird.")]),e._v(" "),t("h4",{attrs:{id:"beispiel-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-16"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' var ret map\n ret = DBFind("contracts").Columns("id,value").WhereId(10).Row()\n Println(ret)\n')])])]),t("h3",{attrs:{id:"ein"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ein"}},[e._v("#")]),e._v(" Ein")]),e._v(" "),t("p",[e._v("Gibt den Feldwert des ersten Objekt-Arrays in der Array-Liste zurück. Wenn das Listenarray leer ist, wird nil zurückgegeben. Es wird meistens in Verbindung mit der Funktion "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" verwendet. Bei Verwendung dieser Funktion können Sie keine Parameter angeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("One(list array, column string) string\n")])])]),t("ul",[t("li",[t("strong",[e._v("list")])])]),e._v(" "),t("p",[e._v("The array of objects returned by the DBFind function.")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("column")])]),e._v(" "),t("p",[e._v("Feldname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-17"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var ret string\nret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")\nif ret != nil {\n Println(ret)\n}\n')])])]),t("h3",{attrs:{id:"holen-sie-sich-kartenschlussel"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#holen-sie-sich-kartenschlussel"}},[e._v("#")]),e._v(" Holen Sie sich Kartenschlüssel")]),e._v(" "),t("p",[e._v("Gibt das Schlüsselarray im Objektarray zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetMapKeys(val map) array\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("val")])]),e._v(" "),t("p",[e._v("Objekt-Array.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-18"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var val map\nvar arr array\nval["k1"] = "v1"\nval["k2"] = "v2"\narr = GetMapKeys(val)\n')])])]),t("h3",{attrs:{id:"sortierte-schlussel"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sortierte-schlussel"}},[e._v("#")]),e._v(" Sortierte Schlüssel")]),e._v(" "),t("p",[e._v("Gibt ein sortiertes Schlüsselarray im Objektarray zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("SortedKeys(val map) array\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("val")])]),e._v(" "),t("p",[e._v("Objeckt array.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-19"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var val map\nvar arr array\nval["k2"] = "v2"\nval["k1"] = "v1"\narr = SortedKeys(val)\n')])])]),t("h3",{attrs:{id:"anrufvertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anrufvertrag"}},[e._v("#")]),e._v(" Anrufvertrag")]),e._v(" "),t("p",[e._v("Ruft den Vertrag mit einem angegebenen Namen auf. Alle Parameter des Datenabschnitts im Vertrag müssen in einem Objektarray enthalten sein. Diese Funktion gibt den Wert zurück, der der Variable "),t("strong",[e._v("$result")]),e._v(" durch einen bestimmten Vertrag zugewiesen wurde.")]),e._v(" "),t("h4",{attrs:{id:"syntax-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CallContract(name string, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("name")])]),e._v(" "),t("p",[e._v("Der Name des aufgerufenen Vertrags.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("params")])]),e._v(" "),t("p",[e._v("Ein assoziatives Array der Vertragseingabedaten.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-20"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var par map\npar["Name"] = "My Name"\nCallContract("MyContract", par)\n')])])]),t("h3",{attrs:{id:"vertragszugang"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertragszugang"}},[e._v("#")]),e._v(" Vertragszugang")]),e._v(" "),t("p",[e._v("Überprüft, ob der Name des ausgeführten Vertrags mit einem der in den Parametern aufgeführten Namen übereinstimmt. Normalerweise wird es verwendet, um den Vertragszugriff auf Tabellen zu steuern. Beim Bearbeiten von Tabellenfeldern oder beim Einfügen und Hinzufügen neuer Spaltenfelder im Berechtigungsabschnitt der Tabelle geben Sie diese Funktion bitte in den Berechtigungsfeldern an.")]),e._v(" "),t("h4",{attrs:{id:"syntax-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ContractAccess(name string, [name string]) bool\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("name")])]),e._v(" "),t("p",[e._v("Vertragsname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-21"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('ContractAccess("MyContract")\nContractAccess("MyContract","SimpleContract")\n')])])]),t("h3",{attrs:{id:"vertragsbedingungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertragsbedingungen"}},[e._v("#")]),e._v(" Vertragsbedingungen")]),e._v(" "),t("p",[e._v("Ruft den Abschnitt Bedingungen im Vertrag mit einem angegebenen Namen auf.")]),e._v(" "),t("p",[e._v("Für diese Art von Verträgen muss der Datenabschnitt leer sein. Wenn der Abschnitt Bedingungen ohne Fehler ausgeführt wird, gibt er wahr zurück. Kommt es bei der Ausführung zu einem Fehler, wird auch der Muttervertrag aufgrund des Fehlers gekündigt. Diese Funktion dient in der Regel dazu, den Zugriff des Vertrags auf Tabellen zu steuern und kann bei der Bearbeitung von Systemtabellen in den Berechtigungsfeldern aufgerufen werden.")]),e._v(" "),t("h4",{attrs:{id:"syntax-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ContractConditions(name string, [name string]) bool\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("name")])]),e._v(" "),t("p",[e._v("Vertragsname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-22"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('ContractConditions("MainCondition")\n')])])]),t("h3",{attrs:{id:"eval-zustand"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#eval-zustand"}},[e._v("#")]),e._v(" Eval Zustand")]),e._v(" "),t("p",[e._v("Ruft den Wert des condfield-Felds im Datensatz mit einem 'name'-Feld aus der tablename-Tabelle ab und prüft die Bedingungen des condfield-Feldwerts.")]),e._v(" "),t("h4",{attrs:{id:"syntax-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EvalCondition(tablename string, name string, condfield string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tablename")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("name")])]),e._v(" "),t("p",[e._v("Fragt den Wert mit dem Feld „Name“ ab.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("condfield")])]),e._v(" "),t("p",[e._v("Der Name des Felds, dessen Bedingungen überprüft werden müssen.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-23"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EvalCondition(`menu`, $Name, `conditions`)\n")])])]),t("h3",{attrs:{id:"vertrag-per-id-erhalten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertrag-per-id-erhalten"}},[e._v("#")]),e._v(" Vertrag per ID erhalten")]),e._v(" "),t("p",[e._v("Gibt seinen Vertragsnamen nach Vertrags-ID zurück. Wenn der Vertrag nicht gefunden wird, wird eine leere Zeichenfolge zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetContractById(id int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Die Vertrags-ID in den Verträgen der Vertragstabelle.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-24"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var name string\nname = GetContractById($IdContract)\n")])])]),t("h3",{attrs:{id:"vertrag-nach-namen-abrufen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertrag-nach-namen-abrufen"}},[e._v("#")]),e._v(" Vertrag nach Namen abrufen")]),e._v(" "),t("p",[e._v("Diese Funktion gibt ihre Vertrags-ID nach Vertragsname zurück. Wenn der Vertrag nicht gefunden wird, wird Null zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetContractByName(name string) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("name")])]),e._v(" "),t("p",[e._v("Der Vertragsname in der Vertragstabelle Contracts.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-25"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var id int\nid = GetContractByName(`NewBlock`)\n")])])]),t("h3",{attrs:{id:"rollenzugriff"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollenzugriff"}},[e._v("#")]),e._v(" Rollenzugriff")]),e._v(" "),t("p",[e._v("Überprüft, ob die Rollen-ID des Vertragsaufrufers mit einer der im Parameter angegebenen IDs übereinstimmt.")]),e._v(" "),t("p",[e._v("Mit dieser Funktion können Sie den Vertragszugriff auf Tabellen und andere Daten steuern.")]),e._v(" "),t("h4",{attrs:{id:"syntax-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RoleAccess(id int, [id int]) bool\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Role ID.")])])]),e._v(" "),t("h4",{attrs:{id:"example-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RoleAccess(1)\nRoleAccess(1, 3)\n")])])]),t("h3",{attrs:{id:"transaktionsinfo"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#transaktionsinfo"}},[e._v("#")]),e._v(" Transaktionsinfo")]),e._v(" "),t("p",[e._v("Fragt Transaktionen anhand des angegebenen Hash-Werts ab und gibt Informationen über den ausgeführten Vertrag und seine Parameter zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("TransactionInfo(hash: string)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("hash")])]),e._v(" "),t("p",[e._v("Transaktions-Hash im hexadezimalen Zeichenfolgenformat.")])])]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Return value")])])]),e._v(" "),t("p",[e._v("Diese Funktion gibt einen String im JSON-Format zurück:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}\n')])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("contract")])]),e._v(" "),t("p",[e._v("Vertragsname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("params")])])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v(" An Vertragsparameter übergebene Daten.\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("block")])]),e._v(" "),t("p",[e._v("ID des Blocks, der die Transaktion verarbeitet hat.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-26"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var out map\nout = JSONDecode(TransactionInfo(hash))\n")])])]),t("h3",{attrs:{id:"wurf"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#wurf"}},[e._v("#")]),e._v(" Wurf")]),e._v(" "),t("p",[e._v("Erzeugt einen Fehler vom Typ Ausnahme.")]),e._v(" "),t("h4",{attrs:{id:"syntax-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Throw(ErrorId string, ErrDescription string)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("ErrorId")])]),e._v(" "),t("p",[e._v("Fehlerkennung.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("ErrDescription")])]),e._v(" "),t("p",[e._v("Fehlerbeschreibung.")])])]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Return value")])])]),e._v(" "),t("p",[e._v("Das Format dieser Art von Transaktionsergebnissen:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{"type":"exception","error":"Error description","id":"Error ID"}\n')])])]),t("h4",{attrs:{id:"beispiel-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-27"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Throw("Problem", "There is a problem")\n')])])]),t("h3",{attrs:{id:"bedingung-validieren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bedingung-validieren"}},[e._v("#")]),e._v(" Bedingung validieren")]),e._v(" "),t("p",[e._v("Versucht, die vom Bedingungsparameter angegebenen Bedingungen zu kompilieren. Tritt während des Kompiliervorgangs ein Fehler auf, wird ein Fehler generiert und der aufgerufene Vertrag beendet. Diese Funktion dient dazu, die Korrektheit des bedingten Formats zu überprüfen.")]),e._v(" "),t("h4",{attrs:{id:"syntax-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ValidateCondition(condition string, state int)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Condition")])]),e._v(" "),t("p",[e._v("Das bedingte Format, das überprüft werden muss.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("State")])]),e._v(" "),t("p",[e._v("Ökosystem-ID. Wenn Sie die globale Bedingung überprüfen, geben Sie sie bitte als 0 an.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-28"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('ValidateCondition(`ContractAccess("@1MyContract")`, 1)\n')])])]),t("h3",{attrs:{id:"adresse-bis-id"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adresse-bis-id"}},[e._v("#")]),e._v(" Adresse bis ID")]),e._v(" "),t("p",[e._v("Gibt die entsprechende Kontoadresse nach Wallet-Adresse zurück. Wenn eine ungültige Adresse angegeben wird, wird '0' zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(address string) int\n\n")])])]),t("ul",[t("li",[t("p",[e._v("Address")]),e._v(" "),t("p",[e._v("Wallet address in "),t("code",[e._v("XXXX-...-XXXX")]),e._v(" format or number format.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-29"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("wallet = AddressToId($Recipient)\n")])])]),t("h3",{attrs:{id:"id-zu-adresse"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#id-zu-adresse"}},[e._v("#")]),e._v(" ID zu Adresse")]),e._v(" "),t("p",[e._v("Gibt die entsprechende Brieftaschenadresse nach Kontoadresse zurück. Wenn eine ungültige Adresse angegeben wird, wird die ungültige Adresse "),t("code",[e._v("invalid")]),e._v(" zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("IdToAddress(id int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Kontoadresse.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-30"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("$address = IdToAddress($id)\n")])])]),t("h3",{attrs:{id:"pub-zu-id"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pub-zu-id"}},[e._v("#")]),e._v(" Pub zu ID")]),e._v(" "),t("p",[e._v("Die Kontoadresse wird per öffentlichem Schlüssel im Hexadezimalformat zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("PubToID(hexkey string) int\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("hexkey")])]),e._v(" "),t("p",[e._v("Der öffentliche Schlüssel im Hexadezimalformat.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-31"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var wallet int\nwallet = PubToID("04fa5e78.....34abd6")\n')])])]),t("h3",{attrs:{id:"dekodierenbase64"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dekodierenbase64"}},[e._v("#")]),e._v(" DekodierenBase64")]),e._v(" "),t("p",[e._v("Gibt eine Zeichenfolge zurück, indem das base64-Format angegeben wird")]),e._v(" "),t("h4",{attrs:{id:"syntax-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DecodeBase64(input string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Input")])]),e._v(" "),t("p",[e._v("String in base64 format.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-32"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("val = DecodeBase64(mybase64)\n")])])]),t("h3",{attrs:{id:"kodierenbase64"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kodierenbase64"}},[e._v("#")]),e._v(" KodierenBase64")]),e._v(" "),t("p",[e._v("Gibt eine Zeichenfolge im Base64-Format zurück, indem eine Zeichenfolge angegeben wird.")]),e._v(" "),t("h4",{attrs:{id:"syntax-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EncodeBase64(input string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Input")])]),e._v(" "),t("p",[e._v("Die zu codierende Zeichenfolge.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-33"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var base64str string\nbase64str = EncodeBase64("my text")\n')])])]),t("h3",{attrs:{id:"schweben"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#schweben"}},[e._v("#")]),e._v(" Schweben")]),e._v(" "),t("p",[e._v("Konvertiert eine ganze Zahl oder einen String in eine Gleitkommazahl.")]),e._v(" "),t("h4",{attrs:{id:"syntax-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Float(val int|string) float\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("val")])]),e._v(" "),t("p",[e._v("Eine Ganzzahl oder Zeichenfolge.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-34"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('val = Float("567.989") + Float(232)\n')])])]),t("h3",{attrs:{id:"hextobytes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hextobytes"}},[e._v("#")]),e._v(" HexToBytes")]),e._v(" "),t("p",[e._v("Konvertiert eine Zeichenfolge im Hexadezimalformat in Bytes vom Typ Bytes.")]),e._v(" "),t("h4",{attrs:{id:"syntax-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" HexToBytes(hexdata string) bytes\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("hexdata")])]),e._v(" "),t("p",[e._v("Eine Zeichenfolge im Hexadezimalformat.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-35"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var val bytes\nval = HexToBytes("34fe4501a4d80094")\n')])])]),t("h3",{attrs:{id:"geld-formatieren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#geld-formatieren"}},[e._v("#")]),e._v(" Geld formatieren")]),e._v(" "),t("p",[e._v("Gibt den Zeichenfolgenwert von exp / 10 ^ Ziffer zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("FormatMoney(exp string, digit int) string\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Exp")])]),e._v(" "),t("p",[e._v("A number in string format.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("digit")])]),e._v(" "),t("p",[e._v("Der Exponent (positiv oder negativ) von 10 im Ausdruck "),t("code",[e._v("Exp/10^digit")]),e._v(". Positive Werte bestimmen Nachkommastellen.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-36"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' s = FormatMoney("78236475917384", 0)\n')])])]),t("h3",{attrs:{id:"zufallig"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#zufallig"}},[e._v("#")]),e._v(" Zufällig")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Returns a random number between min and max (min <= result 0 {\n info "You have already been registered"\n}\n')])])]),t("h3",{attrs:{id:"aktionsabschnitt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#aktionsabschnitt"}},[e._v("#")]),e._v(" Aktionsabschnitt")]),e._v(" "),t("p",[e._v("Der Abschnitt "),t("code",[e._v("action")]),e._v(" beschreibt den Hauptcode des Vertrags, der andere Daten abruft und die Ergebniswerte in Tabellen aufzeichnet. Zum Beispiel:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('action {\nDBUpdate("keys", $key_id, {"-amount": $amount})\nDBUpdate("keys", $recipient, {"+amount": $amount, "pub": $Pub})\n}\n')])])]),t("h2",{attrs:{id:"variablen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#variablen"}},[e._v("#")]),e._v(" Variablen")]),e._v(" "),t("p",[e._v("Im Datenabschnitt deklarierte Variablen werden über das "),t("code",[e._v("$")]),e._v("-Symbol gefolgt vom Variablennamen an andere Vertragsabschnitte übergeben. Das Symbol „$“ kann auch verwendet werden, um andere Variablen zu deklarieren, die sich nicht im Datenabschnitt befinden und als globale Variablen dieses Vertrags und aller Verträge gelten, in die dieser Vertrag verschachtelt ist.")]),e._v(" "),t("p",[e._v("In Verträgen können vordefinierte Variablen verwendet werden, die Transaktionsdaten enthalten, die den Vertrag aufgerufen haben:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("$time")]),e._v(" - Transaktionszeitstempel;")]),e._v(" "),t("li",[t("code",[e._v("$ecosystem_id")]),e._v(" - Ökosystem-ID;")]),e._v(" "),t("li",[t("code",[e._v("$block")]),e._v(" - ID des Blocks, der die Transaktion enthält;")]),e._v(" "),t("li",[t("code",[e._v("$key_id")]),e._v(" - Adresse des Kontos, das die aktuelle Transaktion unterzeichnet hat;")]),e._v(" "),t("li",[t("code",[e._v("$type")]),e._v(" - Vertrags-ID in der virtuellen Maschine;")]),e._v(" "),t("li",[t("code",[e._v("$block_key_id")]),e._v(" - Kontoadresse des Knotens, der den Block erzeugt hat;")]),e._v(" "),t("li",[t("code",[e._v("$block_time")]),e._v(" - Zeitstempel der Blockgenerierung;")]),e._v(" "),t("li",[t("code",[e._v("$original_contract")]),e._v(" -Name des Vertrags, der die Transaktion ursprünglich verarbeitet hat. Dies bedeutet, dass der Vertrag während der Transaktionsvalidierung aufgerufen wird, wenn die Variable eine leere Zeichenfolge ist. Um zu prüfen, ob der Vertrag von einem anderen Vertrag oder direkt von der Transaktion aufgerufen wird, müssen Sie die Werte von $original_contract und $this_contract vergleichen. Das bedeutet, dass der Vertrag von der Transaktion aufgerufen wird, wenn sie gleich sind;")]),e._v(" "),t("li",[t("code",[e._v("$this_contract")]),e._v(" - Name des aktuell ausgeführten Vertrages;")]),e._v(" "),t("li",[t("code",[e._v("$guest_key")]),e._v(" - Adresse des Gastkontos;")]),e._v(" "),t("li",[t("code",[e._v("$stack")]),e._v(" - Contract Array Stack mit dem Datentyp Array, der alle ausgeführten Contracts enthält. Das erste Element des Arrays stellt den Namen des Vertrags dar, der gerade ausgeführt wird, während das letzte Element den Namen des Vertrags darstellt, der die Transaktion ursprünglich verarbeitet hat;")]),e._v(" "),t("li",[t("code",[e._v("$node_position")]),e._v(" - die Indexnummer des Verifizierungsknotenarrays, wo sich der Block befindet;")]),e._v(" "),t("li",[t("code",[e._v("$txhash")]),e._v(" - Transaktions-Hash;")]),e._v(" "),t("li",[t("code",[e._v("$contract")]),e._v(" - das aktuelle Vertragsstruktur-Array.")])]),e._v(" "),t("p",[e._v("Auf vordefinierte Variablen kann nicht nur in Verträgen zugegriffen werden, sondern auch in Berechtigungsfeldern, die die Zugriffsberechtigungsbedingungen der Anwendungselemente definieren. Bei Verwendung in Berechtigungsfeldern sind vordefinierte Variablen für Blockinformationen immer gleich Null, wie z. B. "),t("code",[e._v("$time")]),e._v(", "),t("code",[e._v("$block")]),e._v(" usw.")]),e._v(" "),t("p",[e._v("Eine vordefinierte Variable "),t("code",[e._v("$result")]),e._v(" wird mit dem Rückgabeergebnis des Vertrags zugewiesen.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('contract my {\n data {\n Name string\n Amount money\n }\n func conditions {\n if $Amount <= 0 {\n error "Amount cannot be 0"\n }\n $ownerId = 1232\n }\n func action {\n var amount money\n amount = $Amount - 10\n DBUpdate("mytable", $ownerId, {name: $Name,amount: amount})\n DBUpdate("mytable2", $ownerId, {amount: 10})\n }\n}\n')])])]),t("h2",{attrs:{id:"verschachtelte-vertrage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#verschachtelte-vertrage"}},[e._v("#")]),e._v(" Verschachtelte Verträge")]),e._v(" "),t("p",[e._v("Sie können Verträge in den Abschnitten „Bedingungen“ und „Aktionen“ des Vertrags verschachteln. Verschachtelte Verträge können direkt aufgerufen werden, und die Vertragsparameter werden in Klammern hinter dem Vertragsnamen angegeben, z. B. "),t("code",[e._v("@1NameContract(Params)")]),e._v(". Sie können auch verschachtelte Verträge mit der Funktion "),t("a",{attrs:{href:"#callcontract"}},[e._v("CallContract")]),e._v(" aufrufen.")]),e._v(" "),t("h2",{attrs:{id:"datei-upload"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datei-upload"}},[e._v("#")]),e._v(" Datei-Upload")]),e._v(" "),t("p",[e._v("Um eine Datei über ein Formular im Format "),t("code",[e._v("multipart/form-data")]),e._v(" hochzuladen, muss der Datentyp des Vertrages "),t("code",[e._v("file")]),e._v(" sein.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("contract Upload {\n data {\n \t File file\n }\n ...\n}\n")])])]),t("p",[e._v("Der Vertrag "),t("a",{attrs:{href:"#uploadbinary"}},[e._v("UploadBinary")]),e._v(" wird zum Hochladen und Speichern von Dateien verwendet. Mit der Logicor-Sprachfunktion "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#binary"}},[e._v("Binary")]),e._v(" im Seiteneditor erhalten Sie den Link zum Herunterladen der Datei.")],1),e._v(" "),t("h2",{attrs:{id:"abfragen-im-json-format"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#abfragen-im-json-format"}},[e._v("#")]),e._v(" Abfragen im JSON-Format")]),e._v(" "),t("p",[e._v("In der Vertragssprache kann als Feldtyp "),t("strong",[e._v("JSON")]),e._v(" angegeben werden. Sie können die Syntax: "),t("strong",[e._v("columnname->fieldname")]),e._v(" verwenden, um das Eingabefeld zu verarbeiten. Der erhaltene Wert wird in "),t("strong",[e._v("columnname.fieldname")]),e._v(" aufgezeichnet. Die obige Syntax kann in Columns,One,Where der Funktion "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" verwendet werden.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var ret map\nvar val str\nvar list array\nret = DBFind("mytable").Columns("myname,doc,doc->ind").WhereId($Id).Row()\nval = ret["doc.ind"]\nval = DBFind("mytable").Columns("myname,doc->type").WhereId($Id).One("doc->type")\nlist = DBFind("mytable").Columns("myname,doc,doc->ind").Where("doc->ind = ?", "101")\nval = DBFind("mytable").WhereId($Id).One("doc->check")\n')])])]),t("h2",{attrs:{id:"abfragen-mit-datums-und-zeitoperationen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#abfragen-mit-datums-und-zeitoperationen"}},[e._v("#")]),e._v(" Abfragen mit Datums- und Zeitoperationen")]),e._v(" "),t("p",[e._v("Sie können das Datum und die Uhrzeit nicht direkt mit den Vertragssprachenfunktionen abfragen und aktualisieren, aber Sie können PostgreSQL-Funktionen und -Features in der Where-Anweisung wie im folgenden Beispiel verwenden. Beispielsweise müssen Sie das Feld date_column mit der aktuellen Uhrzeit vergleichen. Wenn date_column ein Zeitstempeltyp ist, sollte der Ausdruck "),t("code",[e._v("date_column NOW()")]),e._v(" lauten.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Where("to_timestamp(date_column)> NOW()")\nWhere("date_column , >=, <=, ==, !=, ||, &&")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("if val> 10 || id != $block_key_id {\n ...\n} else {\n ...\n}\n")])])]),t("p",[e._v("Der Codeblock wird ausgeführt, wenn die bedingte Anweisung der "),t("strong",[e._v("while")]),e._v("-Schleife wahr ist. "),t("strong",[e._v("break")]),e._v(" bedeutet, die Schleife des Codeblocks zu beenden. Wenn Sie eine Schleife von Anfang an beginnen möchten, verwenden Sie "),t("strong",[e._v("continue")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var i int\nwhile true {\n if i > 100 {\n break\n }\n ...\n if i == 50 {\n continue\n }\n ...\n i = i + 1\n}\n")])])]),t("p",[e._v("Zusätzlich zu bedingten Anweisungen unterstützt Needle auch Standardarithmetikoperationen: "),t("code",[e._v("+")]),e._v(", "),t("code",[e._v("-")]),e._v(", "),t("code",[e._v("*")]),e._v(", "),t("code",[e._v("/")]),e._v(".")]),e._v(" "),t("p",[e._v("Variablen vom Typ String und Bytes können als bedingte Anweisung verwendet werden. Wenn die Länge des Typs größer als Null ist, ist die Bedingung wahr, andernfalls ist sie falsch.")]),e._v(" "),t("h2",{attrs:{id:"funktionen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#funktionen"}},[e._v("#")]),e._v(" Funktionen")]),e._v(" "),t("p",[e._v("Funktionen können einige Operationen mit den vom "),t("a",{attrs:{href:"#data-section"}},[e._v("data section")]),e._v(" eines Vertrags empfangenen Daten ausführen: Daten aus der Datenbank lesen und schreiben, den Werttyp konvertieren und die Interaktion zwischen Verträgen herstellen.")]),e._v(" "),t("h3",{attrs:{id:"funktionsdeklaration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#funktionsdeklaration"}},[e._v("#")]),e._v(" Funktionsdeklaration")]),e._v(" "),t("p",[e._v("Verwenden Sie das Schlüsselwort func, um eine Funktion zu deklarieren, gefolgt vom Namen und der Liste der übergebenen Parameter und ihrer Typen. Alle Parameter sind in Klammern eingeschlossen und durch Kommas getrennt. Nach den Klammern muss der Datentyp des von der Funktion zurückgegebenen Werts deklariert werden. Der Funktionskörper muss in geschweifte Klammern eingeschlossen werden. Wenn die Funktion keine Parameter hat, können die geschweiften Klammern weggelassen werden. Um einen Wert von einer Funktion zurückzugeben, verwenden Sie das Schlüsselwort "),t("code",[e._v("return")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('func myfunc(left int, right int) int {\n return left*right + left - right\n}\nfunc test int {\n return myfunc(10, 30) + myfunc(20, 50)\n}\nfunc ooops {\n error "Ooops..."\n}\n')])])]),t("p",[e._v("Funktion gibt keine Fehler zurück, da alle Fehlerprüfungen automatisch durchgeführt werden. Wenn in irgendeiner Funktion ein Fehler auftritt, beendet der Vertrag seinen Betrieb und zeigt die Fehlerbeschreibung in einem Fenster an.")]),e._v(" "),t("h3",{attrs:{id:"parameter-variabler-lange"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameter-variabler-lange"}},[e._v("#")]),e._v(" Parameter variabler Länge")]),e._v(" "),t("p",[e._v("Funktionen können Parameter mit variabler Länge definieren, verwenden Sie das Symbol "),t("code",[e._v("...")]),e._v(" als letzten Parametertyp der Funktion, um Parameter mit variabler Länge mit einem Datentyp von "),t("code",[e._v("Array")]),e._v(" anzugeben. Parameter mit variabler Länge umfassen alle Variablen ab dem Zeitpunkt, an dem der Parameter im Aufruf übergeben wird. Alle Arten von Variablen können übergeben werden, aber Sie müssen mit Konflikten durch Nichtübereinstimmung von Datentypen umgehen.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('func sum(out string, values ...) {\nvar i, res int\n\nwhile i 12")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{"field": {"$gte": 12}}')]),e._v("\nGleichwertig "),t("code",[e._v("field >= 12")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{"$and": [, , ]}')]),e._v("\nGleichwertig "),t("code",[e._v("expr1 AND expr2 AND expr3")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{"$or": [, , ]}')]),e._v("\nGleichwertig "),t("code",[e._v("expr1 OR expr2 OR expr3")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{field: {"$like": "value"}}')]),e._v("\nGleichwertig "),t("code",[e._v("field like'%value%'")]),e._v(" (fuzzy search).")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{field: {"$begin": "value"}}')]),e._v("\nGleichwertig "),t("code",[e._v("field like'value%'")]),e._v(" (starts with "),t("code",[e._v("value")]),e._v(").")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{field: {"$end": "value"}}')]),e._v("\nGleichwertig "),t("code",[e._v("field like'%value'")]),e._v(" (ends with "),t("code",[e._v("value")]),e._v(").")])]),e._v(" "),t("li",[t("p",[t("code",[e._v('{field: "$isnull"}')]),e._v("\nÄquivalent zum Feld ist null.")])])])])]),e._v(" "),t("p",[e._v("Achten Sie darauf, die Schlüssel von Objekt-Arrays nicht zu überschreiben. Wenn Sie beispielsweise mit "),t("code",[e._v("id>2 und id<5")]),e._v(" abfragen möchten, können Sie "),t("code",[e._v('{id:{"$gt": 2}, id:{"$lt": 5}}')]),e._v(" nicht verwenden, da die Das erste Element wird durch das zweite Element überschrieben. Sie sollten die folgende Abfragestruktur verwenden:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{id: [{"$gt": 2}, {"$lt": 5}]}\n')])])]),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{"$and": [{id:{"$gt": 2}}, {id:{"$lt": 5}}]}\n')])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Abfragen nach ID. Beispiel: .WhereId(1).")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Befehl")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v('Wird verwendet, um die Ergebnismenge nach einer bestimmten Spalte oder standardmäßig nach ID zu sortieren.\n\nWenn Sie nur ein Feld zum Sortieren verwenden, können Sie es als Zeichenfolge angeben. Um mehrere Felder zu sortieren, müssen Sie ein Array von String-Objekten angeben:\n\nAbsteigende Reihenfolge: `{"field": "-1"}` Äquivalent zu `field desc`.\n\nAufsteigende Reihenfolge: `{"field": "1"}` Äquivalent zu `field asc`.\n')])])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Grenze")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Gibt die Anzahl der Einträge zurück. 25, standardmäßig. Die maximale Anzahl beträgt 10.000.\n")])])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Versatz")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Versatz.\n")])])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Ökosystemid")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Ökosystem-ID. Standardmäßig wird die Tabelle des aktuellen Ökosystems abgefragt.\n")])])])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-2"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var i int\nvar ret string\nret = DBFind("contracts").Columns("id,value").Where({id: [{"$gt": 2}, {"$lt": 5}]}).Order( "id")\nwhile i 0 {\n item = list[0]\n}\n')])])]),t("h3",{attrs:{id:"gethistoryrow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gethistoryrow"}},[e._v("#")]),e._v(" GetHistoryRow")]),e._v(" "),t("p",[e._v("Gibt einen einzelnen Snapshot aus dem Änderungsverlauf eines angegebenen Eintrags in einer angegebenen Tabelle zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistoryRow(table string, id int, rollbackId int) map\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("table")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Eintrags-ID.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("rollbackId")])]),e._v(" "),t("p",[e._v("rollback_tx die Eintrags-ID der Tabelle.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' $result = GetHistoryRow("contracts",205,2358)\n')])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[e._v("#")]),e._v(" GetColumnType")]),e._v(" "),t("p",[e._v("Gibt den Datentyp eines angegebenen Felds in einer angegebenen Tabelle zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetColumnType(table, column string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("table")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("column")])]),e._v(" "),t("p",[e._v("Field Name.")])])]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Return value")])])]),e._v(" "),t("p",[e._v("Folgende Typen können zurückgegeben werden: "),t("code",[e._v("text, varchar, number, money, double, bytes, json, datetime, double")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"beispiel-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-7"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var coltype string\ncoltype = GetColumnType("members", "member_name")\n')])])]),t("h3",{attrs:{id:"daten-abrufen-vonxlsx"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daten-abrufen-vonxlsx"}},[e._v("#")]),e._v(" Daten abrufen vonXLSX")]),e._v(" "),t("p",[e._v("Gibt Daten aus XLSX-Tabellen zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetDataFromXLSX(binId int, line int, count int, sheet int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("binId")])]),e._v(" "),t("p",[e._v("ID im XLSX-Format in der Binärtabelle binär.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("line")])]),e._v(" "),t("p",[e._v("Die Startzeilennummer, beginnend standardmäßig bei 0.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("count")])]),e._v(" "),t("p",[e._v("Die Anzahl der Zeilen, die zurückgegeben werden müssen.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("sheet")])]),e._v(" "),t("p",[e._v("Listennummer, beginnend standardmäßig bei 1.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-8"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var a array\na = GetDataFromXLSX(3, 12, 10, 1)\n")])])]),t("h3",{attrs:{id:"getrowscountxlsx"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getrowscountxlsx"}},[e._v("#")]),e._v(" GetRowsCountXLSX")]),e._v(" "),t("p",[e._v("Gibt die Anzahl der Zeilen in einer angegebenen XLSX-Datei zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetRowsCountXLSX(binId int, sheet int) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("binId")])]),e._v(" "),t("p",[e._v("ID in XLSX format in the binary table binary.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("sheet")])]),e._v(" "),t("p",[e._v("List number, starting from 1 by default.")])])]),e._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var count int\ncount = GetRowsCountXLSX(binid, 1)\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[e._v("#")]),e._v(" LangRes")]),e._v(" "),t("p",[e._v("Gibt eine mehrsprachige Ressource mit Namensbeschriftung für die Sprache lang zurück, die als zweistelliger Code angegeben ist, zum Beispiel: "),t("code",[e._v("en")]),e._v(", "),t("code",[e._v("zh")]),e._v(". Wenn für eine ausgewählte Sprache keine Sprache vorhanden ist, wird die Sprachressource des "),t("code",[e._v("en")]),e._v("-Labels zurückgegeben.,")]),e._v(" "),t("h4",{attrs:{id:"syntax-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(label string, lang string) string\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("label")])]),e._v(" "),t("p",[e._v("Name der Sprachressource.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("lang")])]),e._v(" "),t("p",[e._v("Zweistelliger Sprachcode.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-9"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('warning LangRes("@1confirm", "en")\nerror LangRes("@1problems", "zh")\n')])])]),t("h3",{attrs:{id:"block-bekommen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#block-bekommen"}},[e._v("#")]),e._v(" Block bekommen")]),e._v(" "),t("p",[e._v("Gibt relevante Informationen zu einem angegebenen Block zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetBlock(blockID int64) map\n\n")])])]),t("p",[e._v("*"),t("strong",[e._v("blockID")])]),e._v(" "),t("p",[e._v("Block-ID.")]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Return value")])])]),e._v(" "),t("p",[e._v("Gibt ein Array von Objekten zurück:")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("Ich würde")])]),e._v(" "),t("p",[e._v("Block-ID.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Time")])]),e._v(" "),t("p",[e._v("Zeitstempel der Blockgenerierung.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("key_id")])]),e._v(" "),t("p",[e._v("Die Kontoadresse des Verifizierungsknotens hat den Block generiert.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-10"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var b map\nb = GetBlock(1)\nPrintln(b)\n")])])]),t("h3",{attrs:{id:"dbeinfugen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbeinfugen"}},[e._v("#")]),e._v(" DBEinfügen")]),e._v(" "),t("p",[e._v("Fügt einer angegebenen Tabelle einen Eintrag hinzu und gibt die Eintrags-ID zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBInsert(table string, params map) int\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tblname")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Parameter")])]),e._v(" "),t("p",[e._v("Ein Array von Objekten, bei dem Schlüssel Feldnamen und Werte eingefügte Werte sind.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-11"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBInsert("mytable", {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"db-update"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#db-update"}},[e._v("#")]),e._v(" DB-Update")]),e._v(" "),t("p",[e._v("Ändert den Spaltenwert einer angegebenen Eintrags-ID in einer angegebenen Tabelle. Wenn die Eintrags-ID nicht in der Tabelle vorhanden ist, wird ein Fehler zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBUpdate(tblname string, id int, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tblname")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Eintrags-ID.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Params")])]),e._v(" "),t("p",[e._v("Ein Array von Objekten, bei dem Schlüssel Feldnamen und Werte neue Werte nach Änderungen sind.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-12"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBUpdate("mytable", myid, {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"db-updateext"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#db-updateext"}},[e._v("#")]),e._v(" DB-UpdateExt")]),e._v(" "),t("p",[e._v("Ändert den Wert einer Spalte in einer angegebenen Tabelle, die der Abfragebedingung entspricht.")]),e._v(" "),t("h4",{attrs:{id:"syntax-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBUpdateExt(tblname string, where map, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tblname")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("where")])]),e._v(" "),t("p",[e._v("Bedingungen abfragen.")]),e._v(" "),t("p",[e._v("Weitere Einzelheiten finden Sie unter "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("params")])])])]),e._v(" "),t("p",[e._v("Ein Array von Objekten, bei dem Schlüssel Feldnamen und Werte neue Werte nach Änderungen sind.")]),e._v(" "),t("h4",{attrs:{id:"beispiel-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-13"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBUpdateExt("mytable", {id: $key_id, ecosystem: $ecosystem_id}, {name: "John Smith", amount: 100})\n')])])]),t("h3",{attrs:{id:"spalte-loschen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#spalte-loschen"}},[e._v("#")]),e._v(" Spalte löschen")]),e._v(" "),t("p",[e._v("Löscht ein Feld in einer angegebenen Tabelle, das keine Datensätze enthält.")]),e._v(" "),t("h4",{attrs:{id:"syntax-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DelColumn(tblname string, column string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tblname")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("column")])]),e._v(" "),t("p",[e._v("The field to be deleted.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DelColumn("mytable", "mycolumn")\n')])])]),t("h3",{attrs:{id:"spalte-loschen-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#spalte-loschen-2"}},[e._v("#")]),e._v(" Spalte löschen")]),e._v(" "),t("p",[e._v("Löscht eine angegebene Tabelle, die keine Datensätze enthält.")]),e._v(" "),t("h4",{attrs:{id:"syntax-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DelTable(tblname string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tblname")])]),e._v(" "),t("p",[e._v("Table name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DelTable("mytable")\n')])])]),t("h3",{attrs:{id:"anhangen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anhangen"}},[e._v("#")]),e._v(" Anhängen")]),e._v(" "),t("p",[e._v("Fügt einen beliebigen Werttyp in das src-Array ein.")]),e._v(" "),t("h4",{attrs:{id:"syntax-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("p",[e._v("Append(src array, val anyType) array")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("src")])]),e._v(" "),t("p",[e._v("Das ursprüngliche Array.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("val")])]),e._v(" "),t("p",[e._v("Der einzufügende Wert.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-14"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var list array\nlist = Append(list, "new_val")\n')])])]),t("h3",{attrs:{id:"beitreten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beitreten"}},[e._v("#")]),e._v(" Beitreten")]),e._v(" "),t("p",[e._v("Kombiniert Elemente des in-Arrays zu einer Zeichenfolge mit einem angegebenen Sep-Trennzeichen.")]),e._v(" "),t("h4",{attrs:{id:"syntax-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Join(in array, sep string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("In")])]),e._v(" "),t("p",[e._v("Array-Name.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("sep")])]),e._v(" "),t("p",[e._v("Separator.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-15"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' var val string, myarr array\n myarr[0] = "first"\n myarr[1] = 10\n val = Join(myarr, ",")\n')])])]),t("h3",{attrs:{id:"teilt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#teilt"}},[e._v("#")]),e._v(" Teilt")]),e._v(" "),t("p",[e._v("Verwendet das Trennzeichen sep, um den in-String in Elemente aufzuteilen und sie in ein Array einzufügen.")]),e._v(" "),t("h4",{attrs:{id:"syntax-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Split(in string, sep string) array\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("In")])]),e._v(" "),t("p",[e._v("String.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("sep")])]),e._v(" "),t("p",[e._v("Separator.")])])]),e._v(" "),t("h4",{attrs:{id:"example-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var myarr array\nmyarr = Split("first,second,third", ",")\n')])])]),t("h3",{attrs:{id:"len"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#len"}},[e._v("#")]),e._v(" Len")]),e._v(" "),t("p",[e._v("Gibt die Anzahl der Elemente in einem angegebenen Array zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Len(val array) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("val")])]),e._v(" "),t("p",[e._v("Array.")])])]),e._v(" "),t("h4",{attrs:{id:"example-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("if Len(mylist) == 0 {\n ...\n}\n")])])]),t("h3",{attrs:{id:"reihe"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reihe"}},[e._v("#")]),e._v(" Reihe")]),e._v(" "),t("p",[e._v("Der Listenparameter darf in diesem Fall nicht angegeben werden. Gibt das erste Objekt-Array in der Array-Liste zurück. Wenn die Liste leer ist, wird ein leeres Ergebnis zurückgegeben. Diese Funktion wird meistens in Verbindung mit der Funktion "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" verwendet. Bei Verwendung dieser Funktion können Sie keine Parameter angeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" Row(list array) map\n")])])]),t("ul",[t("li",[t("strong",[e._v("list")])])]),e._v(" "),t("p",[e._v("Das Array von Objekten, das von der DBFind-Funktion zurückgegeben wird.")]),e._v(" "),t("h4",{attrs:{id:"beispiel-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-16"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' var ret map\n ret = DBFind("contracts").Columns("id,value").WhereId(10).Row()\n Println(ret)\n')])])]),t("h3",{attrs:{id:"ein"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ein"}},[e._v("#")]),e._v(" Ein")]),e._v(" "),t("p",[e._v("Gibt den Feldwert des ersten Objekt-Arrays in der Array-Liste zurück. Wenn das Listenarray leer ist, wird nil zurückgegeben. Es wird meistens in Verbindung mit der Funktion "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" verwendet. Bei Verwendung dieser Funktion können Sie keine Parameter angeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("One(list array, column string) string\n")])])]),t("ul",[t("li",[t("strong",[e._v("list")])])]),e._v(" "),t("p",[e._v("The array of objects returned by the DBFind function.")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("column")])]),e._v(" "),t("p",[e._v("Feldname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-17"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var ret string\nret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")\nif ret != nil {\n Println(ret)\n}\n')])])]),t("h3",{attrs:{id:"holen-sie-sich-kartenschlussel"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#holen-sie-sich-kartenschlussel"}},[e._v("#")]),e._v(" Holen Sie sich Kartenschlüssel")]),e._v(" "),t("p",[e._v("Gibt das Schlüsselarray im Objektarray zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetMapKeys(val map) array\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("val")])]),e._v(" "),t("p",[e._v("Objekt-Array.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-18"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var val map\nvar arr array\nval["k1"] = "v1"\nval["k2"] = "v2"\narr = GetMapKeys(val)\n')])])]),t("h3",{attrs:{id:"sortierte-schlussel"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sortierte-schlussel"}},[e._v("#")]),e._v(" Sortierte Schlüssel")]),e._v(" "),t("p",[e._v("Gibt ein sortiertes Schlüsselarray im Objektarray zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("SortedKeys(val map) array\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("val")])]),e._v(" "),t("p",[e._v("Objeckt array.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-19"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var val map\nvar arr array\nval["k2"] = "v2"\nval["k1"] = "v1"\narr = SortedKeys(val)\n')])])]),t("h3",{attrs:{id:"anrufvertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anrufvertrag"}},[e._v("#")]),e._v(" Anrufvertrag")]),e._v(" "),t("p",[e._v("Ruft den Vertrag mit einem angegebenen Namen auf. Alle Parameter des Datenabschnitts im Vertrag müssen in einem Objektarray enthalten sein. Diese Funktion gibt den Wert zurück, der der Variable "),t("strong",[e._v("$result")]),e._v(" durch einen bestimmten Vertrag zugewiesen wurde.")]),e._v(" "),t("h4",{attrs:{id:"syntax-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CallContract(name string, params map)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("name")])]),e._v(" "),t("p",[e._v("Der Name des aufgerufenen Vertrags.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("params")])]),e._v(" "),t("p",[e._v("Ein assoziatives Array der Vertragseingabedaten.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-20"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var par map\npar["Name"] = "My Name"\nCallContract("MyContract", par)\n')])])]),t("h3",{attrs:{id:"vertragszugang"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertragszugang"}},[e._v("#")]),e._v(" Vertragszugang")]),e._v(" "),t("p",[e._v("Überprüft, ob der Name des ausgeführten Vertrags mit einem der in den Parametern aufgeführten Namen übereinstimmt. Normalerweise wird es verwendet, um den Vertragszugriff auf Tabellen zu steuern. Beim Bearbeiten von Tabellenfeldern oder beim Einfügen und Hinzufügen neuer Spaltenfelder im Berechtigungsabschnitt der Tabelle geben Sie diese Funktion bitte in den Berechtigungsfeldern an.")]),e._v(" "),t("h4",{attrs:{id:"syntax-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ContractAccess(name string, [name string]) bool\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("name")])]),e._v(" "),t("p",[e._v("Vertragsname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-21"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('ContractAccess("MyContract")\nContractAccess("MyContract","SimpleContract")\n')])])]),t("h3",{attrs:{id:"vertragsbedingungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertragsbedingungen"}},[e._v("#")]),e._v(" Vertragsbedingungen")]),e._v(" "),t("p",[e._v("Ruft den Abschnitt Bedingungen im Vertrag mit einem angegebenen Namen auf.")]),e._v(" "),t("p",[e._v("Für diese Art von Verträgen muss der Datenabschnitt leer sein. Wenn der Abschnitt Bedingungen ohne Fehler ausgeführt wird, gibt er wahr zurück. Kommt es bei der Ausführung zu einem Fehler, wird auch der Muttervertrag aufgrund des Fehlers gekündigt. Diese Funktion dient in der Regel dazu, den Zugriff des Vertrags auf Tabellen zu steuern und kann bei der Bearbeitung von Systemtabellen in den Berechtigungsfeldern aufgerufen werden.")]),e._v(" "),t("h4",{attrs:{id:"syntax-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ContractConditions(name string, [name string]) bool\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("name")])]),e._v(" "),t("p",[e._v("Vertragsname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-22"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('ContractConditions("MainCondition")\n')])])]),t("h3",{attrs:{id:"eval-zustand"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#eval-zustand"}},[e._v("#")]),e._v(" Eval Zustand")]),e._v(" "),t("p",[e._v("Ruft den Wert des condfield-Felds im Datensatz mit einem 'name'-Feld aus der tablename-Tabelle ab und prüft die Bedingungen des condfield-Feldwerts.")]),e._v(" "),t("h4",{attrs:{id:"syntax-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EvalCondition(tablename string, name string, condfield string)\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("tablename")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("name")])]),e._v(" "),t("p",[e._v("Fragt den Wert mit dem Feld „Name“ ab.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("condfield")])]),e._v(" "),t("p",[e._v("Der Name des Felds, dessen Bedingungen überprüft werden müssen.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-23"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EvalCondition(`menu`, $Name, `conditions`)\n")])])]),t("h3",{attrs:{id:"vertrag-per-id-erhalten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertrag-per-id-erhalten"}},[e._v("#")]),e._v(" Vertrag per ID erhalten")]),e._v(" "),t("p",[e._v("Gibt seinen Vertragsnamen nach Vertrags-ID zurück. Wenn der Vertrag nicht gefunden wird, wird eine leere Zeichenfolge zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetContractById(id int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Die Vertrags-ID in den Verträgen der Vertragstabelle.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-24"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var name string\nname = GetContractById($IdContract)\n")])])]),t("h3",{attrs:{id:"vertrag-nach-namen-abrufen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertrag-nach-namen-abrufen"}},[e._v("#")]),e._v(" Vertrag nach Namen abrufen")]),e._v(" "),t("p",[e._v("Diese Funktion gibt ihre Vertrags-ID nach Vertragsname zurück. Wenn der Vertrag nicht gefunden wird, wird Null zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetContractByName(name string) int\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("name")])]),e._v(" "),t("p",[e._v("Der Vertragsname in der Vertragstabelle Contracts.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-25"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var id int\nid = GetContractByName(`NewBlock`)\n")])])]),t("h3",{attrs:{id:"rollenzugriff"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rollenzugriff"}},[e._v("#")]),e._v(" Rollenzugriff")]),e._v(" "),t("p",[e._v("Überprüft, ob die Rollen-ID des Vertragsaufrufers mit einer der im Parameter angegebenen IDs übereinstimmt.")]),e._v(" "),t("p",[e._v("Mit dieser Funktion können Sie den Vertragszugriff auf Tabellen und andere Daten steuern.")]),e._v(" "),t("h4",{attrs:{id:"syntax-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RoleAccess(id int, [id int]) bool\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Role ID.")])])]),e._v(" "),t("h4",{attrs:{id:"example-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RoleAccess(1)\nRoleAccess(1, 3)\n")])])]),t("h3",{attrs:{id:"transaktionsinfo"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#transaktionsinfo"}},[e._v("#")]),e._v(" Transaktionsinfo")]),e._v(" "),t("p",[e._v("Fragt Transaktionen anhand des angegebenen Hash-Werts ab und gibt Informationen über den ausgeführten Vertrag und seine Parameter zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("TransactionInfo(hash: string)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("hash")])]),e._v(" "),t("p",[e._v("Transaktions-Hash im hexadezimalen Zeichenfolgenformat.")])])]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Return value")])])]),e._v(" "),t("p",[e._v("Diese Funktion gibt einen String im JSON-Format zurück:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}\n')])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("contract")])]),e._v(" "),t("p",[e._v("Vertragsname.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("params")])])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v(" An Vertragsparameter übergebene Daten.\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("block")])]),e._v(" "),t("p",[e._v("ID des Blocks, der die Transaktion verarbeitet hat.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-26"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var out map\nout = JSONDecode(TransactionInfo(hash))\n")])])]),t("h3",{attrs:{id:"wurf"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#wurf"}},[e._v("#")]),e._v(" Wurf")]),e._v(" "),t("p",[e._v("Erzeugt einen Fehler vom Typ Ausnahme.")]),e._v(" "),t("h4",{attrs:{id:"syntax-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Throw(ErrorId string, ErrDescription string)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("ErrorId")])]),e._v(" "),t("p",[e._v("Fehlerkennung.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("ErrDescription")])]),e._v(" "),t("p",[e._v("Fehlerbeschreibung.")])])]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Return value")])])]),e._v(" "),t("p",[e._v("Das Format dieser Art von Transaktionsergebnissen:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{"type":"exception","error":"Error description","id":"Error ID"}\n')])])]),t("h4",{attrs:{id:"beispiel-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-27"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Throw("Problem", "There is a problem")\n')])])]),t("h3",{attrs:{id:"bedingung-validieren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bedingung-validieren"}},[e._v("#")]),e._v(" Bedingung validieren")]),e._v(" "),t("p",[e._v("Versucht, die vom Bedingungsparameter angegebenen Bedingungen zu kompilieren. Tritt während des Kompiliervorgangs ein Fehler auf, wird ein Fehler generiert und der aufgerufene Vertrag beendet. Diese Funktion dient dazu, die Korrektheit des bedingten Formats zu überprüfen.")]),e._v(" "),t("h4",{attrs:{id:"syntax-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ValidateCondition(condition string, state int)\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Condition")])]),e._v(" "),t("p",[e._v("Das bedingte Format, das überprüft werden muss.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("State")])]),e._v(" "),t("p",[e._v("Ökosystem-ID. Wenn Sie die globale Bedingung überprüfen, geben Sie sie bitte als 0 an.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-28"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('ValidateCondition(`ContractAccess("@1MyContract")`, 1)\n')])])]),t("h3",{attrs:{id:"adresse-bis-id"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adresse-bis-id"}},[e._v("#")]),e._v(" Adresse bis ID")]),e._v(" "),t("p",[e._v("Gibt die entsprechende Kontoadresse nach Wallet-Adresse zurück. Wenn eine ungültige Adresse angegeben wird, wird '0' zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(address string) int\n\n")])])]),t("ul",[t("li",[t("p",[e._v("Address")]),e._v(" "),t("p",[e._v("Wallet address in "),t("code",[e._v("XXXX-...-XXXX")]),e._v(" format or number format.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-29"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("wallet = AddressToId($Recipient)\n")])])]),t("h3",{attrs:{id:"id-zu-adresse"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#id-zu-adresse"}},[e._v("#")]),e._v(" ID zu Adresse")]),e._v(" "),t("p",[e._v("Gibt die entsprechende Brieftaschenadresse nach Kontoadresse zurück. Wenn eine ungültige Adresse angegeben wird, wird die ungültige Adresse "),t("code",[e._v("invalid")]),e._v(" zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("IdToAddress(id int) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Id")])]),e._v(" "),t("p",[e._v("Kontoadresse.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-30"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("$address = IdToAddress($id)\n")])])]),t("h3",{attrs:{id:"pub-zu-id"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pub-zu-id"}},[e._v("#")]),e._v(" Pub zu ID")]),e._v(" "),t("p",[e._v("Die Kontoadresse wird per öffentlichem Schlüssel im Hexadezimalformat zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("PubToID(hexkey string) int\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("hexkey")])]),e._v(" "),t("p",[e._v("Der öffentliche Schlüssel im Hexadezimalformat.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-31"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var wallet int\nwallet = PubToID("04fa5e78.....34abd6")\n')])])]),t("h3",{attrs:{id:"dekodierenbase64"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dekodierenbase64"}},[e._v("#")]),e._v(" DekodierenBase64")]),e._v(" "),t("p",[e._v("Gibt eine Zeichenfolge zurück, indem das base64-Format angegeben wird")]),e._v(" "),t("h4",{attrs:{id:"syntax-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DecodeBase64(input string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Input")])]),e._v(" "),t("p",[e._v("String in base64 format.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-32"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("val = DecodeBase64(mybase64)\n")])])]),t("h3",{attrs:{id:"kodierenbase64"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kodierenbase64"}},[e._v("#")]),e._v(" KodierenBase64")]),e._v(" "),t("p",[e._v("Gibt eine Zeichenfolge im Base64-Format zurück, indem eine Zeichenfolge angegeben wird.")]),e._v(" "),t("h4",{attrs:{id:"syntax-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EncodeBase64(input string) string\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Input")])]),e._v(" "),t("p",[e._v("Die zu codierende Zeichenfolge.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-33"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var base64str string\nbase64str = EncodeBase64("my text")\n')])])]),t("h3",{attrs:{id:"schweben"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#schweben"}},[e._v("#")]),e._v(" Schweben")]),e._v(" "),t("p",[e._v("Konvertiert eine ganze Zahl oder einen String in eine Gleitkommazahl.")]),e._v(" "),t("h4",{attrs:{id:"syntax-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Float(val int|string) float\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("val")])]),e._v(" "),t("p",[e._v("Eine Ganzzahl oder Zeichenfolge.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-34"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('val = Float("567.989") + Float(232)\n')])])]),t("h3",{attrs:{id:"hextobytes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hextobytes"}},[e._v("#")]),e._v(" HexToBytes")]),e._v(" "),t("p",[e._v("Konvertiert eine Zeichenfolge im Hexadezimalformat in Bytes vom Typ Bytes.")]),e._v(" "),t("h4",{attrs:{id:"syntax-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" HexToBytes(hexdata string) bytes\n\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("hexdata")])]),e._v(" "),t("p",[e._v("Eine Zeichenfolge im Hexadezimalformat.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-35"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('var val bytes\nval = HexToBytes("34fe4501a4d80094")\n')])])]),t("h3",{attrs:{id:"geld-formatieren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#geld-formatieren"}},[e._v("#")]),e._v(" Geld formatieren")]),e._v(" "),t("p",[e._v("Gibt den Zeichenfolgenwert von exp / 10 ^ Ziffer zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("FormatMoney(exp string, digit int) string\n")])])]),t("ul",[t("li",[t("p",[t("strong",[e._v("Exp")])]),e._v(" "),t("p",[e._v("A number in string format.")])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("digit")])]),e._v(" "),t("p",[e._v("Der Exponent (positiv oder negativ) von 10 im Ausdruck "),t("code",[e._v("Exp/10^digit")]),e._v(". Positive Werte bestimmen Nachkommastellen.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-36"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' s = FormatMoney("78236475917384", 0)\n')])])]),t("h3",{attrs:{id:"zufallig"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#zufallig"}},[e._v("#")]),e._v(" Zufällig")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Returns a random number between min and max (min <= result Time2.")])]),e._v(" "),t("h4",{attrs:{id:"beispiel-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-11"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(CmpTime(#time1#, #time2#)<0){...}\n")])])]),t("h3",{attrs:{id:"code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#code"}},[e._v("#")]),e._v(" Code")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Codeelement, um den angegebenen Code anzuzeigen.")]),e._v(" "),t("p",[e._v("Es ersetzt eine Variable durch den Wert der Variablen (z. B. "),t("code",[e._v("#name#")]),e._v(").")]),e._v(" "),t("h4",{attrs:{id:"syntax-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code(Text)\n")])])]),t("blockquote",[t("p",[e._v("Code")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Quellcode.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-12"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code( P(This is the first line.\n Span(This is the second line.))\n)\n")])])]),t("h3",{attrs:{id:"codeasis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#codeasis"}},[e._v("#")]),e._v(" CodeAsIs")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Codeelement, um den angegebenen Code anzuzeigen.\nEs ersetzt keine Variable durch ihren Wert. Beispielsweise wird "),t("code",[e._v("#name#")]),e._v(" unverändert angezeigt.")]),e._v(" "),t("h4",{attrs:{id:"syntax-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs(Text)\n")])])]),t("blockquote",[t("p",[e._v("CodeAsIs")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-13"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs( P(This is the #test1#.\n Span(This is the #test2#.))\n)\n")])])]),t("h3",{attrs:{id:"daten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daten"}},[e._v("#")]),e._v(" Daten")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Datenelement, füllen Sie es mit den angegebenen Daten und legen Sie es in Quelle ab. Dann können Sie Source als Dateneingabe in "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" und anderen Funktionen erhalten. Die Reihenfolge der Spaltennamen entspricht der Reihenfolge der Dateneingabewerte.")]),e._v(" "),t("h4",{attrs:{id:"syntax-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Data(Source,Columns,Data)\n [.Custom(Column){Body}]\n")])])]),t("blockquote",[t("p",[e._v("Data")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle. Als Datenquelle können Sie einen beliebigen Namen angeben, der später an andere Funktionen übergeben wird.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Columns")])]),e._v(" "),t("p",[e._v("Eine durch Kommas getrennte Liste von Spaltennamen.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")]),e._v("\nDatensatz.")]),e._v(" "),t("p",[e._v("Ein Datensatz pro Zeile. Spaltenwerte müssen durch Kommas getrennt werden. Daten und Spalten sollten in derselben Reihenfolge festgelegt werden.")]),e._v(" "),t("p",[e._v("Werte mit Kommas sollten in doppelte Anführungszeichen gesetzt werden ("),t("code",[e._v('"example1, example2", 1, 2')]),e._v("). Werte in Anführungszeichen sollten in zwei doppelte Anführungszeichen gesetzt werden ("),t("code",[e._v('"""example", "example2""", 1, 2')]),e._v(").")])])]),e._v(" "),t("h3",{attrs:{id:"benutzerdefiniert"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#benutzerdefiniert"}},[e._v("#")]),e._v(" Benutzerdefiniert")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v(" Sie können Daten berechnete Spalten zuweisen. Beispielsweise können Sie Feldvorlagen für Schaltflächen und andere Seitenlayoutelemente angeben. Diese Feldvorlagen werden normalerweise [Table](#table) und anderen Funktionen zum Empfangen von Daten zugewiesen.\n Verwenden Sie mehrere benutzerdefinierte Funktionen, wenn Sie mehrere berechnete Spalten zuweisen möchten.\n")])])]),t("ul",[t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Spaltenname, der eindeutig und obligatorisch ist.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Codeblock. Sie können "),t("code",[e._v("#columnname#")]),e._v(" verwenden, um Werte aus anderen Spalten im Eintrag zu erhalten, und diese Werte dann in Codeblöcken verwenden.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-14"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"id,name"){\n "1",John Silver\n 2,"Mark, Smith"\n 3,"Unknown ""Person"""\n }.Custom(link){Button(Body: View, Class: btn btn-link, Page: user, PageParams: "id=#id#"}\n')])])]),t("h3",{attrs:{id:"terminzeit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#terminzeit"}},[e._v("#")]),e._v(" Terminzeit")]),e._v(" "),t("p",[e._v("Zeigt Uhrzeit und Datum im angegebenen Format an.")]),e._v(" "),t("h4",{attrs:{id:"syntax-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(DateTime, Format)\n")])])]),t("blockquote",[t("p",[e._v("DateTime")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("DateTime")])]),e._v(" "),t("p",[e._v("Uhrzeit und Datum, ausgedrückt im Unixtime- oder Standardformat "),t("code",[e._v("2006-01-02T15:04:05")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("Formatvorlage: Jahr im 2-stelligen Format "),t("code",[e._v("YY")]),e._v(", 4-stelliges Format "),t("code",[e._v("YYYY")]),e._v(", Monat in "),t("code",[e._v("MM")]),e._v(", Tag in "),t("code",[e._v("DD")]),e._v(", Stunde in "),t("code",[e._v("HH")]),e._v(", Minute in "),t("code",[e._v("MM")]),e._v(", Sekunde in "),t("code",[e._v("SS")]),e._v(" , z. B.: "),t("code",[e._v("JJ/MM/TT HH:MM")]),e._v(".\nWenn es nicht angegeben ist oder fehlt, wird "),t("code",[e._v("YYYY-MM-DD HH:MI:SS")]),e._v(" verwendet.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-15"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(2017-11-07T17:51:08)\nDateTime(#mytime#,HH:MI DD.MM.YYYY)\n")])])]),t("h3",{attrs:{id:"dbfind"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbfind"}},[e._v("#")]),e._v(" DBFind")]),e._v(" "),t("p",[e._v("Erstellen Sie ein dbfind-Element, füllen Sie es mit den Daten der Tabelle table und fügen Sie es in die Source-Struktur ein, die später für die Eingabedaten von "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" und anderen Funktionen Source verwendet werden kann.")]),e._v(" "),t("h4",{attrs:{id:"syntax-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBFind(table, Source)\n [.Columns(columns)]\n [.Where(conditions)]\n [.WhereId(id)]\n [.Order(name)]\n [.Limit(limit)]\n [.Offset(offset)]\n [.Count(countvar)]\n [.Ecosystem(id)]\n [.Cutoff(columns)]\n [.Custom(Column){Body}]\n [.Vars(Prefix)]\n")])])]),t("blockquote",[t("p",[e._v("DBFind")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("table")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Säulen")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("columns")])]),e._v(" "),t("p",[e._v("Wenn nicht angegeben, wird eine Liste aller Felder zurückgegeben. Wenn ein Feld vom Typ JSON vorhanden ist, können Sie die folgende Syntax verwenden, um das Datensatzfeld zu verarbeiten: "),t("code",[e._v("columnname->fieldname")]),e._v(". In diesem Fall lautet der generierte Feldname "),t("code",[e._v("columnname.fieldname")]),e._v(".")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Woher")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("conditions")])])]),e._v(" "),t("p",[e._v("Datenabfragebedingungen. Siehe DBFind.\nWenn ein Feld vom Typ JSON vorhanden ist, können Sie die folgende Syntax verwenden, um das Datensatzfeld zu verarbeiten:\n"),t("code",[e._v("columnname->fieldname")]),e._v(".")]),e._v(" "),t("blockquote",[t("p",[e._v("WhereId\nQuery by ID, e.g. "),t("code",[e._v(".WhereId(1)")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Entry ID.")]),e._v(" "),t("blockquote",[t("p",[e._v("Befehl\nNach Feld sortieren.\nWeitere Informationen zur Sortiersyntax finden Sie unter "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("name")])])]),e._v(" "),t("p",[e._v("Feldname")]),e._v(" "),t("blockquote",[t("p",[e._v("Grenze")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("limit")])]),e._v(" "),t("p",[e._v("Die Anzahl der zurückgegebenen Einträge, standardmäßig 25. Die maximale Anzahl beträgt 10.000.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Offset")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Offset")])]),e._v(" "),t("p",[e._v("Offset.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Zählen")])]),e._v(" "),t("p",[e._v("Geben Sie die Gesamtzahl der Zeilen der Wo-Bedingung an.\nDie Gesamtzahl wird nicht nur in einer Variablen gespeichert, sondern auch im count-Parameter des dbfind-Elements zurückgegeben.")]),e._v(" "),t("p",[e._v("Wenn Where und WhereID nicht angegeben sind, wird die Gesamtzahl der Zeilen in der Tabelle zurückgegeben.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("countvar")])]),e._v(" "),t("p",[e._v("Name der Variablen, die die Zeilenanzahl enthält.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Ökosystem")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("ID")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Ökosystem-ID. Standardmäßig stammen die Daten aus der angegebenen Tabelle im aktuellen Ökosystem.\n")])])]),t("blockquote",[t("p",[e._v("Cutoff")])]),e._v(" "),t("p",[e._v("Wird zum Ausschneiden und Anzeigen großer Textdatenmengen verwendet.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("columns")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Eine durch Kommas getrennte Liste von Feldern, die von der Cutoff-Funktion verarbeitet werden müssen.\nDer Feldwert wird durch ein JSON-Objekt ersetzt, das zwei Felder hat: link link und title title. Wenn der Feldwert mehr als 32 Zeichen enthält, wird ein Link zurückgegeben, der auf die ersten 32 Zeichen des Volltexts zeigt. Wenn der Feldwert 32 Zeichen oder weniger enthält, wird der Link auf ungültig gesetzt und der Titel enthält den vollständigen Feldwert.\n")])])]),t("blockquote",[t("p",[e._v("Benutzerdefiniert")])]),e._v(" "),t("p",[e._v("Sie können Daten berechnete Spalten zuweisen. Beispielsweise können Sie Feldvorlagen für Schaltflächen und andere Seitenlayoutelemente angeben. Diese Feldvorlagen werden normalerweise "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" und anderen Funktionen zum Empfangen von Daten zugewiesen.\nWenn Sie mehrere berechnete Spalten zuweisen möchten, verwenden Sie mehrere benutzerdefinierte Funktionen.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Column")])])]),e._v(" "),t("p",[e._v("Spaltenname, der eindeutig und obligatorisch ist.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Body")])])]),e._v(" "),t("p",[e._v("Codeblock. Sie können "),t("code",[e._v("#columnname#")]),e._v(" verwenden, um Werte aus anderen Spalten im Eintrag zu erhalten, und diese Werte dann in Codeblöcken verwenden.")]),e._v(" "),t("blockquote",[t("p",[e._v("Vars")])]),e._v(" "),t("p",[e._v("Die erste von der Abfrage erhaltene Zeile generiert eine Reihe von Variablen mit Werten. Wenn er angegeben wird, wird der Limit-Parameter automatisch 1, und es wird nur ein (1) Datensatz zurückgegeben.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Prefix")])])]),e._v(" "),t("p",[e._v("Das dem Variablennamen hinzugefügte Präfix. Sein Format ist "),t("code",[e._v("#prefix_columnname#")]),e._v(", wobei der Spaltenname direkt auf den Unterstrich folgt. Wenn eine Spalte ein JSON-Feld enthält, hat die generierte Variable das folgende Format: "),t("code",[e._v("#prefix_columnname_field#")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"beispiel-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-16"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(parameters,myparam)\nDBFind(parameters,myparam).Columns(name,value).Where({name:"money"})\nDBFind(parameters,myparam).Custom(myid){Strong(#id#)}.Custom(myname){\n Strong(Em(#name#))Div(myclass, #company#)\n}\n')])])]),t("h3",{attrs:{id:"div"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#div"}},[e._v("#")]),e._v(" Div")]),e._v(" "),t("p",[e._v("Erstellen Sie ein div-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(Class, Body)\n [.Style(Style)]\n [.Show(Condition)]\n [.Hide(Condition)]\n")])])]),t("blockquote",[t("p",[e._v("Div")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname der div.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordnetes Element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Stil")])]),e._v(" "),t("p",[e._v("Der angegebene CSS-Stil.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS stil.")]),e._v(" "),t("blockquote",[t("p",[e._v("Zeigen")])]),e._v(" "),t("p",[e._v("Definieren Sie die Bedingungen für die Anzeige von Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("Siehe Ausblenden unten.")]),e._v(" "),t("blockquote",[t("p",[e._v("Ausblenden")])]),e._v(" "),t("p",[e._v("Definieren Sie die Bedingungen für das Ausblenden von Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("Das Ausdrucksformat ist "),t("code",[e._v("InputName=Value")]),e._v(", wenn alle Ausdrücke wahr sind, ist "),t("em",[e._v("Condition")]),e._v(" wahr, und wenn der Wert von "),t("code",[e._v("InputName")]),e._v(" gleich "),t("code",[e._v("Value")]),e._v(" ist, ist "),t("em",[e._v("Condition")]),e._v(" wahr. Wenn mehrere "),t("em",[e._v("Show")]),e._v(" oder "),t("em",[e._v("Hide")]),e._v(" aufgerufen werden, muss mindestens ein "),t("em",[e._v("Condition")]),e._v("-Parameter wahr sein.")]),e._v(" "),t("h4",{attrs:{id:"beispiel-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-17"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Form(){\n Div(text-left){\n Input(Name: "broadcast", Type: "checkbox", Value: "false")\n }\n Div(text-left){\n hello\n }.Show("broadcast=false")\n Div(text-left){\n world\n }.Hide("broadcast=false")\n}\n')])])]),t("h3",{attrs:{id:"ecosysparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecosysparam"}},[e._v("#")]),e._v(" EcosysParam")]),e._v(" "),t("p",[e._v("Diese Funktion erhält Parameterwerte aus der Ökosystemparametertabelle des aktuellen Ökosystems. Wenn der zurückgegebene Ergebnisname die Sprachressourcen enthält, wird er entsprechend übersetzt.")]),e._v(" "),t("h4",{attrs:{id:"syntax-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EcosysParam(Name, Index, Source)\n")])])]),t("blockquote",[t("p",[e._v("EcosysParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parametername.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("Wenn der angeforderte Parameter eine Liste von durch Kommas getrennten Elementen ist, können Sie einen Index beginnend mit 1 angeben. Beispiel: if "),t("code",[e._v("gender = male,female")]),e._v(", dann "),t("code",[e._v("gender = male,female")]),e._v(" kehrt zurück "),t("code",[e._v("female")]),e._v(".")])])]),e._v(" "),t("p",[e._v("Er kann nicht in Verbindung mit dem Source-Parameter verwendet werden.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Es kann verwendet werden, wenn der Parameterwert eine durch Kommas getrennte Liste ist.\nErstellen Sie ein Datenobjekt, dessen Elemente die Werte der angegebenen Parameter sind. Dieses Objekt kann als Datenquelle für die Funktionen "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" und "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" verwendet werden.\nEr kann nicht in Verbindung mit dem Index-Parameter verwendet werden.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(EcosysParam(founder_account))\nEcosysParam(gender, Source: mygender)\n\nEcosysParam(Name: gender_list, Source: src_gender)\nSelect(Name: gender, Source: src_gender, NameColumn: name, ValueColumn: id)\n")])])]),t("h3",{attrs:{id:"em"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#em"}},[e._v("#")]),e._v(" Em")]),e._v(" "),t("p",[e._v("Erstellen Sie ein em-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Em(Body, Class)\n")])])]),t("blockquote",[t("p",[e._v("Em")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordneter Text oder untergeordnetes Element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Der em-Klassenname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-18"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("This is an Em(important news).\n")])])]),t("h3",{attrs:{id:"forlist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#forlist"}},[e._v("#")]),e._v(" ForList")]),e._v(" "),t("p",[e._v("Zeigen Sie die Liste der Elemente in der Quelldatenquelle im Vorlagenformat an, das in Body festgelegt ist, und erstellen Sie ein "),t("strong",[e._v("forlist")]),e._v("-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(Source, Index){Body}\n")])])]),t("blockquote",[t("p",[e._v("ForList")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Datenquelle, die von der Funktion "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" oder "),t("a",{attrs:{href:"#data"}},[e._v("Data")]),e._v(" abgerufen wird.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("Die Variable des Iterationszählers, beginnend bei 1.\nEin optionaler Parameter. Wenn nicht angegeben, wird der Iterationszählerwert in die Variable [Source] _index geschrieben.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])])])]),e._v(" "),t("p",[e._v("Vorlage zum Einfügen von Elementen.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(mysrc){Span(#mysrc_index#. #name#)}\n")])])]),t("h3",{attrs:{id:"form"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Formular-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(Class, Body) [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Form")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordneter Text oder untergeordnetes Element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname des Formulars.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style\nThe CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS stil.")]),e._v(" "),t("h4",{attrs:{id:"beispiel-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-19"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(class1 class2, Input(myid))\n")])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[e._v("#")]),e._v(" GetColumnType")]),e._v(" "),t("p",[e._v("Gibt den Felddatentyp einer bestimmten Tabelle zurück.")]),e._v(" "),t("p",[e._v("Zu den zurückgegebenen Typen gehören: "),t("code",[e._v("text, varchar, number, money, double, bytes, json, datetime, double")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetColumnType(Table, Column)\n")])])]),t("blockquote",[t("p",[e._v("GetColumnType")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Table")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Feldname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-20"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("SetVar(coltype,GetColumnType(members, member_name))Div(){#coltype#}\n")])])]),t("h3",{attrs:{id:"verlauf-abrufen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#verlauf-abrufen"}},[e._v("#")]),e._v(" Verlauf abrufen")]),e._v(" "),t("p",[e._v("Erstellen Sie ein gethistory-Element und füllen Sie es mit den Änderungshistoriendatensätzen der Einträge in der angegebenen Tabelle. Die generierten Daten werden im Quellelement platziert, das später in der Quelleingabefunktion verwendet werden kann (z. B. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nDas Array wird in der Reihenfolge der letzten Änderung sortiert.\nDas ID-Feld im Array zeigt auf die ID der rollback_tx-Tabelle. block_id stellt die Block-ID dar, block_time stellt den Zeitstempel der Blockgenerierung dar.")]),e._v(" "),t("h4",{attrs:{id:"syntax-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(Source, Name, Id, RollbackId)\n")])])]),t("blockquote",[t("p",[e._v("GetHistory")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Id")])]),e._v(" "),t("p",[e._v("Entry ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("RollbackId")])]),e._v(" "),t("p",[e._v("Ein optionaler Parameter. Wenn angegeben, wird nur ein Datensatz mit der angegebenen ID aus der Tabelle rollback_tx zurückgegeben.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-21"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(blocks, BlockHistory, 1)\n")])])]),t("h3",{attrs:{id:"getvar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getvar"}},[e._v("#")]),e._v(" GetVar")]),e._v(" "),t("p",[e._v("Es gibt den Wert der angegebenen Variablen zurück, die bereits vorhanden ist, oder eine leere Zeichenfolge, wenn sie nicht vorhanden ist.\nDas getvar-Element wird nur erstellt, wenn ein bearbeitbarer Baum angefordert wird. Der Unterschied zwischen "),t("code",[e._v("GetVar(varname)")]),e._v(" und "),t("code",[e._v("#varname")]),e._v(" besteht darin, dass GetVar einen leeren String zurückgibt, wenn varname nicht existiert, während #varname# als Stringwert interpretiert wird.")]),e._v(" "),t("h4",{attrs:{id:"syntax-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetVar(Name)\n")])])]),t("blockquote",[t("p",[e._v("GetVar")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Variable name.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-22"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(GetVar(name)){#name#}.Else{Name is unknown}\n")])])]),t("h3",{attrs:{id:"hinweis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hinweis"}},[e._v("#")]),e._v(" Hinweis")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Hinweiselement für Hinweise.")]),e._v(" "),t("h4",{attrs:{id:"syntax-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Hint(Icon,Title,Text)\n")])])]),t("blockquote",[t("p",[e._v("Hint")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Symbolname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Hinweis Titel.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Hinweistext.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-23"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Hint(Icon: "icon-wrench",Title:$@1pa_settings$,Text: This is a hint text)\n')])])]),t("h3",{attrs:{id:"if"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#if"}},[e._v("#")]),e._v(" If")]),e._v(" "),t("p",[e._v("Bedingungsaussage.\nGibt das erste untergeordnete If- oder ElseIf-Element zurück, das Bedingung erfüllt. Geben Sie andernfalls das untergeordnete Else-Element zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Condition){ Body}\n [.ElseIf(Condition){ Body }]\n [.Else{ Body }]\n")])])]),t("blockquote",[t("p",[e._v("If")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Condition")])]),e._v(" "),t("p",[e._v("Wenn die Bedingung gleich einer leeren Zeichenfolge, 0 oder falsch ist, wird davon ausgegangen, dass die Bedingung nicht erfüllt ist. In allen anderen Fällen gilt diese Bedingung als erfüllt.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordnetes Element.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-24"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(#value#){\n Span(Value)\n}.ElseIf(#value2#){Span(Value 2)\n}.ElseIf(#value3#){Span(Value 3)}.Else{\n Span(Nothing)\n}\n")])])]),t("h3",{attrs:{id:"bild"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bild"}},[e._v("#")]),e._v(" Bild")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Bild-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src, Alt, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Image")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Src")])]),e._v(" "),t("p",[e._v("Bildquelle, Datei bzw "),t("code",[e._v("data:...")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Alt")])]),e._v(" "),t("p",[e._v("Alternativtext, wenn das Bild nicht angezeigt werden kann.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Сlass")])]),e._v(" "),t("p",[e._v("Bildklassenname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-25"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src: Binary().ById(#id#), Class: preview).Style(height: 40px; widht 40px;)\n")])])]),t("h3",{attrs:{id:"bildeingabe"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bildeingabe"}},[e._v("#")]),e._v(" Bildeingabe")]),e._v(" "),t("p",[e._v("Erstellen Sie ein imageinput-Element, um ein Bild hochzuladen.")]),e._v(" "),t("h4",{attrs:{id:"syntax-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(Name, Width, Ratio, Format)\n")])])]),t("blockquote",[t("p",[e._v("ImageInput")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Elementname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Breite des zugeschnittenen Bildes.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ratio")])]),e._v(" "),t("p",[e._v("Seitenverhältnis oder Bildhöhe.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("Das Format des hochgeladenen Bildes.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-26"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(avatar, 100, 2/1)\n")])])]),t("h3",{attrs:{id:"enthalten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enthalten"}},[e._v("#")]),e._v(" Enthalten")]),e._v(" "),t("p",[e._v("Fügen Sie die Vorlage mit einem bestimmten Namen in den Seitencode ein.")]),e._v(" "),t("h4",{attrs:{id:"syntax-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Include(Name)\n")])])]),t("blockquote",[t("p",[e._v("Include")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Vorlagenname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-27"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(myclass, Include(mywidget))\n")])])]),t("h3",{attrs:{id:"eingabe"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#eingabe"}},[e._v("#")]),e._v(" Eingabe")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Eingabe-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name, Class, Placeholder, Type, Value, Disabled)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Eingang")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Elementname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Placeholder")])]),e._v(" "),t("p",[e._v("Fordern Sie den erwarteten Wert des Eingabefelds an.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Eingabetyp.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Elementwert.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Disabled")])]),e._v(" "),t("p",[e._v("Deaktivieren Sie das Eingabeelement.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validieren Sie den Parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("Der angegebene CSS-Stil.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-28"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name: name, Type: text, Placeholder: Enter your name)\nInput(Name: num, Type: text).Validate(minLength: 6, maxLength: 20)\n")])])]),t("h3",{attrs:{id:"inputerr"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputerr"}},[e._v("#")]),e._v(" InputErr")]),e._v(" "),t("p",[e._v("Erstellen Sie ein inputerr-Element, um den Fehlertext zu validieren.")]),e._v(" "),t("h4",{attrs:{id:"syntax-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name,validation errors)]\n")])])]),t("blockquote",[t("p",[e._v("InputErr")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Entspricht dem Namen des Elements "),t("a",{attrs:{href:"#input"}},[e._v("Input")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("validation errors")])])])]),e._v(" "),t("p",[e._v("Validierungsfehlermeldung für einen oder mehrere Parameter.")]),e._v(" "),t("h4",{attrs:{id:"beispiel-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-29"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name: name,\nminLength: Value is too short,\nmaxLength: The length of the value must be less than 20 characters)\n")])])]),t("h3",{attrs:{id:"inputmap"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputmap"}},[e._v("#")]),e._v(" InputMap")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Texteingabefeld für die Adresse, um Koordinaten auf der Karte auszuwählen.")]),e._v(" "),t("h4",{attrs:{id:"syntax-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputMap(Name, Typ, Kartentyp, Wert)\n")])])]),t("blockquote",[t("p",[e._v("InputMap")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Elementname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Standardwert.\nDer Wert ist ein Objekt im String-Format. Zum Beispiel, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". Wenn die InputMap mit dem vordefinierten Wert erstellt wird, kann das Adressfeld verwendet werden, um den Adresswert zu speichern, damit er nicht ungültig wird.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Art der Kartenpunktkartierung:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("polygon")]),e._v(" - gibt den Bereich einer geschlossenen Schleife mit mehreren Punkten an;")]),e._v(" "),t("li",[t("code",[e._v("Line")]),e._v(" - bedeutet eine Polylinie mit mehreren Punkten ohne geschlossene Schleife;")]),e._v(" "),t("li",[t("code",[e._v("Point")]),e._v(" - gibt eine einzelne Punktkoordinate an.")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Kartentyp.\nEs hat folgende Werte: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-30"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('InputMap(Name: Coords,Type: polygon, MapType: hybrid, Value: `{"zoom":8, "center":{"lat":55.749942860682545,"lng":37.6207172870636}}`)\n')])])]),t("h3",{attrs:{id:"jsontosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jsontosource"}},[e._v("#")]),e._v(" JsonToSource")]),e._v(" "),t("p",[e._v("Erstellen Sie ein jsontosource-Element und füllen Sie es mit den Schlüssel-Wert-Paaren eines JSON-Arrays. Die erhaltenen Daten werden in das Source-Element gestellt, das später in der Source-Eingabefunktion verwendet werden kann (z. B. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nDie Datensätze in den Ergebnisdaten sind alphabetisch nach JSON-Schlüssel sortiert.")]),e._v(" "),t("h4",{attrs:{id:"syntax-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("JsonToSource(Source, Data)\n")])])]),t("blockquote",[t("p",[e._v("JsonToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("Ein JSON-Objekt oder ein Variablenname, der ein JSON-Objekt enthält ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-31"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('JsonToSource(src, #myjson#)\nJsonToSource(dat, {"param":"value", "param2": "value 2"})\n')])])]),t("h3",{attrs:{id:"label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#label"}},[e._v("#")]),e._v(" Label")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Label-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(Body, Class, For)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Label")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordneter Text oder untergeordnetes Element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("For")])]),e._v(" "),t("p",[e._v("An ein Formularelement binden.")])])]),e._v(" "),t("blockquote",[t("p",[t("code",[e._v("StyleThe")]),e._v(":CSS-Stil angegeben.")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS stil.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-32"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(The first item).\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[e._v("#")]),e._v(" LangRes")]),e._v(" "),t("p",[e._v("Gibt eine bestimmte Sprachressource zurück. Wenn Sie aufgefordert werden, den Baum zu bearbeiten, wird das langres-Element zurückgegeben, und Sie können das Kurzformatsymbol $langres$ verwenden.")]),e._v(" "),t("h4",{attrs:{id:"syntax-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(Name)\n")])])]),t("blockquote",[t("p",[e._v("LangRes")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name der Sprachressource.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-33"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(name)\nLangRes(myres)\n")])])]),t("h3",{attrs:{id:"linkpage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linkpage"}},[e._v("#")]),e._v(" LinkPage")]),e._v(" "),t("p",[e._v("Erstellen Sie ein linkpage-Element, das auf die Seite verlinkt.")]),e._v(" "),t("h4",{attrs:{id:"syntax-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LinkPage(Body, Page, Class, PageParams)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("LinkPage")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordneter Text oder untergeordnetes Element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name der Weiterleitungsseite.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Name der Schaltflächenklasse.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Seitenparameter umleiten.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("Der angegebene CSS-Stil.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS stil")]),e._v(" "),t("h4",{attrs:{id:"beispiel-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-34"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: "v_role_id=#recipient.role_id#")\n')])])]),t("h3",{attrs:{id:"map"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#map"}},[e._v("#")]),e._v(" Map")]),e._v(" "),t("p",[e._v("Erstellen Sie eine visuelle Karte und zeigen Sie Koordinaten in einem beliebigen Format an.")]),e._v(" "),t("h4",{attrs:{id:"syntax-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Map(Hmap, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("Map")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Hmap")])]),e._v(" "),t("p",[e._v("Höhe eines HTML-Elements auf der Seite.\nDer Standardwert ist 100.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Kartenwert, ein Objekt im Zeichenfolgenformat.\nZum Beispiel, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". Ob "),t("code",[e._v("center")]),e._v(" nicht angegeben ist, passt sich das Kartenfenster automatisch an die angegebenen Koordinaten an.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Kartentyp.\nEs hat folgende Werte: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-35"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Map(MapType:hybrid, Hmap:400, Value:{"coords":[{"lat":55.58774531752405,"lng":36.97260184619233},{"lat":55.58396161622043,"lng":36.973803475831005},{"lat":55.585222890513975,"lng":36.979811624024364},{"lat":55.58803635636347,"lng":36.978781655762646}],"area":146846.65783403456,"address":"Unnamed Road, Moscow, Russia, 143041"})\n')])])]),t("h3",{attrs:{id:"menugroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menugroup"}},[e._v("#")]),e._v(" MenuGroup")]),e._v(" "),t("p",[e._v("Erstellen Sie ein verschachteltes Untermenü im Menü und geben Sie das menugroup-Element zurück. Bevor er durch die Sprachressource ersetzt wird, gibt der name-Parameter den Wert von Title zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(Title, Body, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name des Menüpunkts.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordnete Elemente in einem Untermenü.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-36"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(My Menu){\n MenuItem(Interface, sys-interface)\n MenuItem(Dahsboard, dashboard_default)\n}\n")])])]),t("h3",{attrs:{id:"menuitem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menuitem"}},[e._v("#")]),e._v(" MenuItem")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Menüelement und geben Sie das Element menuitem zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuItem(Title, Page, Params, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuItem")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name des Menüpunkts.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name der Weiterleitungsseite.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("Seitenparameter umleiten.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-37"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('MenuItem(Title:$@1roles$, Page:@1roles_list, Icon:"icon-pie-chart")\n')])])]),t("h3",{attrs:{id:"geld"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#geld"}},[e._v("#")]),e._v(" Geld")]),e._v(" "),t("p",[e._v("Gibt den Zeichenfolgenwert von exp / 10 ^ Ziffer zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("blockquote",[t("p",[e._v("Money")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Exp")])])]),e._v(" "),t("p",[e._v("Eine Zahl im Zeichenfolgenformat.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Digit")])]),e._v(" "),t("p",[e._v("Der Exponent von 10 im Ausdruck "),t("code",[e._v("Exp/10^digit")]),e._v(". Der Wert kann positiv oder negativ sein, und ein positiver Wert bestimmt die Anzahl der Nachkommastellen.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-38"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("h3",{attrs:{id:"or"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#or"}},[e._v("#")]),e._v(" Or")]),e._v(" "),t("p",[e._v("Es gibt das Ergebnis einer if-Logikoperation zurück. Alle in Klammern aufgeführten Parameter sind durch Kommas getrennt. Wenn ein Parameter, der Wert ist, keine leere Zeichenfolge, Null oder "),t("code",[e._v("false")]),e._v(" ist, ist der Parameterwert "),t("code",[e._v("true")]),e._v(", andernfalls ist der Parameterwert "),t("code",[e._v("false")]),e._v('. Wenn der Parameterwert "true" ist, gibt die Funktion '),t("code",[e._v("1")]),e._v(" zurück, andernfalls gibt sie "),t("code",[e._v("0")]),e._v(" zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Or(parameters)\n")])])]),t("h4",{attrs:{id:"beispiel-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-39"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Or(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"p"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#p"}},[e._v("#")]),e._v(" P")]),e._v(" "),t("p",[e._v("Erstellen Sie ein p-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(Body, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("P")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordneter Text oder untergeordnetes Element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Stil")])]),e._v(" "),t("p",[e._v("Der angegebene CSS-Stil.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS stil.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-40"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(This is the first line.\n This is the second line.)\n")])])]),t("h3",{attrs:{id:"qrcode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#qrcode"}},[e._v("#")]),e._v(" QRcode")]),e._v(" "),t("p",[e._v("Gibt den QR-Code mit dem angegebenen Text zurück und erstellt ein qrcode-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(Text)\n")])])]),t("blockquote",[t("p",[e._v("QRcode")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("QR code text.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-41"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(#name#)\n")])])]),t("h3",{attrs:{id:"radiogroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#radiogroup"}},[e._v("#")]),e._v(" RadioGroup")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Radiogroup-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-44"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-44"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name, Source, NameColumn, ValueColumn, Value, Class)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("RadioGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Elementname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Datenquelle, die von der Funktion DBFind oder Data abgerufen wird.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("NameColumn")])]),e._v(" "),t("p",[e._v("Feldname der Datenquelle.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ValueColumn")])]),e._v(" "),t("p",[e._v("Wertname der Datenquelle.\nMit Benutzerdefiniert erstellte Felder können in diesem Parameter nicht verwendet werden.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Standardwert.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validieren Sie den Parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("Der angegebene CCS-Stil.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS stil.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-42"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name: type_decision, Source: numbers_type_decisions, NameColumn: name, ValueColumn: value)\n")])])]),t("h3",{attrs:{id:"bereich"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bereich"}},[e._v("#")]),e._v(" Bereich")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Bereichselement, verwenden Sie die Schrittgröße Step from From to To (ohne To), um Integer-Elemente zu füllen. Die generierten Daten werden in Source abgelegt und können später in der Funktion der Source-Eingabe verwendet werden (z. B. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v("). Wenn ein ungültiger Parameter angegeben wird, wird eine leere Quelle zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-45"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-45"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Range(Source,From,To,Step)\n")])])]),t("blockquote",[t("p",[e._v("Range")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("From")])]),e._v(" "),t("p",[e._v("Startwert (i = Von).")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("To")])]),e._v(" "),t("p",[e._v("Endwert (i ")]),e._v(".")]),e._v(" "),t("li",[e._v("All icon-class icons are from SimpleLineIcons: "),t("code",[e._v("icon-")]),e._v(".")])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{407:function(e,a,t){"use strict";t.r(a);var r=t(51),n=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"vorlagensprache"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vorlagensprache"}},[e._v("#")]),e._v(" Vorlagensprache")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#seitenaufbau"}},[e._v("Seitenaufbau")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#vorlagen-engine"}},[e._v("Vorlagen-Engine")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#seiten-erstellen"}},[e._v("Seiten erstellen")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#visueller-seitendesigner"}},[e._v("Visueller Seitendesigner")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#anwendbare-stile"}},[e._v("Anwendbare Stile")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#seitenmodul"}},[e._v("Seitenmodul")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Sprachressourcen-Editor"}},[e._v("Sprachressourcen-Editor")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-vorlagensprache"}},[e._v("Logicor-Vorlagensprache")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#logicor-%C3%BCbersicht"}},[e._v("Logicor-Übersicht")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#pageparams-verwenden-um-parameter-an-seiten-zu-%C3%BCbergeben"}},[e._v("PageParams verwenden, um Parameter an Seiten zu übergeben")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Anrufvertr%C3%A4ge"}},[e._v("Anrufverträge")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-funktionsklassifizierung"}},[e._v("Logicor-Funktionsklassifizierung")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#operationen-auf-Variablen"}},[e._v("Operationen auf Variablen:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#navigationsoperationen"}},[e._v("Navigationsoperationen:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Datenmanipulation"}},[e._v("Datenmanipulation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#datenpr%C3%A4sentation"}},[e._v("Datenpräsentation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#%C3%BCbernahme-von-daten"}},[e._v("Übernahme von Daten:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#datenformatierungselemente"}},[e._v("Datenformatierungselemente:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#formularelemente"}},[e._v("Formularelemente:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Operationen-auf-Codebl%C3%B6cken"}},[e._v("Operationen auf Codeblöcken:")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-function-references"}},[e._v("Logicor-Funktionsreferenzen")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Adresse"}},[e._v("Adresse")])]),e._v(" "),t("li",[e._v("[AddressToId] (#addresstoid)")]),e._v(" "),t("li",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#und"}},[e._v("Und")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#bin%C3%A4r"}},[e._v("Binär")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Schaltfl%C3%A4che"}},[e._v("Schaltfläche")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#berechnen"}},[e._v("Berechnen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Diagramm"}},[e._v("Diagramm")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Daten"}},[e._v("Daten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#benutzerdefiniert"}},[e._v("Benutzerdefiniert")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#DatumUhrzeit"}},[e._v("DatumUhrzeit")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ecosysParam"}},[e._v("EcosysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#f%C3%BCrListe"}},[e._v("FürListe")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Formular"}},[e._v("Formular")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#spaltentyp-holen"}},[e._v("Spaltentyp holen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Hinweis"}},[e._v("Hinweis")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#wenn"}},[e._v("Wenn")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Bild"}},[e._v("Bild")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Bildeingabe"}},[e._v("Bildeingabe")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#einschlie%C3%9Fen"}},[e._v("Einschließen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Eingabe"}},[e._v("Eingabe")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Eingabefehler"}},[e._v("EingabeFehler")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Eingabemap"}},[e._v("InputMap")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Etikett"}},[e._v("Etikett")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#linkseite"}},[e._v("Linkseite")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Karte"}},[e._v("Karte")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Men%C3%BCgruppe"}},[e._v("Menügruppe")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Geld"}},[e._v("Geld")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#oder"}},[e._v("Oder")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Funkgruppe"}},[e._v("Funkgruppe")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Bereich"}},[e._v("Bereich")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ausw%C3%A4hlen"}},[e._v("Auswählen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Spanne"}},[e._v("Spanne")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#stark"}},[e._v("Stark")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Tabelle"}},[e._v("Tabelle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#transaktionsinfo"}},[e._v("Transaktionsinfo")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#app-styles-for-mobile-devices"}},[e._v("App-Stile für Mobilgeräte")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Layout"}},[e._v("Layout")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Titel"}},[e._v("Titel")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#starke-Klassennamen"}},[e._v("Starke Klassennamen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Farbe"}},[e._v("Farbe")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Gitter"}},[e._v("Gitter")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Leiste"}},[e._v("Leiste")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form-app"}},[e._v("Formular")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Schaltfl%C3%A4che-App"}},[e._v("Schaltfläche")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Symbol"}},[e._v("Symbol")])])])])])])]),e._v(" "),t("h2",{attrs:{id:"seitenaufbau"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#seitenaufbau"}},[e._v("#")]),e._v(" Seitenaufbau")]),e._v(" "),t("p",[e._v("Die integrierte Entwicklungsumgebung (IDE) von Weaver wird mit React, einer JavaScript-Bibliothek, erstellt. Es hat einen Seiteneditor und einen visuellen Seitendesigner. Seiten sind grundlegende Teile einer Anwendung, die zum Abrufen und Anzeigen von Daten aus Tabellen, zum Erstellen von Formularen zum Empfangen von Benutzereingabedaten, zum Übergeben von Daten an Verträge und zum Navigieren zwischen Anwendungsseiten verwendet werden. Seiten werden wie Verträge in der Blockchain gespeichert, wodurch sie beim Laden in den Software-Client manipulationssicher sein können.")]),e._v(" "),t("h3",{attrs:{id:"template-engine"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#template-engine"}},[e._v("#")]),e._v(" Template-Engine")]),e._v(" "),t("p",[e._v("Seitenelemente (Seiten und Menüs) werden von Entwicklern in der Template-Engine eines Verifizierungsknotens unter Verwendung der Template-Sprache im Seiteneditor von Weaver gebildet. Alle Seiten werden mit der vom IBAX-Entwicklungsteam entwickelten Logicor-Sprache erstellt. Verwenden Sie content/... API-Befehle, um Seiten von Knoten im Netzwerk anzufordern. Was die Template-Engine als Antwort auf diese Art von Anfrage sendet, ist keine HTML-Seite, sondern ein JSON-Code, der sich aus HTML-Tags zusammensetzt, die gemäß der Template-Struktur einen Baum bilden. Wenn Sie die Vorlagen-Engine testen möchten, können Sie auf den API-Befehl "),t("RouterLink",{attrs:{to:"/de/reference/api2.html#content"}},[e._v("content")]),e._v(" verweisen.")],1),e._v(" "),t("h3",{attrs:{id:"seiten-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#seiten-erstellen"}},[e._v("#")]),e._v(" Seiten erstellen")]),e._v(" "),t("p",[e._v("Sie können den Seiteneditor verwenden, um Seiten zu erstellen und zu bearbeiten, die Sie im Abschnitt „Seiten“ des Verwaltungstools von Weaver finden. Der Editor kann verwendet werden, um:")]),e._v(" "),t("ul",[t("li",[e._v("Schreiben Sie den Seitencode, markieren Sie die Schlüsselwörter der Logicor-Template-Sprache;")]),e._v(" "),t("li",[e._v("Menüs auf Seiten auswählen und anzeigen;")]),e._v(" "),t("li",[e._v("Bearbeiten Sie die Menüseite;")]),e._v(" "),t("li",[e._v("Konfigurieren Sie die Berechtigung zum Wechseln von Seiten, indem Sie den Vertragsnamen mit Berechtigung in der Funktion ContractConditions angeben oder indem Sie die Zugriffsberechtigung direkt in Bedingungen ändern angeben;")]),e._v(" "),t("li",[e._v("Starten Sie den visuellen Seitendesigner;")]),e._v(" "),t("li",[e._v("Vorschauseiten.")])]),e._v(" "),t("h4",{attrs:{id:"visueller-seitendesigner"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#visueller-seitendesigner"}},[e._v("#")]),e._v(" Visueller Seitendesigner")]),e._v(" "),t("p",[e._v("Der visuelle Seitendesigner kann verwendet werden, um Seitenlayouts zu erstellen, ohne Schnittstellencodes in der Sprache Logicor zu verwenden. Damit können Sie die Position von Formularelementen und Text auf Seiten durch Ziehen und Ablegen solcher Elemente festlegen und die Größe von Seitenblöcken konfigurieren. Es bietet eine Reihe von gebrauchsfertigen Blöcken zur Präsentation von Standarddatenmodellen: mit Titeln, Formularen und Informationstafeln. Nachdem Sie eine Seite im visuellen Seitendesigner erstellt haben, können Sie Programmlogik zum Empfangen von Daten und einer bedingten Struktur im Seiteneditor schreiben. Für die Zukunft planen wir die Erstellung eines visuellen Seitendesigners mit zusätzlichen Funktionen.")]),e._v(" "),t("h4",{attrs:{id:"anwendbare-stile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anwendbare-stile"}},[e._v("#")]),e._v(" Anwendbare Stile")]),e._v(" "),t("p",[e._v("Standardmäßig werden Seiten im Bootstrap Angle-Stil von Angular dargestellt. Benutzer können je nach Bedarf ihre eigenen Stile erstellen. Der Stil wird im Stilparameter-Stylesheet in der Ecosystem-Parametertabelle gespeichert.")]),e._v(" "),t("h4",{attrs:{id:"seitenmodul"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#seitenmodul"}},[e._v("#")]),e._v(" Seitenmodul")]),e._v(" "),t("p",[e._v("Um einen Codeblock auf mehreren Seiten zu verwenden, können Sie ein Seitenmodul erstellen, um es zu speichern und in den Seitencode einzubetten. Seitenmodule können in Weavers Modulblöcken erstellt und bearbeitet werden. Wie Seiten können Bearbeitungsrechte definiert werden.")]),e._v(" "),t("h4",{attrs:{id:"editor-fur-sprachressourcen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editor-fur-sprachressourcen"}},[e._v("#")]),e._v(" Editor für Sprachressourcen")]),e._v(" "),t("p",[e._v("Weaver enthält einen Mechanismus zur Seitenlokalisierung unter Verwendung einer Funktion "),t("strong",[e._v("LangRes")]),e._v(" der Logicor-Template-Sprache. Es könnte Sprachressourcen-Tags auf der Seite durch Textzeilen ersetzen, die der vom Benutzer im Software-Client oder Browser ausgewählten Sprache entsprechen. Anstelle der "),t("strong",[e._v("LangRes")]),e._v("-Funktion kann auch die Kurzsyntax "),t("strong",[e._v("$lable$")]),e._v(" verwendet werden. Die Übersetzung von Nachrichten in Popups, die vom Vertrag initiiert werden, wird von Needles "),t("strong",[e._v("LangRes")]),e._v("-Funktion durchgeführt.")]),e._v(" "),t("p",[e._v("Sie können Sprachressourcen im Bereich Sprachressourcen von Weaver erstellen und bearbeiten. Eine Sprachressource besteht aus Bezeichnungsnamen und entsprechenden Übersetzungen solcher Namen in verschiedenen Sprachen sowie der entsprechenden zweibuchstabigen Sprachkennung (EN, ZH, JP usw.).")]),e._v(" "),t("p",[e._v("Die Berechtigungen zum Hinzufügen und Ändern von Sprachressourcen können wie bei anderen Tabellen definiert werden.")]),e._v(" "),t("h2",{attrs:{id:"logicor-vorlagensprache"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-vorlagensprache"}},[e._v("#")]),e._v(" Logicor-Vorlagensprache")]),e._v(" "),t("p",[e._v("Logicor-Funktionen bieten die folgenden Operationen:")]),e._v(" "),t("ul",[t("li",[e._v("Abrufen von Werten aus der Datenbank: "),t("code",[e._v("DBFind")]),e._v(", zeigt aus der Datenbank abgerufene Daten als Tabellen und Diagramme;")]),e._v(" "),t("li",[e._v("Datenoperationen zum Zuweisen und Anzeigen von Variablenwerten: "),t("code",[e._v("SetVar, GetVar, Data")]),e._v(";")]),e._v(" "),t("li",[e._v("Anzeigen und Vergleichen von Datums-/Zeitwerten: "),t("code",[e._v("DateTime, Now, CmpTime")]),e._v(";")]),e._v(" "),t("li",[e._v("Verwenden Sie verschiedene Eingabefelder für Benutzerdaten, um Formulare zu erstellen: "),t("code",[e._v("Form, ImageInput, Input, RadioGroup, Select")]),e._v(";")]),e._v(" "),t("li",[e._v("Überprüfen Sie die Daten im Formularfeld, indem Sie Fehlermeldungen anzeigen: "),t("code",[e._v("Validate, InputErr")]),e._v(";")]),e._v(" "),t("li",[e._v("Anzeige der Navigationselemente: "),t("code",[e._v("AddToolButton, LinkPage, Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Verträge aufrufen: "),t("code",[e._v("Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Erstellen von HTML-Seitenlayoutelementen, einschließlich verschiedener Tags, und Auswählen bestimmter CSS-Klassen: "),t("code",[e._v("Div, P, Span, etc")]),e._v(";")]),e._v(" "),t("li",[e._v("Einbetten und Entladen von Bildern auf Seiten: "),t("code",[e._v("Image, ImageInput")]),e._v(";")]),e._v(" "),t("li",[e._v("Anzeigebedingungen des Seitenlayoutfragments: "),t("code",[e._v("If, ElseIf, Else")]),e._v(";")]),e._v(" "),t("li",[e._v("Erstellen von mehrstufigen Menüs;")]),e._v(" "),t("li",[e._v("Seitenlokalisierung.")])]),e._v(" "),t("h3",{attrs:{id:"logicor-ubersicht"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-ubersicht"}},[e._v("#")]),e._v(" Logicor-Übersicht")]),e._v(" "),t("p",[e._v("Die Logicor-Seitenvorlagensprache ist eine funktionale Sprache, die es einer Funktion ermöglicht, eine andere Funktion "),t("code",[e._v("FuncName(parameters)")]),e._v(" aufzurufen und Funktionen ineinander zu verschachteln. Sie können Parameter ohne Anführungszeichen angeben und unnötige Parameter löschen.")]),e._v(" "),t("p",[e._v("Wenn der Parameter ein Komma enthält, sollte es in Anführungszeichen (Backquotes oder doppelte Anführungszeichen) gesetzt werden. Wenn eine Funktion nur einen Parameter haben kann, können Sie ein Komma ohne Anführungszeichen verwenden. Außerdem sollten Anführungszeichen verwendet werden, wenn der Parameter eine ungepaarte schließende Klammer hat.")]),e._v(" "),t("p",[e._v("Wenn Sie einen Parameter in Anführungszeichen setzen, der Parameter selbst aber Anführungszeichen enthält, können Sie verschiedene Arten von Anführungszeichen oder mehrere Anführungszeichen im Text verwenden.")]),e._v(" "),t("p",[e._v("In der Funktionsdefinition hat jeder Parameter einen bestimmten Namen. Sie können die Funktion aufrufen und die Parameter in der Reihenfolge der Deklaration oder einen beliebigen Parametersatz in beliebiger Namensreihenfolge angeben: "),t("code",[e._v("Parametername: Parameterwert")]),e._v(". Mit dieser Methode können Sie sicher neue Funktionsparameter hinzufügen, ohne die Kompatibilität mit der aktuellen Vorlage zu beeinträchtigen:")]),e._v(" "),t("p",[e._v("Funktionen können Texte zurückgeben, HTML-Elemente erzeugen (z. B. "),t("code",[e._v("Input")]),e._v("), oder HTML-Elemente mit verschachtelten HTML-Elementen erzeugen ("),t("code",[e._v("Div, P, Span")]),e._v("). Im letzteren Fall wird ein Parameter mit dem vordefinierten Namen Body verwendet, um das verschachtelte Element zu definieren. Das Verschachteln von zwei Divs in einem anderen Div sieht beispielsweise so aus:")]),e._v(" "),t("p",[e._v("Um die im Body-Parameter beschriebenen verschachtelten Elemente zu definieren, kann die folgende Notation verwendet werden: "),t("code",[e._v("FuncName(...){...}")]),e._v(". Verschachtelte Elemente sollten mit geschweiften Klammern angegeben werden:")]),e._v(" "),t("p",[e._v("Wenn Sie dieselbe Funktion mehrmals hintereinander angeben müssen, können Sie den Punkt "),t("code",[e._v(".")]),e._v(" verwenden, anstatt jedes Mal ihren Namen zu schreiben. Zum Beispiel sind die folgenden gleich:")]),e._v(" "),t("p",[e._v("Mit dieser Sprache können Sie eine Variable mit der SetVar-Funktion zuweisen und ihren Wert mit "),t("code",[e._v("#name#")]),e._v(" referenzieren.")]),e._v(" "),t("p",[e._v("Um auf die Sprachressourcen des Ökosystems zu verweisen, können Sie "),t("code",[e._v("$langres$")]),e._v(" verwenden, wobei langres der Sprachname ist.")]),e._v(" "),t("p",[e._v("Folgende Variablen sind vordefiniert:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("#key_id#")]),e._v(" - Kontoadresse des aktuellen Benutzers;")]),e._v(" "),t("li",[t("code",[e._v("#ecosystem_id#")]),e._v(" - Aktuelle Ökosystem-ID;")]),e._v(" "),t("li",[t("code",[e._v("#guest_key#")]),e._v(" - Adresse des Gastkontos;")]),e._v(" "),t("li",[t("code",[e._v("#isMobile#")]),e._v(" - 1, wenn Weaver auf einem Mobilgerät läuft.")])]),e._v(" "),t("h4",{attrs:{id:"verwenden-sie-pageparams-um-parameter-an-seiten-zu-ubergeben"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#verwenden-sie-pageparams-um-parameter-an-seiten-zu-ubergeben"}},[e._v("#")]),e._v(" Verwenden Sie PageParams, um Parameter an Seiten zu übergeben")]),e._v(" "),t("p",[e._v("Viele Funktionen unterstützen den PageParams-Parameter, der zum Übergeben von Parametern beim Umleiten auf eine neue Seite verwendet wird. Zum Beispiel: PageParams: "),t("code",[e._v('"param1=value1,param2=value2"')]),e._v(". Der Parameterwert kann ein einfacher String oder eine Variable mit Referenzwert sein. Beim Übergeben von Parametern an Seiten wird eine Variable mit dem Parameternamen erstellt, z. "),t("code",[e._v("#param1#")]),e._v(" und "),t("code",[e._v("#param2#")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=world"')]),e._v(" - Die neue Seite erhält den hallo-Parameter mit world als Wert;")]),e._v(" "),t("li",[t("code",[e._v('PageParams: "hello=#world#"')]),e._v(" - Die neue Seite erhält den hallo-Parameter mit dem Wert der world-Variablen.")])]),e._v(" "),t("p",[e._v("Darüber hinaus kann die Val-Funktion Daten aus Formularen abrufen, die in der Umleitung angegeben sind.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=Val(world)"')]),e._v(" - Die neue Seite erhält den hallo-Parameter mit dem Wert des World-Formular-Elements.")])]),e._v(" "),t("h4",{attrs:{id:"vertrage-anrufen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertrage-anrufen"}},[e._v("#")]),e._v(" Verträge anrufen")]),e._v(" "),t("p",[e._v("Logicor implementiert Vertragsaufrufe durch Anklicken der Button-Funktion in einem Formular. Sobald ein Ereignis ausgelöst wird, werden die vom Benutzer in einem Formularfeld auf der Seite eingegebenen Daten an den Vertrag übergeben. Entspricht der Formularfeldname dem Variablennamen im Datenteil des aufgerufenen Vertrages, werden die Daten automatisch übertragen. Die Schaltflächenfunktion ermöglicht es, ein modales Fenster für den Benutzer zu öffnen, um die Vertragsausführung zu überprüfen, und bei erfolgreicher Vertragsausführung die Umleitung auf die angegebene Seite zu initiieren und bestimmte Parameter an die Seite zu übergeben.")]),e._v(" "),t("h2",{attrs:{id:"logicor-funktionsklassifizierung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-funktionsklassifizierung"}},[e._v("#")]),e._v(" Logicor-Funktionsklassifizierung")]),e._v(" "),t("h3",{attrs:{id:"operationen-auf-variablen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operationen-auf-variablen"}},[e._v("#")]),e._v(" Operationen auf Variablen:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])])]),e._v(" "),t("h3",{attrs:{id:"navigationsoperationen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigationsoperationen"}},[e._v("#")]),e._v(" Navigationsoperationen:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#button"}},[e._v("Button")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#linkpage"}},[e._v("LinkPage")])])])])]),e._v(" "),t("h3",{attrs:{id:"datenmanipulation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datenmanipulation"}},[e._v("#")]),e._v(" Datenmanipulation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#calculate"}},[e._v("Calculate")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#datetime"}},[e._v("DateTime")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#money"}},[e._v("Money")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"datenprasentation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datenprasentation"}},[e._v("#")]),e._v(" Datenpräsentation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#hint"}},[e._v("Hint")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#image"}},[e._v("Image")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#chart"}},[e._v("Chart")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menugroup"}},[e._v("MenuGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#table"}},[e._v("Table")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#forlist"}},[e._v("ForList")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"ubernahme-der-daten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ubernahme-der-daten"}},[e._v("#")]),e._v(" Übernahme der Daten:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#address"}},[e._v("Address")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#addresstoid"}},[e._v("AddressToId")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#range"}},[e._v("Range")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#getcolumntype"}},[e._v("GetColumnType")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#binary"}},[e._v("Binary")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#transactioninfo"}},[e._v("TransactionInfo")])])])])]),e._v(" "),t("h3",{attrs:{id:"datenformatierungselemente"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datenformatierungselemente"}},[e._v("#")]),e._v(" Datenformatierungselemente:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#span"}},[e._v("Span")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#label"}},[e._v("Label")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#strong"}},[e._v("Strong")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"formularelemente"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#formularelemente"}},[e._v("#")]),e._v(" Formularelemente:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#form"}},[e._v("Form")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputerr"}},[e._v("InputErr")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputmap"}},[e._v("InputMap")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#imageinput"}},[e._v("ImageInput")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#radiogroup"}},[e._v("RadioGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#map"}},[e._v("Map")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#input"}},[e._v("Input")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#select"}},[e._v("Select")])]),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"operationen-auf-codeblocken"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operationen-auf-codeblocken"}},[e._v("#")]),e._v(" Operationen auf Codeblöcken:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#if"}},[e._v("If")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#or"}},[e._v("Or")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#include"}},[e._v("Include")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#and"}},[e._v("And")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h2",{attrs:{id:"logicor-funktionsreferenzen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-funktionsreferenzen"}},[e._v("#")]),e._v(" Logicor-Funktionsreferenzen")]),e._v(" "),t("h3",{attrs:{id:"die-anschrift"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#die-anschrift"}},[e._v("#")]),e._v(" Die Anschrift")]),e._v(" "),t("p",[e._v("Diese Funktion gibt die Wallet-Adresse "),t("code",[e._v("xxxx-xxxx-...-xxxx")]),e._v(" einer bestimmten Kontoadresse zurück; wenn keine Adresse angegeben ist, wird die Kontoadresse des aktuellen Benutzers als Parameter verwendet.")]),e._v(" "),t("h4",{attrs:{id:"syntax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(account)\n\n")])])]),t("blockquote",[t("p",[e._v("Address")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("account")])]),e._v(" "),t("p",[e._v("Account address.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Span(Your wallet: Address(#account#))\n")])])]),t("h3",{attrs:{id:"addresstoid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[e._v("#")]),e._v(" AddressToId")]),e._v(" "),t("p",[e._v("Es gibt die Kontoadresse einer bestimmten Wallet-Adresse xxxx-xxxx-...-xxxx zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-2"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(Wallet)\n")])])]),t("blockquote",[t("p",[e._v("AddressToId")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Wallet")])]),e._v(" "),t("p",[e._v("The wallet address in XXXX-...-XXXX format.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-2"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(#wallet#)\n")])])]),t("h3",{attrs:{id:"werkzeugschaltflache-hinzufugen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#werkzeugschaltflache-hinzufugen"}},[e._v("#")]),e._v(" Werkzeugschaltfläche hinzufügen")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Schaltflächenpanel mit einem addtoolbutton-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-3"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddToolButton(Title, Icon, Page, PageParams)\n [.Popup(Width, Header)]\n")])])]),t("blockquote",[t("p",[e._v("Werkzeugschaltfläche hinzufügen")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")]),e._v(" .")]),e._v(" "),t("p",[e._v("Schaltflächentitel.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("symbol")]),e._v(".")]),e._v(" "),t("p",[e._v("Button-Icon-Stil.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Seite")])]),e._v(" "),t("p",[e._v("Name der Seite, auf die umgeleitet wird.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Seitenparameter")])]),e._v(" "),t("p",[e._v("Die an die Seite übergebenen Parameter.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("Das modale Fenster erscheint.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("header")])]),e._v(" "),t("p",[e._v("Titel des Fensters.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("width")])]),e._v(" "),t("p",[e._v("Prozentsatz der Fensterbreite.\nDer Bereich liegt zwischen 1 und 100.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-3"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('AddToolButton(Title: $@1broadcast$, Page: @1notifications_broadcast, Icon: icon-plus).Popup(Header: $@1notifications_broadcast$, Width: "50")\n')])])]),t("h3",{attrs:{id:"und"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#und"}},[e._v("#")]),e._v(" Und")]),e._v(" "),t("p",[e._v("Es gibt das Ergebnis einer logischen Operation und zurück. Alle in Klammern aufgeführten Parameter sind durch Kommas getrennt. Wenn einer der Parameter eine leere Zeichenkette, Null oder "),t("code",[e._v("false")]),e._v(" ist, ist der Parameterwert "),t("code",[e._v("false")]),e._v(", andernfalls ist der Parameterwert "),t("code",[e._v("true")]),e._v('. Wenn der Parameterwert "true" ist, gibt die Funktion '),t("code",[e._v("1")]),e._v(" zurück, andernfalls gibt sie "),t("code",[e._v("0")]),e._v(" zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-4"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("And(parameters)\n")])])]),t("h4",{attrs:{id:"beispiel-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-4"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(And(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"appparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#appparam"}},[e._v("#")]),e._v(" AppParam")]),e._v(" "),t("p",[e._v("Geben Sie den Anwendungsparameterwert aus, der aus der app_params-Tabelle des aktuellen Ökosystems entnommen wird. Wenn es eine Sprachressource mit dem angegebenen Namen gibt, wird ihr Wert automatisch ersetzt.")]),e._v(" "),t("h4",{attrs:{id:"syntax-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-5"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(App, Name, Index, Source)\n\n")])])]),t("blockquote",[t("p",[e._v("AppParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("App")])]),e._v(" "),t("p",[e._v("Application ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nThe parameter elements index, starting from 1. For example, if "),t("code",[e._v("type = full,light")]),e._v(", then "),t("code",[e._v("AppParam(1, type, 2)")]),e._v(" returns "),t("code",[e._v("light")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of specific parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-5"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(1, type, Source: mytype)\n")])])]),t("h3",{attrs:{id:"arraytosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#arraytosource"}},[e._v("#")]),e._v(" ArrayToSource")]),e._v(" "),t("p",[e._v("Erstellen Sie ein arraytosource-Element und füllen Sie es mit den Schlüssel-Wert-Paaren eines JSON-Arrays. Die erhaltenen Daten werden in das Source-Element eingefügt, das später in der Quelleneingabefunktion (z. B. Tabelle) verwendet werden kann.")]),e._v(" "),t("h4",{attrs:{id:"syntax-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-6"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(Source, Data)\n\n")])])]),t("blockquote",[t("p",[e._v("ArrayZuQuelle")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("data")]),e._v(".")]),e._v(" "),t("p",[e._v("Ein JSON-Array oder ein Variablenname, der ein JSON-Array enthält ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-6"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(src, #myjsonarr#)\nArrayToSource(dat, [1, 2, 3])\n")])])]),t("h3",{attrs:{id:"binar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#binar"}},[e._v("#")]),e._v(" Binär")]),e._v(" "),t("p",[e._v("Gibt Links zu statischen Dateien zurück, die in den Binärdateien der Binärtabelle gespeichert sind.")]),e._v(" "),t("h4",{attrs:{id:"syntax-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Binary(Name, AppID, MemberID)[.ById(ID)][.Ecosystem(ecosystem)]\n")])])]),t("blockquote",[t("p",[e._v("Binär")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")]),e._v(".")]),e._v(" "),t("p",[e._v("Dateinamen.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("AppID")])]),e._v(" "),t("p",[e._v("Anwendungs-ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Member-ID")])]),e._v(" "),t("p",[e._v("Kontoadresse, standardmäßig 0.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ID")]),e._v(".")]),e._v(" "),t("p",[e._v("Statische Datei-ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ecosystem")])]),e._v(" "),t("p",[e._v("Ökosystem-ID. Wenn es nicht angegeben ist, wird die Binärdatei vom aktuellen Ökosystem angefordert.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-7"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Image(Src: Binary("my_image", 1))\nImage(Src: Binary().ById(2))\nImage(Src: Binary().ById(#id#).Ecosystem(#eco#))\n')])])]),t("h3",{attrs:{id:"taste"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#taste"}},[e._v("#")]),e._v(" Taste")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Schaltflächen-HTML-Element, das eine Schaltfläche zum Aufrufen eines Vertrags oder zum Öffnen einer Seite erstellt.")]),e._v(" "),t("h4",{attrs:{id:"syntax-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Button(Body, Page, Class, Contract, Params, PageParams)\n [.CompositeContract(Contract, Data)]\n [.Alert(Text, ConfirmButton, CancelButton, Icon)]\n [.Popup(Width, Header)]\n [.Style(Style)]\n [.ErrorRedirect((ErrorID,PageName,PageParams)]\n")])])]),t("blockquote",[t("p",[e._v("Taste")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordneter Text oder untergeordnetes Element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name der Seite, auf die umgeleitet wird.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Knopf Klasse.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Contract")])]),e._v(" "),t("p",[e._v("Name des aufgerufenen Vertrags.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("Die Liste der an den Vertrag übergebenen Werte. Normalerweise wird der Wert des Vertragsparameters (der Datenabschnitt) von einem HTML-Element (z. B. einem Eingabefeld) von id mit einem ähnlichen Namen erhalten. Wenn sich die Element-ID vom Namen des Vertragsparameters unterscheidet, sollte der Wert im Format contractField1=idname1, contractField2=idname2 zugewiesen werden. Dieser Parameter wird als Objekt {contractField1: idname1, contractField2: idname2} an attr zurückgegeben.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Das Format der an die Weiterleitungsseite übergebenen Parameter ist pageField1=idname1, pageField2=idname2. Variablen mit den Zielseitenparameternamen #pageField1 und #pageField2 werden auf der Zielseite angelegt und mit den angegebenen Werten belegt. Siehe weitere Spezifikationen für die Parameterübergabe Verwenden Sie PageParams, um Parameter an Seiten zu übergeben).")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Zusammengesetzter Vertrag")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Wird verwendet, um der Schaltfläche zusätzliche Verträge hinzuzufügen. CompositeContract kann mehrfach verwendet werden.\n")])])]),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the contract.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("Die Vertragsparameter sind JSON-Arrays.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Alert")])]),e._v(" "),t("p",[e._v("Zeigen Sie die Nachricht an.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Text der Nachricht.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ConfirmButton")])]),e._v(" "),t("p",[e._v("Titel der Schaltfläche Bestätigen.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("CancelButton")])]),e._v(" "),t("p",[e._v("Titel der Schaltfläche Abbrechen.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Schaltflächensymbol.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("Modales Ausgabefenster.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Header")])]),e._v(" "),t("p",[e._v("Fenstertitel.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Prozentsatz der Fensterbreite.\nDer Bereich liegt zwischen 1 und 100.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Stil")])]),e._v(" "),t("p",[e._v("Der angegebene CSS-Stil.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS stil.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Fehlerumleitung")])]),e._v(" "),t("p",[e._v("Angeben und Weiterleiten auf eine Seite, wenn die Funktion :ref:contractfundef-Throw während der Vertragsausführung einen Fehler generiert. Es kann mehrere ErrorRedirect-Aufrufe geben. Daher ist bei der Rückgabe des Attributs "),t("em",[e._v("errredirect")]),e._v(" der Attributschlüssel ErrorID und der Wert die Parameterliste.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("ErrorID")])]),e._v(" "),t("p",[e._v("Error ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageName")])]),e._v(" "),t("p",[e._v("Name der Weiterleitungsseite.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("An die Seite übergebene Parameter.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-8"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Button(Submit, default_page, mybtn_class).Alert(Alert message)\nButton(Contract: MyContract, Body:My Contract, Class: myclass, Params:"Name=myid,Id=i10,Value")\n')])])]),t("h3",{attrs:{id:"berechnung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#berechnung"}},[e._v("#")]),e._v(" Berechnung")]),e._v(" "),t("p",[e._v("Es gibt das Ergebnis des arithmetischen Ausdrucks zurück, der im Parameter Exp übergeben wurde. Die folgenden Operationen sind anwendbar: +, -, *, / und Klammern ().")]),e._v(" "),t("h4",{attrs:{id:"syntax-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Calculate(Exp, Type, Prec)\n")])])]),t("blockquote",[t("p",[e._v("Berechnung")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("Ein arithmetischer Ausdruck, der Zahlen und die Variable #name# enthält.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Ergebnisdatentyp: int, float, money. Wenn nicht angegeben, ist es Float, wenn es eine Zahl mit einem Dezimalpunkt gibt, sonst ist es Int.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Prec")])]),e._v(" "),t("p",[e._v("Float- und Gelddaten, mit zwei signifikanten Stellen nach dem Dezimalkomma.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-9"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Calculate( Exp: (342278783438+5000)\\*(#val#-932780000), Type: money, Prec:18 )\nCalculate(10000-(34+5)\\*#val#)\nCalculate("((10+#val#-45)\\*3.0-10)/4.5 + #val#", Prec: 4)\n')])])]),t("h3",{attrs:{id:"diagramm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#diagramm"}},[e._v("#")]),e._v(" Diagramm")]),e._v(" "),t("p",[e._v("Erstellen Sie HTML-Diagramme.")]),e._v(" "),t("h4",{attrs:{id:"syntax-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Chart(Type, Source, FieldLabel, FieldValue, Colors)\n")])])]),t("blockquote",[t("p",[e._v("Chart")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Diagramm Typ.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle, z. B. erhalten aus der Funktion "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldLabel")])]),e._v(" "),t("p",[e._v("Name des Header-Felds.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldValue")])]),e._v(" "),t("p",[e._v("Name des Wertefelds.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Colors")])]),e._v(" "),t("p",[e._v("Liste der Farben.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-10"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"name,count"){\n John Silver,10\n "Mark, Smith",20\n "Unknown ""Person""",30\n}\nChart(Type: "bar", Source: mysrc, FieldLabel: "name", FieldValue: "count", Colors: "red, green")\n')])])]),t("h3",{attrs:{id:"cmptime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cmptime"}},[e._v("#")]),e._v(" CmpTime")]),e._v(" "),t("p",[e._v("Es vergleicht zwei Zeitwerte im gleichen Format.\nEs unterstützt Unixtime, "),t("code",[e._v("YYYY-MM-DD HH:MM:SS")]),e._v(" und jedes Zeitformat wie "),t("code",[e._v("YYYYMMDD")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CmpTime(Time1, Time2)\n")])])]),t("p",[e._v("Rückgabewert:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("-1")]),e._v(" - Time1 Time2.")])]),e._v(" "),t("h4",{attrs:{id:"beispiel-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-11"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(CmpTime(#time1#, #time2#)<0){...}\n")])])]),t("h3",{attrs:{id:"code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#code"}},[e._v("#")]),e._v(" Code")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Codeelement, um den angegebenen Code anzuzeigen.")]),e._v(" "),t("p",[e._v("Es ersetzt eine Variable durch den Wert der Variablen (z. B. "),t("code",[e._v("#name#")]),e._v(").")]),e._v(" "),t("h4",{attrs:{id:"syntax-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code(Text)\n")])])]),t("blockquote",[t("p",[e._v("Code")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Quellcode.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-12"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code( P(This is the first line.\n Span(This is the second line.))\n)\n")])])]),t("h3",{attrs:{id:"codeasis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#codeasis"}},[e._v("#")]),e._v(" CodeAsIs")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Codeelement, um den angegebenen Code anzuzeigen.\nEs ersetzt keine Variable durch ihren Wert. Beispielsweise wird "),t("code",[e._v("#name#")]),e._v(" unverändert angezeigt.")]),e._v(" "),t("h4",{attrs:{id:"syntax-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs(Text)\n")])])]),t("blockquote",[t("p",[e._v("CodeAsIs")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-13"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs( P(This is the #test1#.\n Span(This is the #test2#.))\n)\n")])])]),t("h3",{attrs:{id:"daten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daten"}},[e._v("#")]),e._v(" Daten")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Datenelement, füllen Sie es mit den angegebenen Daten und legen Sie es in Quelle ab. Dann können Sie Source als Dateneingabe in "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" und anderen Funktionen erhalten. Die Reihenfolge der Spaltennamen entspricht der Reihenfolge der Dateneingabewerte.")]),e._v(" "),t("h4",{attrs:{id:"syntax-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Data(Source,Columns,Data)\n [.Custom(Column){Body}]\n")])])]),t("blockquote",[t("p",[e._v("Data")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle. Als Datenquelle können Sie einen beliebigen Namen angeben, der später an andere Funktionen übergeben wird.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Columns")])]),e._v(" "),t("p",[e._v("Eine durch Kommas getrennte Liste von Spaltennamen.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")]),e._v("\nDatensatz.")]),e._v(" "),t("p",[e._v("Ein Datensatz pro Zeile. Spaltenwerte müssen durch Kommas getrennt werden. Daten und Spalten sollten in derselben Reihenfolge festgelegt werden.")]),e._v(" "),t("p",[e._v("Werte mit Kommas sollten in doppelte Anführungszeichen gesetzt werden ("),t("code",[e._v('"example1, example2", 1, 2')]),e._v("). Werte in Anführungszeichen sollten in zwei doppelte Anführungszeichen gesetzt werden ("),t("code",[e._v('"""example", "example2""", 1, 2')]),e._v(").")])])]),e._v(" "),t("h3",{attrs:{id:"benutzerdefiniert"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#benutzerdefiniert"}},[e._v("#")]),e._v(" Benutzerdefiniert")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v(" Sie können Daten berechnete Spalten zuweisen. Beispielsweise können Sie Feldvorlagen für Schaltflächen und andere Seitenlayoutelemente angeben. Diese Feldvorlagen werden normalerweise [Table](#table) und anderen Funktionen zum Empfangen von Daten zugewiesen.\n Verwenden Sie mehrere benutzerdefinierte Funktionen, wenn Sie mehrere berechnete Spalten zuweisen möchten.\n")])])]),t("ul",[t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Spaltenname, der eindeutig und obligatorisch ist.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Codeblock. Sie können "),t("code",[e._v("#columnname#")]),e._v(" verwenden, um Werte aus anderen Spalten im Eintrag zu erhalten, und diese Werte dann in Codeblöcken verwenden.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-14"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"id,name"){\n "1",John Silver\n 2,"Mark, Smith"\n 3,"Unknown ""Person"""\n }.Custom(link){Button(Body: View, Class: btn btn-link, Page: user, PageParams: "id=#id#"}\n')])])]),t("h3",{attrs:{id:"terminzeit"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#terminzeit"}},[e._v("#")]),e._v(" Terminzeit")]),e._v(" "),t("p",[e._v("Zeigt Uhrzeit und Datum im angegebenen Format an.")]),e._v(" "),t("h4",{attrs:{id:"syntax-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(DateTime, Format)\n")])])]),t("blockquote",[t("p",[e._v("DateTime")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("DateTime")])]),e._v(" "),t("p",[e._v("Uhrzeit und Datum, ausgedrückt im Unixtime- oder Standardformat "),t("code",[e._v("2006-01-02T15:04:05")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("Formatvorlage: Jahr im 2-stelligen Format "),t("code",[e._v("YY")]),e._v(", 4-stelliges Format "),t("code",[e._v("YYYY")]),e._v(", Monat in "),t("code",[e._v("MM")]),e._v(", Tag in "),t("code",[e._v("DD")]),e._v(", Stunde in "),t("code",[e._v("HH")]),e._v(", Minute in "),t("code",[e._v("MM")]),e._v(", Sekunde in "),t("code",[e._v("SS")]),e._v(" , z. B.: "),t("code",[e._v("JJ/MM/TT HH:MM")]),e._v(".\nWenn es nicht angegeben ist oder fehlt, wird "),t("code",[e._v("YYYY-MM-DD HH:MI:SS")]),e._v(" verwendet.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-15"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(2017-11-07T17:51:08)\nDateTime(#mytime#,HH:MI DD.MM.YYYY)\n")])])]),t("h3",{attrs:{id:"dbfind"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbfind"}},[e._v("#")]),e._v(" DBFind")]),e._v(" "),t("p",[e._v("Erstellen Sie ein dbfind-Element, füllen Sie es mit den Daten der Tabelle table und fügen Sie es in die Source-Struktur ein, die später für die Eingabedaten von "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" und anderen Funktionen Source verwendet werden kann.")]),e._v(" "),t("h4",{attrs:{id:"syntax-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBFind(table, Source)\n [.Columns(columns)]\n [.Where(conditions)]\n [.WhereId(id)]\n [.Order(name)]\n [.Limit(limit)]\n [.Offset(offset)]\n [.Count(countvar)]\n [.Ecosystem(id)]\n [.Cutoff(columns)]\n [.Custom(Column){Body}]\n [.Vars(Prefix)]\n")])])]),t("blockquote",[t("p",[e._v("DBFind")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("table")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Säulen")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("columns")])]),e._v(" "),t("p",[e._v("Wenn nicht angegeben, wird eine Liste aller Felder zurückgegeben. Wenn ein Feld vom Typ JSON vorhanden ist, können Sie die folgende Syntax verwenden, um das Datensatzfeld zu verarbeiten: "),t("code",[e._v("columnname->fieldname")]),e._v(". In diesem Fall lautet der generierte Feldname "),t("code",[e._v("columnname.fieldname")]),e._v(".")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Woher")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("conditions")])])]),e._v(" "),t("p",[e._v("Datenabfragebedingungen. Siehe DBFind.\nWenn ein Feld vom Typ JSON vorhanden ist, können Sie die folgende Syntax verwenden, um das Datensatzfeld zu verarbeiten:\n"),t("code",[e._v("columnname->fieldname")]),e._v(".")]),e._v(" "),t("blockquote",[t("p",[e._v("WhereId\nQuery by ID, e.g. "),t("code",[e._v(".WhereId(1)")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Entry ID.")]),e._v(" "),t("blockquote",[t("p",[e._v("Befehl\nNach Feld sortieren.\nWeitere Informationen zur Sortiersyntax finden Sie unter "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("name")])])]),e._v(" "),t("p",[e._v("Feldname")]),e._v(" "),t("blockquote",[t("p",[e._v("Grenze")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("limit")])]),e._v(" "),t("p",[e._v("Die Anzahl der zurückgegebenen Einträge, standardmäßig 25. Die maximale Anzahl beträgt 10.000.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Offset")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Offset")])]),e._v(" "),t("p",[e._v("Offset.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Zählen")])]),e._v(" "),t("p",[e._v("Geben Sie die Gesamtzahl der Zeilen der Wo-Bedingung an.\nDie Gesamtzahl wird nicht nur in einer Variablen gespeichert, sondern auch im count-Parameter des dbfind-Elements zurückgegeben.")]),e._v(" "),t("p",[e._v("Wenn Where und WhereID nicht angegeben sind, wird die Gesamtzahl der Zeilen in der Tabelle zurückgegeben.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("countvar")])]),e._v(" "),t("p",[e._v("Name der Variablen, die die Zeilenanzahl enthält.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Ökosystem")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("ID")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Ökosystem-ID. Standardmäßig stammen die Daten aus der angegebenen Tabelle im aktuellen Ökosystem.\n")])])]),t("blockquote",[t("p",[e._v("Cutoff")])]),e._v(" "),t("p",[e._v("Wird zum Ausschneiden und Anzeigen großer Textdatenmengen verwendet.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("columns")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Eine durch Kommas getrennte Liste von Feldern, die von der Cutoff-Funktion verarbeitet werden müssen.\nDer Feldwert wird durch ein JSON-Objekt ersetzt, das zwei Felder hat: link link und title title. Wenn der Feldwert mehr als 32 Zeichen enthält, wird ein Link zurückgegeben, der auf die ersten 32 Zeichen des Volltexts zeigt. Wenn der Feldwert 32 Zeichen oder weniger enthält, wird der Link auf ungültig gesetzt und der Titel enthält den vollständigen Feldwert.\n")])])]),t("blockquote",[t("p",[e._v("Benutzerdefiniert")])]),e._v(" "),t("p",[e._v("Sie können Daten berechnete Spalten zuweisen. Beispielsweise können Sie Feldvorlagen für Schaltflächen und andere Seitenlayoutelemente angeben. Diese Feldvorlagen werden normalerweise "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" und anderen Funktionen zum Empfangen von Daten zugewiesen.\nWenn Sie mehrere berechnete Spalten zuweisen möchten, verwenden Sie mehrere benutzerdefinierte Funktionen.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Column")])])]),e._v(" "),t("p",[e._v("Spaltenname, der eindeutig und obligatorisch ist.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Body")])])]),e._v(" "),t("p",[e._v("Codeblock. Sie können "),t("code",[e._v("#columnname#")]),e._v(" verwenden, um Werte aus anderen Spalten im Eintrag zu erhalten, und diese Werte dann in Codeblöcken verwenden.")]),e._v(" "),t("blockquote",[t("p",[e._v("Vars")])]),e._v(" "),t("p",[e._v("Die erste von der Abfrage erhaltene Zeile generiert eine Reihe von Variablen mit Werten. Wenn er angegeben wird, wird der Limit-Parameter automatisch 1, und es wird nur ein (1) Datensatz zurückgegeben.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Prefix")])])]),e._v(" "),t("p",[e._v("Das dem Variablennamen hinzugefügte Präfix. Sein Format ist "),t("code",[e._v("#prefix_columnname#")]),e._v(", wobei der Spaltenname direkt auf den Unterstrich folgt. Wenn eine Spalte ein JSON-Feld enthält, hat die generierte Variable das folgende Format: "),t("code",[e._v("#prefix_columnname_field#")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"beispiel-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-16"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(parameters,myparam)\nDBFind(parameters,myparam).Columns(name,value).Where({name:"money"})\nDBFind(parameters,myparam).Custom(myid){Strong(#id#)}.Custom(myname){\n Strong(Em(#name#))Div(myclass, #company#)\n}\n')])])]),t("h3",{attrs:{id:"div"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#div"}},[e._v("#")]),e._v(" Div")]),e._v(" "),t("p",[e._v("Erstellen Sie ein div-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(Class, Body)\n [.Style(Style)]\n [.Show(Condition)]\n [.Hide(Condition)]\n")])])]),t("blockquote",[t("p",[e._v("Div")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname der div.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordnetes Element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Stil")])]),e._v(" "),t("p",[e._v("Der angegebene CSS-Stil.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS stil.")]),e._v(" "),t("blockquote",[t("p",[e._v("Zeigen")])]),e._v(" "),t("p",[e._v("Definieren Sie die Bedingungen für die Anzeige von Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("Siehe Ausblenden unten.")]),e._v(" "),t("blockquote",[t("p",[e._v("Ausblenden")])]),e._v(" "),t("p",[e._v("Definieren Sie die Bedingungen für das Ausblenden von Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("Das Ausdrucksformat ist "),t("code",[e._v("InputName=Value")]),e._v(", wenn alle Ausdrücke wahr sind, ist "),t("em",[e._v("Condition")]),e._v(" wahr, und wenn der Wert von "),t("code",[e._v("InputName")]),e._v(" gleich "),t("code",[e._v("Value")]),e._v(" ist, ist "),t("em",[e._v("Condition")]),e._v(" wahr. Wenn mehrere "),t("em",[e._v("Show")]),e._v(" oder "),t("em",[e._v("Hide")]),e._v(" aufgerufen werden, muss mindestens ein "),t("em",[e._v("Condition")]),e._v("-Parameter wahr sein.")]),e._v(" "),t("h4",{attrs:{id:"beispiel-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-17"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Form(){\n Div(text-left){\n Input(Name: "broadcast", Type: "checkbox", Value: "false")\n }\n Div(text-left){\n hello\n }.Show("broadcast=false")\n Div(text-left){\n world\n }.Hide("broadcast=false")\n}\n')])])]),t("h3",{attrs:{id:"ecosysparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecosysparam"}},[e._v("#")]),e._v(" EcosysParam")]),e._v(" "),t("p",[e._v("Diese Funktion erhält Parameterwerte aus der Ökosystemparametertabelle des aktuellen Ökosystems. Wenn der zurückgegebene Ergebnisname die Sprachressourcen enthält, wird er entsprechend übersetzt.")]),e._v(" "),t("h4",{attrs:{id:"syntax-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EcosysParam(Name, Index, Source)\n")])])]),t("blockquote",[t("p",[e._v("EcosysParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parametername.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("Wenn der angeforderte Parameter eine Liste von durch Kommas getrennten Elementen ist, können Sie einen Index beginnend mit 1 angeben. Beispiel: if "),t("code",[e._v("gender = male,female")]),e._v(", dann "),t("code",[e._v("gender = male,female")]),e._v(" kehrt zurück "),t("code",[e._v("female")]),e._v(".")])])]),e._v(" "),t("p",[e._v("Er kann nicht in Verbindung mit dem Source-Parameter verwendet werden.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Es kann verwendet werden, wenn der Parameterwert eine durch Kommas getrennte Liste ist.\nErstellen Sie ein Datenobjekt, dessen Elemente die Werte der angegebenen Parameter sind. Dieses Objekt kann als Datenquelle für die Funktionen "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" und "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" verwendet werden.\nEr kann nicht in Verbindung mit dem Index-Parameter verwendet werden.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(EcosysParam(founder_account))\nEcosysParam(gender, Source: mygender)\n\nEcosysParam(Name: gender_list, Source: src_gender)\nSelect(Name: gender, Source: src_gender, NameColumn: name, ValueColumn: id)\n")])])]),t("h3",{attrs:{id:"em"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#em"}},[e._v("#")]),e._v(" Em")]),e._v(" "),t("p",[e._v("Erstellen Sie ein em-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Em(Body, Class)\n")])])]),t("blockquote",[t("p",[e._v("Em")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordneter Text oder untergeordnetes Element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Der em-Klassenname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-18"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("This is an Em(important news).\n")])])]),t("h3",{attrs:{id:"forlist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#forlist"}},[e._v("#")]),e._v(" ForList")]),e._v(" "),t("p",[e._v("Zeigen Sie die Liste der Elemente in der Quelldatenquelle im Vorlagenformat an, das in Body festgelegt ist, und erstellen Sie ein "),t("strong",[e._v("forlist")]),e._v("-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(Source, Index){Body}\n")])])]),t("blockquote",[t("p",[e._v("ForList")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Datenquelle, die von der Funktion "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" oder "),t("a",{attrs:{href:"#data"}},[e._v("Data")]),e._v(" abgerufen wird.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("Die Variable des Iterationszählers, beginnend bei 1.\nEin optionaler Parameter. Wenn nicht angegeben, wird der Iterationszählerwert in die Variable [Source] _index geschrieben.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])])])]),e._v(" "),t("p",[e._v("Vorlage zum Einfügen von Elementen.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(mysrc){Span(#mysrc_index#. #name#)}\n")])])]),t("h3",{attrs:{id:"form"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Formular-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(Class, Body) [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Form")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordneter Text oder untergeordnetes Element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname des Formulars.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style\nThe CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS stil.")]),e._v(" "),t("h4",{attrs:{id:"beispiel-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-19"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(class1 class2, Input(myid))\n")])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[e._v("#")]),e._v(" GetColumnType")]),e._v(" "),t("p",[e._v("Gibt den Felddatentyp einer bestimmten Tabelle zurück.")]),e._v(" "),t("p",[e._v("Zu den zurückgegebenen Typen gehören: "),t("code",[e._v("text, varchar, number, money, double, bytes, json, datetime, double")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetColumnType(Table, Column)\n")])])]),t("blockquote",[t("p",[e._v("GetColumnType")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Table")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Feldname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-20"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("SetVar(coltype,GetColumnType(members, member_name))Div(){#coltype#}\n")])])]),t("h3",{attrs:{id:"verlauf-abrufen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#verlauf-abrufen"}},[e._v("#")]),e._v(" Verlauf abrufen")]),e._v(" "),t("p",[e._v("Erstellen Sie ein gethistory-Element und füllen Sie es mit den Änderungshistoriendatensätzen der Einträge in der angegebenen Tabelle. Die generierten Daten werden im Quellelement platziert, das später in der Quelleingabefunktion verwendet werden kann (z. B. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nDas Array wird in der Reihenfolge der letzten Änderung sortiert.\nDas ID-Feld im Array zeigt auf die ID der rollback_tx-Tabelle. block_id stellt die Block-ID dar, block_time stellt den Zeitstempel der Blockgenerierung dar.")]),e._v(" "),t("h4",{attrs:{id:"syntax-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(Source, Name, Id, RollbackId)\n")])])]),t("blockquote",[t("p",[e._v("GetHistory")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Tabellenname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Id")])]),e._v(" "),t("p",[e._v("Entry ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("RollbackId")])]),e._v(" "),t("p",[e._v("Ein optionaler Parameter. Wenn angegeben, wird nur ein Datensatz mit der angegebenen ID aus der Tabelle rollback_tx zurückgegeben.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-21"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(blocks, BlockHistory, 1)\n")])])]),t("h3",{attrs:{id:"getvar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getvar"}},[e._v("#")]),e._v(" GetVar")]),e._v(" "),t("p",[e._v("Es gibt den Wert der angegebenen Variablen zurück, die bereits vorhanden ist, oder eine leere Zeichenfolge, wenn sie nicht vorhanden ist.\nDas getvar-Element wird nur erstellt, wenn ein bearbeitbarer Baum angefordert wird. Der Unterschied zwischen "),t("code",[e._v("GetVar(varname)")]),e._v(" und "),t("code",[e._v("#varname")]),e._v(" besteht darin, dass GetVar einen leeren String zurückgibt, wenn varname nicht existiert, während #varname# als Stringwert interpretiert wird.")]),e._v(" "),t("h4",{attrs:{id:"syntax-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetVar(Name)\n")])])]),t("blockquote",[t("p",[e._v("GetVar")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Variable name.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-22"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(GetVar(name)){#name#}.Else{Name is unknown}\n")])])]),t("h3",{attrs:{id:"hinweis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hinweis"}},[e._v("#")]),e._v(" Hinweis")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Hinweiselement für Hinweise.")]),e._v(" "),t("h4",{attrs:{id:"syntax-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Hint(Icon,Title,Text)\n")])])]),t("blockquote",[t("p",[e._v("Hint")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Symbolname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Hinweis Titel.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Hinweistext.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-23"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Hint(Icon: "icon-wrench",Title:$@1pa_settings$,Text: This is a hint text)\n')])])]),t("h3",{attrs:{id:"if"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#if"}},[e._v("#")]),e._v(" If")]),e._v(" "),t("p",[e._v("Bedingungsaussage.\nGibt das erste untergeordnete If- oder ElseIf-Element zurück, das Bedingung erfüllt. Geben Sie andernfalls das untergeordnete Else-Element zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Condition){ Body}\n [.ElseIf(Condition){ Body }]\n [.Else{ Body }]\n")])])]),t("blockquote",[t("p",[e._v("If")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Condition")])]),e._v(" "),t("p",[e._v("Wenn die Bedingung gleich einer leeren Zeichenfolge, 0 oder falsch ist, wird davon ausgegangen, dass die Bedingung nicht erfüllt ist. In allen anderen Fällen gilt diese Bedingung als erfüllt.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordnetes Element.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-24"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(#value#){\n Span(Value)\n}.ElseIf(#value2#){Span(Value 2)\n}.ElseIf(#value3#){Span(Value 3)}.Else{\n Span(Nothing)\n}\n")])])]),t("h3",{attrs:{id:"bild"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bild"}},[e._v("#")]),e._v(" Bild")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Bild-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src, Alt, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Image")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Src")])]),e._v(" "),t("p",[e._v("Bildquelle, Datei bzw "),t("code",[e._v("data:...")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Alt")])]),e._v(" "),t("p",[e._v("Alternativtext, wenn das Bild nicht angezeigt werden kann.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Сlass")])]),e._v(" "),t("p",[e._v("Bildklassenname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-25"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src: Binary().ById(#id#), Class: preview).Style(height: 40px; widht 40px;)\n")])])]),t("h3",{attrs:{id:"bildeingabe"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bildeingabe"}},[e._v("#")]),e._v(" Bildeingabe")]),e._v(" "),t("p",[e._v("Erstellen Sie ein imageinput-Element, um ein Bild hochzuladen.")]),e._v(" "),t("h4",{attrs:{id:"syntax-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(Name, Width, Ratio, Format)\n")])])]),t("blockquote",[t("p",[e._v("ImageInput")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Elementname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Breite des zugeschnittenen Bildes.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ratio")])]),e._v(" "),t("p",[e._v("Seitenverhältnis oder Bildhöhe.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("Das Format des hochgeladenen Bildes.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-26"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(avatar, 100, 2/1)\n")])])]),t("h3",{attrs:{id:"enthalten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enthalten"}},[e._v("#")]),e._v(" Enthalten")]),e._v(" "),t("p",[e._v("Fügen Sie die Vorlage mit einem bestimmten Namen in den Seitencode ein.")]),e._v(" "),t("h4",{attrs:{id:"syntax-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Include(Name)\n")])])]),t("blockquote",[t("p",[e._v("Include")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Vorlagenname.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-27"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(myclass, Include(mywidget))\n")])])]),t("h3",{attrs:{id:"eingabe"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#eingabe"}},[e._v("#")]),e._v(" Eingabe")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Eingabe-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name, Class, Placeholder, Type, Value, Disabled)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Eingang")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Elementname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Placeholder")])]),e._v(" "),t("p",[e._v("Fordern Sie den erwarteten Wert des Eingabefelds an.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Eingabetyp.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Elementwert.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Disabled")])]),e._v(" "),t("p",[e._v("Deaktivieren Sie das Eingabeelement.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validieren Sie den Parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("Der angegebene CSS-Stil.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-28"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name: name, Type: text, Placeholder: Enter your name)\nInput(Name: num, Type: text).Validate(minLength: 6, maxLength: 20)\n")])])]),t("h3",{attrs:{id:"inputerr"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputerr"}},[e._v("#")]),e._v(" InputErr")]),e._v(" "),t("p",[e._v("Erstellen Sie ein inputerr-Element, um den Fehlertext zu validieren.")]),e._v(" "),t("h4",{attrs:{id:"syntax-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name,validation errors)]\n")])])]),t("blockquote",[t("p",[e._v("InputErr")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Entspricht dem Namen des Elements "),t("a",{attrs:{href:"#input"}},[e._v("Input")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("validation errors")])])])]),e._v(" "),t("p",[e._v("Validierungsfehlermeldung für einen oder mehrere Parameter.")]),e._v(" "),t("h4",{attrs:{id:"beispiel-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-29"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name: name,\nminLength: Value is too short,\nmaxLength: The length of the value must be less than 20 characters)\n")])])]),t("h3",{attrs:{id:"inputmap"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputmap"}},[e._v("#")]),e._v(" InputMap")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Texteingabefeld für die Adresse, um Koordinaten auf der Karte auszuwählen.")]),e._v(" "),t("h4",{attrs:{id:"syntax-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputMap(Name, Typ, Kartentyp, Wert)\n")])])]),t("blockquote",[t("p",[e._v("InputMap")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Elementname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Standardwert.\nDer Wert ist ein Objekt im String-Format. Zum Beispiel, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". Wenn die InputMap mit dem vordefinierten Wert erstellt wird, kann das Adressfeld verwendet werden, um den Adresswert zu speichern, damit er nicht ungültig wird.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Art der Kartenpunktkartierung:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("polygon")]),e._v(" - gibt den Bereich einer geschlossenen Schleife mit mehreren Punkten an;")]),e._v(" "),t("li",[t("code",[e._v("Line")]),e._v(" - bedeutet eine Polylinie mit mehreren Punkten ohne geschlossene Schleife;")]),e._v(" "),t("li",[t("code",[e._v("Point")]),e._v(" - gibt eine einzelne Punktkoordinate an.")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Kartentyp.\nEs hat folgende Werte: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-30"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('InputMap(Name: Coords,Type: polygon, MapType: hybrid, Value: `{"zoom":8, "center":{"lat":55.749942860682545,"lng":37.6207172870636}}`)\n')])])]),t("h3",{attrs:{id:"jsontosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jsontosource"}},[e._v("#")]),e._v(" JsonToSource")]),e._v(" "),t("p",[e._v("Erstellen Sie ein jsontosource-Element und füllen Sie es mit den Schlüssel-Wert-Paaren eines JSON-Arrays. Die erhaltenen Daten werden in das Source-Element gestellt, das später in der Source-Eingabefunktion verwendet werden kann (z. B. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nDie Datensätze in den Ergebnisdaten sind alphabetisch nach JSON-Schlüssel sortiert.")]),e._v(" "),t("h4",{attrs:{id:"syntax-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("JsonToSource(Source, Data)\n")])])]),t("blockquote",[t("p",[e._v("JsonToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("Ein JSON-Objekt oder ein Variablenname, der ein JSON-Objekt enthält ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-31"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('JsonToSource(src, #myjson#)\nJsonToSource(dat, {"param":"value", "param2": "value 2"})\n')])])]),t("h3",{attrs:{id:"label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#label"}},[e._v("#")]),e._v(" Label")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Label-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(Body, Class, For)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Label")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordneter Text oder untergeordnetes Element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("For")])]),e._v(" "),t("p",[e._v("An ein Formularelement binden.")])])]),e._v(" "),t("blockquote",[t("p",[t("code",[e._v("StyleThe")]),e._v(":CSS-Stil angegeben.")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS stil.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-32"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(The first item).\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[e._v("#")]),e._v(" LangRes")]),e._v(" "),t("p",[e._v("Gibt eine bestimmte Sprachressource zurück. Wenn Sie aufgefordert werden, den Baum zu bearbeiten, wird das langres-Element zurückgegeben, und Sie können das Kurzformatsymbol $langres$ verwenden.")]),e._v(" "),t("h4",{attrs:{id:"syntax-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(Name)\n")])])]),t("blockquote",[t("p",[e._v("LangRes")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name der Sprachressource.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-33"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(name)\nLangRes(myres)\n")])])]),t("h3",{attrs:{id:"linkpage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linkpage"}},[e._v("#")]),e._v(" LinkPage")]),e._v(" "),t("p",[e._v("Erstellen Sie ein linkpage-Element, das auf die Seite verlinkt.")]),e._v(" "),t("h4",{attrs:{id:"syntax-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LinkPage(Body, Page, Class, PageParams)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("LinkPage")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordneter Text oder untergeordnetes Element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name der Weiterleitungsseite.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Name der Schaltflächenklasse.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Seitenparameter umleiten.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("Der angegebene CSS-Stil.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS stil")]),e._v(" "),t("h4",{attrs:{id:"beispiel-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-34"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: "v_role_id=#recipient.role_id#")\n')])])]),t("h3",{attrs:{id:"map"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#map"}},[e._v("#")]),e._v(" Map")]),e._v(" "),t("p",[e._v("Erstellen Sie eine visuelle Karte und zeigen Sie Koordinaten in einem beliebigen Format an.")]),e._v(" "),t("h4",{attrs:{id:"syntax-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Map(Hmap, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("Map")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Hmap")])]),e._v(" "),t("p",[e._v("Höhe eines HTML-Elements auf der Seite.\nDer Standardwert ist 100.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Kartenwert, ein Objekt im Zeichenfolgenformat.\nZum Beispiel, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". Ob "),t("code",[e._v("center")]),e._v(" nicht angegeben ist, passt sich das Kartenfenster automatisch an die angegebenen Koordinaten an.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Kartentyp.\nEs hat folgende Werte: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-35"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Map(MapType:hybrid, Hmap:400, Value:{"coords":[{"lat":55.58774531752405,"lng":36.97260184619233},{"lat":55.58396161622043,"lng":36.973803475831005},{"lat":55.585222890513975,"lng":36.979811624024364},{"lat":55.58803635636347,"lng":36.978781655762646}],"area":146846.65783403456,"address":"Unnamed Road, Moscow, Russia, 143041"})\n')])])]),t("h3",{attrs:{id:"menugroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menugroup"}},[e._v("#")]),e._v(" MenuGroup")]),e._v(" "),t("p",[e._v("Erstellen Sie ein verschachteltes Untermenü im Menü und geben Sie das menugroup-Element zurück. Bevor er durch die Sprachressource ersetzt wird, gibt der name-Parameter den Wert von Title zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(Title, Body, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name des Menüpunkts.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordnete Elemente in einem Untermenü.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-36"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(My Menu){\n MenuItem(Interface, sys-interface)\n MenuItem(Dahsboard, dashboard_default)\n}\n")])])]),t("h3",{attrs:{id:"menuitem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menuitem"}},[e._v("#")]),e._v(" MenuItem")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Menüelement und geben Sie das Element menuitem zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuItem(Title, Page, Params, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuItem")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name des Menüpunkts.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name der Weiterleitungsseite.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("Seitenparameter umleiten.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-37"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('MenuItem(Title:$@1roles$, Page:@1roles_list, Icon:"icon-pie-chart")\n')])])]),t("h3",{attrs:{id:"geld"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#geld"}},[e._v("#")]),e._v(" Geld")]),e._v(" "),t("p",[e._v("Gibt den Zeichenfolgenwert von exp / 10 ^ Ziffer zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("blockquote",[t("p",[e._v("Money")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Exp")])])]),e._v(" "),t("p",[e._v("Eine Zahl im Zeichenfolgenformat.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Digit")])]),e._v(" "),t("p",[e._v("Der Exponent von 10 im Ausdruck "),t("code",[e._v("Exp/10^digit")]),e._v(". Der Wert kann positiv oder negativ sein, und ein positiver Wert bestimmt die Anzahl der Nachkommastellen.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-38"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("h3",{attrs:{id:"or"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#or"}},[e._v("#")]),e._v(" Or")]),e._v(" "),t("p",[e._v("Es gibt das Ergebnis einer if-Logikoperation zurück. Alle in Klammern aufgeführten Parameter sind durch Kommas getrennt. Wenn ein Parameter, der Wert ist, keine leere Zeichenfolge, Null oder "),t("code",[e._v("false")]),e._v(" ist, ist der Parameterwert "),t("code",[e._v("true")]),e._v(", andernfalls ist der Parameterwert "),t("code",[e._v("false")]),e._v('. Wenn der Parameterwert "true" ist, gibt die Funktion '),t("code",[e._v("1")]),e._v(" zurück, andernfalls gibt sie "),t("code",[e._v("0")]),e._v(" zurück.")]),e._v(" "),t("h4",{attrs:{id:"syntax-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Or(parameters)\n")])])]),t("h4",{attrs:{id:"beispiel-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-39"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Or(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"p"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#p"}},[e._v("#")]),e._v(" P")]),e._v(" "),t("p",[e._v("Erstellen Sie ein p-HTML-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(Body, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("P")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Untergeordneter Text oder untergeordnetes Element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Stil")])]),e._v(" "),t("p",[e._v("Der angegebene CSS-Stil.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS stil.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-40"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(This is the first line.\n This is the second line.)\n")])])]),t("h3",{attrs:{id:"qrcode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#qrcode"}},[e._v("#")]),e._v(" QRcode")]),e._v(" "),t("p",[e._v("Gibt den QR-Code mit dem angegebenen Text zurück und erstellt ein qrcode-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(Text)\n")])])]),t("blockquote",[t("p",[e._v("QRcode")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("QR code text.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-41"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(#name#)\n")])])]),t("h3",{attrs:{id:"radiogroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#radiogroup"}},[e._v("#")]),e._v(" RadioGroup")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Radiogroup-Element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-44"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-44"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name, Source, NameColumn, ValueColumn, Value, Class)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("RadioGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Elementname.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Datenquelle, die von der Funktion DBFind oder Data abgerufen wird.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("NameColumn")])]),e._v(" "),t("p",[e._v("Feldname der Datenquelle.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ValueColumn")])]),e._v(" "),t("p",[e._v("Wertname der Datenquelle.\nMit Benutzerdefiniert erstellte Felder können in diesem Parameter nicht verwendet werden.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Standardwert.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Klassenname.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validieren Sie den Parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("Der angegebene CCS-Stil.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS stil.")])])]),e._v(" "),t("h4",{attrs:{id:"beispiel-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#beispiel-42"}},[e._v("#")]),e._v(" Beispiel")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name: type_decision, Source: numbers_type_decisions, NameColumn: name, ValueColumn: value)\n")])])]),t("h3",{attrs:{id:"bereich"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bereich"}},[e._v("#")]),e._v(" Bereich")]),e._v(" "),t("p",[e._v("Erstellen Sie ein Bereichselement, verwenden Sie die Schrittgröße Step from From to To (ohne To), um Integer-Elemente zu füllen. Die generierten Daten werden in Source abgelegt und können später in der Funktion der Source-Eingabe verwendet werden (z. B. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v("). Wenn ein ungültiger Parameter angegeben wird, wird eine leere Quelle zurückgegeben.")]),e._v(" "),t("h4",{attrs:{id:"syntax-45"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-45"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Range(Source,From,To,Step)\n")])])]),t("blockquote",[t("p",[e._v("Range")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name der Datenquelle.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("From")])]),e._v(" "),t("p",[e._v("Startwert (i = Von).")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("To")])]),e._v(" "),t("p",[e._v("Endwert (i ")]),e._v(".")]),e._v(" "),t("li",[e._v("All icon-class icons are from SimpleLineIcons: "),t("code",[e._v("icon-")]),e._v(".")])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/28.7895237d.js b/assets/js/28.d2dff34a.js similarity index 99% rename from assets/js/28.7895237d.js rename to assets/js/28.d2dff34a.js index eb8e1f9..f8b20fb 100644 --- a/assets/js/28.7895237d.js +++ b/assets/js/28.d2dff34a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{407:function(e,n,t){"use strict";t.r(n);var r=t(51),a=Object(r.a)({},(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"compiler-und-virtuelle-maschine"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#compiler-und-virtuelle-maschine"}},[e._v("#")]),e._v(" Compiler und virtuelle Maschine")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#source-code-storage-and-compilation"}},[e._v("Speicherung und Kompilierung des Quellcodes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#virtual-machine-structures"}},[e._v("Strukturen virtueller Maschinen")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#vm-Struktur"}},[e._v("VM-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Blockstruktur"}},[e._v("Blockstruktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#objinfo-Struktur"}},[e._v("ObjInfo-Struktur")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#contractinfo-Struktur"}},[e._v("ContractInfo-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#fieldinfo-Struktur"}},[e._v("FieldInfo-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#funcinfo-Struktur"}},[e._v("FuncInfo-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Funktionsname-Struktur"}},[e._v("Funktionsname-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#extfuncinfo-Struktur"}},[e._v("ExtFuncInfo-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#varinfo-Struktur"}},[e._v("VarInfo-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#objextend-Wert"}},[e._v("ObjExtend-Wert")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#virtual-machine-commands"}},[e._v("Befehle für virtuelle Maschinen")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Bytecode-Struktur"}},[e._v("ByteCode-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Befehlskennungen"}},[e._v("Befehlskennungen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#stack-operation-commands"}},[e._v("Befehle für Stapeloperationen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#runtime-structure"}},[e._v("Laufzeitstruktur")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#blockstack-Struktur"}},[e._v("blockStack-Struktur")])])])]),e._v(" "),t("li",[e._v("[RunCode-Funktion] (#runcode-Funktion)")]),e._v(" "),t("li",[t("a",{attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("Andere Funktionen für Operationen mit VM")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Compiler"}},[e._v("Compiler")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#lexical-analyzer"}},[e._v("Lexikalanalyse")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Nadelsprache"}},[e._v("Nadelsprache")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#lexeme"}},[e._v("Lexeme")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Typen"}},[e._v("Typen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Ausdr%C3%BCcke"}},[e._v("Ausdrücke")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Bereich"}},[e._v("Bereich")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Vertragsausf%C3%BChrung"}},[e._v("Vertragsausführung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#backus-naur-Form-bnf"}},[e._v("Backus-Naur-Form (BNF)")])])])])]),e._v(" "),t("p",[e._v("Dieser Abschnitt umfasst Programmkompilierung und Needle-Language-Operationen in der virtuellen Maschine (VM).")]),e._v(" "),t("h2",{attrs:{id:"speicherung-und-kompilierung-des-quellcodes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#speicherung-und-kompilierung-des-quellcodes"}},[e._v("#")]),e._v(" Speicherung und Kompilierung des Quellcodes")]),e._v(" "),t("p",[e._v("Verträge und Funktionen werden mit Golang geschrieben und in den Vertragstabellen von Ökosystemen gespeichert.")]),e._v(" "),t("p",[e._v("Wenn ein Vertrag ausgeführt wird, wird sein Quellcode aus der Datenbank gelesen und in Bytecode kompiliert.")]),e._v(" "),t("p",[e._v("Wenn ein Vertrag geändert wird, wird sein Quellcode aktualisiert und in der Datenbank gespeichert. Dann wird der Quellcode kompiliert, wodurch der Bytecode in der entsprechenden virtuellen Maschine aktualisiert wird.")]),e._v(" "),t("p",[e._v("Da Bytecodes nicht physikalisch gespeichert werden, werden sie bei einer erneuten Programmausführung neu kompiliert.")]),e._v(" "),t("p",[e._v("Der gesamte in der Vertragstabelle jedes Ökosystems beschriebene Quellcode wird in einer strengen Reihenfolge in eine virtuelle Maschine kompiliert, und der Status der virtuellen Maschine ist auf allen Knoten gleich.")]),e._v(" "),t("p",[e._v("Beim Vertragsaufruf ändert die virtuelle Maschine ihren Status in keiner Weise. Die Ausführung eines Vertrages oder das Aufrufen einer Funktion erfolgt auf einem separaten laufenden Stack, der während jedes externen Aufrufs erstellt wird.")]),e._v(" "),t("p",[e._v("Jedes Ökosystem kann ein sogenanntes virtuelles Ökosystem haben, das innerhalb eines Knotens in Verbindung mit Tabellen außerhalb der Blockchain verwendet werden kann, ohne direkten Einfluss auf die Blockchain oder andere virtuelle Ökosysteme. In diesem Fall erstellt der Knoten, der ein solches virtuelles Ökosystem hostet, seinen Vertrag und erstellt seine eigene virtuelle Maschine.")]),e._v(" "),t("h2",{attrs:{id:"strukturen-virtueller-maschinen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#strukturen-virtueller-maschinen"}},[e._v("#")]),e._v(" Strukturen virtueller Maschinen")]),e._v(" "),t("h3",{attrs:{id:"vm-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vm-struktur"}},[e._v("#")]),e._v(" VM-Struktur")]),e._v(" "),t("p",[e._v("Eine virtuelle Maschine ist im Arbeitsspeicher als Struktur wie unten organisiert.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type VM struct {\n Block\n ExtCost func(string) int64\n FuncCallsDB map[string]struct{}\n Extern bool\n ShiftContract int64\n logger *log.Entry\n}\n")])])]),t("p",[e._v("Eine VM-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[e._v("Block - enthält eine [Blockstruktur] (#block-structure);")]),e._v(" "),t("li",[e._v("ExtCost - eine Funktion gibt die Kosten für die Ausführung einer externen Golang-Funktion zurück;")]),e._v(" "),t("li",[e._v("FuncCallsDB - eine Sammlung von Golang-Funktionsnamen. Diese Funktion gibt die Ausführungskosten als ersten Parameter zurück. Diese Funktionen verwenden EXPLAIN, um die Kosten der Datenbankverarbeitung zu berechnen;")]),e._v(" "),t("li",[e._v("Extern – ein Boolesches Flag, das angibt, ob ein Vertrag ein externer Vertrag ist. Es wird auf „true“ gesetzt, wenn eine VM erstellt wird. Aufgerufene Verträge werden beim Kompilieren des Codes nicht angezeigt. Mit anderen Worten, es ermöglicht, den in Zukunft festgelegten Vertragscode aufzurufen;")]),e._v(" "),t("li",[e._v("Schichtvertrag – ID des ersten Vertrags in der VM;")]),e._v(" "),t("li",[e._v("logger - Ausgabe des VM-Fehlerprotokolls.")])]),e._v(" "),t("h3",{attrs:{id:"blockstruktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#blockstruktur"}},[e._v("#")]),e._v(" Blockstruktur")]),e._v(" "),t("p",[e._v("Eine virtuelle Maschine ist ein Baum, der aus "),t("strong",[e._v("Blocktyp")]),e._v("-Objekten besteht.")]),e._v(" "),t("p",[e._v("Ein Block ist eine unabhängige Einheit, die einige Bytecodes enthält. Einfach ausgedrückt ist alles, was Sie in der Sprache in die geschweiften Klammern ("),t("code",[e._v("{}")]),e._v(") setzen, ein Block.")]),e._v(" "),t("p",[e._v("Der folgende Code würde beispielsweise einen Block mit Funktionen erstellen. Dieser Block enthält auch einen weiteren Block mit einer if-Anweisung, der wiederum einen Block mit einer while-Anweisung enthält.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("func my() {\n if true {\n while false {\n ...\n }\n }\n}\n")])])]),t("p",[e._v("Der Block ist im Speicher als Struktur wie unten organisiert.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type Block struct {\n Objects map[string]*ObjInfo\n Type int\n Owner *OwnerInfo\n Info interface{}\n Parent *Block\n Vars []reflect.Type\n Code ByteCodes\n Children Blocks\n}\n")])])]),t("p",[e._v("Eine Blockstruktur besteht aus folgenden Elementen:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Objekte")]),e._v(" - eine Abbildung interner Objekte des Zeigertyps "),t("a",{attrs:{href:"#objInfo-Struktur"}},[e._v("ObjInfo")]),e._v(". Wenn der Block beispielsweise eine Variable enthält, können Sie anhand ihres Namens Informationen darüber erhalten.")]),e._v(" "),t("li",[t("strong",[e._v("Typ")]),e._v(" - der Typ des Blocks. Bei einem Funktionsblock ist sein Typ "),t("strong",[e._v("ObjFunc")]),e._v("; für einen Vertragsblock ist sein Typ "),t("strong",[e._v("ObjContract")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("Eigentümer")]),e._v(" – eine Struktur vom Zeigertyp "),t("strong",[e._v("Eigentümerinfo")]),e._v(". Diese Struktur enthält Informationen über den Eigentümer des kompilierten Vertrags, der während der Vertragserstellung angegeben oder aus der Tabelle "),t("strong",[e._v("Verträge")]),e._v(" erhalten wird;")]),e._v(" "),t("li",[t("strong",[e._v("Info")]),e._v(" - enthält Informationen über das Objekt, die vom Blocktyp abhängen;")]),e._v(" "),t("li",[t("strong",[e._v("Parent")]),e._v(" – ein Zeiger auf den Elternblock;")]),e._v(" "),t("li",[t("strong",[e._v("Vars")]),e._v(" - ein Array, das die Typen der aktuellen Blockvariablen enthält;")]),e._v(" "),t("li",[t("strong",[e._v("Code")]),e._v(" - der Bytecode des Blocks selbst, der ausgeführt wird, wenn die Kontrollrechte an den Block übergeben werden, zum Beispiel Funktionsaufrufe oder Schleifenkörper;")]),e._v(" "),t("li",[t("strong",[e._v("Children")]),e._v(" - ein Array mit Unterblöcken, wie z. B. Funktionsverschachtelung, Schleifen, bedingte Operatoren.")])]),e._v(" "),t("h3",{attrs:{id:"objinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#objinfo-struktur"}},[e._v("#")]),e._v(" ObjInfo-Struktur")]),e._v(" "),t("p",[e._v("Die ObjInfo-Struktur enthält Informationen über interne Objekte.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type ObjInfo struct {\n Type int\n Value interface{}\n}\n")])])]),t("p",[e._v("Die ObjInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Typ")]),e._v(" ist der Objekttyp, der einen der folgenden Werte hat:\n"),t("ul",[t("li",[t("strong",[e._v("ObjContract")]),e._v(" – "),t("a",{attrs:{href:"#contractInfo-Struktur"}},[e._v("Vertrag")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("ObjFunc")]),e._v(" - Funktion;")]),e._v(" "),t("li",[t("strong",[e._v("ObjExtFunc")]),e._v(" - externe Golang-Funktion;")]),e._v(" "),t("li",[t("strong",[e._v("ObjVar")]),e._v(" - Variable;")]),e._v(" "),t("li",[t("strong",[e._v("ObjExtend")]),e._v(" - $name-Variable.")])])]),e._v(" "),t("li",[t("strong",[e._v("Wert")]),e._v(" – enthält die Struktur jedes Typs.")])]),e._v(" "),t("h4",{attrs:{id:"contractinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contractinfo-struktur"}},[e._v("#")]),e._v(" ContractInfo-Struktur")]),e._v(" "),t("p",[e._v("Zeigt auf den Typ "),t("strong",[e._v("ObjContract")]),e._v(", und das Feld "),t("strong",[e._v("Value")]),e._v(" enthält eine "),t("strong",[e._v("ContractInfo")]),e._v("-Struktur.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type ContractInfo struct {\n ID uint32\n Name string\n Owner *OwnerInfo\n Used map[string]bool\n Tx *[]*FieldInfo\n}\n")])])]),t("p",[e._v("Die ContractInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("ID")]),e._v(" - Vertrags-ID, die beim Aufruf des Vertrags in der Blockchain angezeigt wird;")]),e._v(" "),t("li",[t("strong",[e._v("Name")]),e._v(" - Vertragsname;")]),e._v(" "),t("li",[t("strong",[e._v("Eigentümer")]),e._v(" - andere Informationen zum Vertrag;")]),e._v(" "),t("li",[t("strong",[e._v("Verwendet")]),e._v(" - Karte der aufgerufenen Vertragsnamen;")]),e._v(" "),t("li",[t("strong",[e._v("Tx")]),e._v(" – ein Datenarray, das im "),t("RouterLink",{attrs:{to:"/de/topics/script.html#data-section"}},[e._v("Datenabschnitt")]),e._v(" des Vertrags beschrieben wird.")],1)]),e._v(" "),t("h4",{attrs:{id:"fieldinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fieldinfo-struktur"}},[e._v("#")]),e._v(" FieldInfo-Struktur")]),e._v(" "),t("p",[e._v("Die FieldInfo-Struktur wird in der "),t("strong",[e._v("ContractInfo")]),e._v("-Struktur verwendet und beschreibt Elemente im "),t("RouterLink",{attrs:{to:"/de/topics/script.html#data-section"}},[e._v("Datenabschnitt")]),e._v(" eines Vertrags.")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type FieldInfo struct {\n Name string\n Type reflect.Type\n Original uint32\n Tags string\n}\n")])])]),t("p",[e._v("Die FieldInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Name")]),e._v(" - Feldname;")]),e._v(" "),t("li",[t("strong",[e._v("Typ")]),e._v(" - Feldtyp;")]),e._v(" "),t("li",[t("strong",[e._v("Original")]),e._v(" - optionales Feld;")]),e._v(" "),t("li",[t("strong",[e._v("Tags")]),e._v(" - zusätzliche Beschriftungen für dieses Feld.")])]),e._v(" "),t("h4",{attrs:{id:"funcinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#funcinfo-struktur"}},[e._v("#")]),e._v(" FuncInfo-Struktur")]),e._v(" "),t("p",[e._v("Zeigt auf den ObjFunc-Typ, und das Value-Feld enthält eine FuncInfo-Struktur.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type FuncInfo struct {\n Params []reflect.Type\n Results []reflect.Type\n Names *map[string]FuncName\n Variadic bool\n ID uint32\n}\n")])])]),t("p",[e._v("Die FuncInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Params")]),e._v(" - ein Array von Parametertypen;")]),e._v(" "),t("li",[t("strong",[e._v("Ergebnisse")]),e._v(" - ein Array zurückgegebener Typen;")]),e._v(" "),t("li",[t("strong",[e._v("Namen")]),e._v(" - Abbildung von Daten für Tail-Funktionen, zum Beispiel "),t("code",[e._v("DBFind().Columns ()")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("Variadic")]),e._v(" - wahr, wenn die Funktion eine variable Anzahl von Parametern haben kann;")]),e._v(" "),t("li",[t("strong",[e._v("ID")]),e._v(" - Funktions-ID.")])]),e._v(" "),t("h4",{attrs:{id:"funcname-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#funcname-struktur"}},[e._v("#")]),e._v(" FuncName-Struktur")]),e._v(" "),t("p",[e._v("Die Struktur FuncName wird für FuncInfo verwendet und beschreibt die Daten einer Tail-Funktion.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type FuncName struct {\n Params []reflect.Type\n Offset []int\n Variadic bool\n}\n")])])]),t("p",[e._v("Die FuncName-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Params")]),e._v(" - ein Array von Parametertypen;")]),e._v(" "),t("li",[t("strong",[e._v("Offset")]),e._v(" - das Array von Offsets für diese Variablen. Tatsächlich können die Werte aller Parameter in einer Funktion mit dem Punkt . initialisiert werden;")]),e._v(" "),t("li",[t("strong",[e._v("Variadic")]),e._v(" - true, wenn die Tail-Funktion eine variable Anzahl von Parametern haben kann.")])]),e._v(" "),t("h4",{attrs:{id:"extfuncinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#extfuncinfo-struktur"}},[e._v("#")]),e._v(" ExtFuncInfo-Struktur")]),e._v(" "),t("p",[e._v("Zeigt auf den ObjExtFunc-Typ, und das Value-Feld enthält eine ExtFuncInfo-Struktur. Es wird verwendet, um Golang-Funktionen zu beschreiben.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type ExtFuncInfo struct {\n Name string\n Params []reflect.Type\n Results []reflect.Type\n Auto []string\n Variadic bool\n Func interface{}\n}\n")])])]),t("p",[e._v("Die ExtFuncInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[e._v("Die Parameter "),t("strong",[e._v("Name")]),e._v(", "),t("strong",[e._v("Params")]),e._v(", "),t("strong",[e._v("Results")]),e._v(" haben die gleiche Struktur wie "),t("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("Auto")]),e._v(" - ein Array von Variablen. Wird gegebenenfalls als zusätzlicher Parameter an die Funktion übergeben. Beispielsweise eine Variable vom Typ SmartContract sc;")]),e._v(" "),t("li",[t("strong",[e._v("Func")]),e._v(" - Golang-Funktionen.")])]),e._v(" "),t("h4",{attrs:{id:"varinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#varinfo-struktur"}},[e._v("#")]),e._v(" VarInfo-Struktur")]),e._v(" "),t("p",[e._v("Zeigt auf den Typ "),t("strong",[e._v("ObjVar")]),e._v(", und das Feld "),t("strong",[e._v("Value")]),e._v(" enthält eine "),t("strong",[e._v("VarInfo")]),e._v("-Struktur.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type VarInfo struct {\n Obj *ObjInfo\n Owner *Block\n}\n")])])]),t("p",[e._v("Die VarInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Obj")]),e._v(" - Informationen über Typ und Wert der Variablen;")]),e._v(" "),t("li",[t("strong",[e._v("Eigentümer")]),e._v(" - Zeiger auf den Eigentümerblock.")])]),e._v(" "),t("h4",{attrs:{id:"objextend-wert"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#objextend-wert"}},[e._v("#")]),e._v(" ObjExtend-Wert")]),e._v(" "),t("p",[e._v("Zeigt auf den Typ "),t("strong",[e._v("ObjExtend")]),e._v(", und das Feld "),t("strong",[e._v("Value")]),e._v(" enthält eine Zeichenfolge, die den Namen der Variablen oder Funktion enthält.")]),e._v(" "),t("h2",{attrs:{id:"befehle-fur-virtuelle-maschinen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#befehle-fur-virtuelle-maschinen"}},[e._v("#")]),e._v(" Befehle für virtuelle Maschinen")]),e._v(" "),t("h3",{attrs:{id:"bytecode-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bytecode-struktur"}},[e._v("#")]),e._v(" ByteCode-Struktur")]),e._v(" "),t("p",[e._v("Ein Bytecode ist eine Folge von Strukturen vom Typ "),t("strong",[e._v("ByteCode")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type ByteCode struct {\n Cmd uint16\n Value interface{}\n}\n")])])]),t("p",[e._v("Diese Struktur hat die folgenden Felder:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Cmd")]),e._v(" - der Bezeichner der Speicherbefehle;")]),e._v(" "),t("li",[t("strong",[e._v("Wert")]),e._v(" - enthält den Operanden (Wert).")])]),e._v(" "),t("p",[e._v("Im Allgemeinen führen Befehle eine Operation auf dem obersten Element des Stapels aus und schreiben bei Bedarf den Ergebniswert hinein.")]),e._v(" "),t("h3",{attrs:{id:"befehlskennungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#befehlskennungen"}},[e._v("#")]),e._v(" Befehlskennungen")]),e._v(" "),t("p",[e._v("Bezeichner der Befehle der virtuellen Maschine sind in der Datei vm/cmds_list.go beschrieben.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("cmdPush")]),e._v(" – legt einen Wert aus dem Value-Feld auf den Stack. Legen Sie zum Beispiel Zahlen und Linien auf den Stapel;")]),e._v(" "),t("li",[t("strong",[e._v("cmdVar")]),e._v(" - Legt den Wert einer Variablen auf den Stack. Value enthält einen Zeiger auf die VarInfo-Struktur und Informationen über die Variable;")]),e._v(" "),t("li",[t("strong",[e._v("cmdExtend")]),e._v(" – legt den Wert einer externen Variablen auf den Stack. Wert enthält eine Zeichenfolge mit dem Variablennamen (beginnend mit $);")]),e._v(" "),t("li",[t("strong",[e._v("cmdCallExtend")]),e._v(" – Aufruf einer externen Funktion (beginnend mit $). Die Parameter der Funktion werden aus dem Stapel abgerufen und die Ergebnisse auf dem Stapel abgelegt. Wert enthält einen Funktionsnamen (beginnend mit $);")]),e._v(" "),t("li",[t("strong",[e._v("cmdPushStr")]),e._v(" – legt den String in Value auf den Stack;")]),e._v(" "),t("li",[t("strong",[e._v("cmdCall")]),e._v(" - ruft die Funktion der virtuellen Maschine auf. Wert enthält eine "),t("strong",[e._v("ObjInfo")]),e._v("-Struktur. Dieser Befehl gilt für die Golang-Funktion "),t("strong",[e._v("ObjExtFunc")]),e._v(" und die Needle-Funktion "),t("strong",[e._v("ObjFunc")]),e._v(". Wenn eine Funktion aufgerufen wird, werden ihre Parameter vom Stapel abgerufen und die Ergebniswerte werden auf dem Stapel abgelegt;")]),e._v(" "),t("li",[t("strong",[e._v("cmdCallVari")]),e._v(" - Ähnlich wie der Befehl "),t("strong",[e._v("cmdCall")]),e._v(" ruft er die Funktion der virtuellen Maschine auf. Dieser Befehl wird verwendet, um eine Funktion mit einer variablen Anzahl von Parametern aufzurufen;")]),e._v(" "),t("li",[t("strong",[e._v("cmdReturn")]),e._v(" - wird verwendet, um die Funktion zu verlassen. Die Rückgabewerte werden auf den Stack gelegt und das Value-Feld wird nicht verwendet;")]),e._v(" "),t("li",[t("strong",[e._v("cmdIf")]),e._v(" – übergibt die Kontrolle an den Bytecode in der Struktur "),t("strong",[e._v("block")]),e._v(", der im Feld Wert übergeben wird. Das Steuerelement wird nur dann auf den Stack übertragen, wenn das oberste Element des Stacks von der "),t("em",[e._v("valueToBool")]),e._v("-Funktion aufgerufen und "),t("code",[e._v("true")]),e._v(" zurückgegeben wird. Andernfalls wird die Steuerung an den nächsten Befehl übergeben;")]),e._v(" "),t("li",[t("strong",[e._v("cmdElse")]),e._v(" - dieser Befehl funktioniert auf die gleiche Weise wie "),t("strong",[e._v("cmdIf")]),e._v(", aber nur wenn das oberste Element des Stacks von der valueToBool-Funktion aufgerufen und "),t("code",[e._v("false")]),e._v(" zurückgegeben wird, wird die Steuerung an die übertragen angegebener Block;")]),e._v(" "),t("li",[t("strong",[e._v("cmdAssignVar")]),e._v(" – erhält eine Liste von Variablen des Typs "),t("strong",[e._v("VarInfo")]),e._v(" von Value. Diese Variablen verwenden den Befehl "),t("strong",[e._v("cmdAssign")]),e._v(", um den Wert abzurufen;")]),e._v(" "),t("li",[t("strong",[e._v("cmdAssign")]),e._v(" – weist den Wert im Stack der Variablen zu, die durch den Befehl "),t("strong",[e._v("cmdAssignVar")]),e._v(" erhalten wurde;")]),e._v(" "),t("li",[t("strong",[e._v("cmdLabel")]),e._v(" - definiert ein Label, wenn die Steuerung während der While-Schleife zurückgegeben wird;")]),e._v(" "),t("li",[t("strong",[e._v("cmdContinue")]),e._v(" - Dieser Befehl überträgt die Steuerung an das Label "),t("strong",[e._v("cmdLabel")]),e._v(". Beim Ausführen einer neuen Iteration der Schleife wird Value nicht verwendet;")]),e._v(" "),t("li",[t("strong",[e._v("cmdWhile")]),e._v(" – Verwenden Sie valueToBool, um das oberste Element des Stapels zu überprüfen. Wenn dieser Wert „true“ ist, wird die Struktur "),t("strong",[e._v("block")]),e._v(" aus dem Wertefeld aufgerufen;")]),e._v(" "),t("li",[t("strong",[e._v("cmdBreak")]),e._v(" - beendet die Schleife;")]),e._v(" "),t("li",[t("strong",[e._v("cmdIndex")]),e._v(" – legt den Wert in der Map oder im Array nach Index in den Stack, ohne Value zu verwenden. Beispiel: "),t("code",[e._v("(map | array) (index value) => (map | array [index value])")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdSetIndex")]),e._v(" – weist den Wert des obersten Elements des Stapels den Elementen der Karte oder des Arrays zu, ohne Value zu verwenden. Beispiel: "),t("code",[e._v("(map | array) (index value) (value) => (map | array)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdFuncName")]),e._v(" - fügt Parameter hinzu, die mit sequentiellen Beschreibungen geteilt durch Punkt übergeben werden. Beispiel: "),t("code",[e._v("func name => Fun (...) .Name (...)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdUnwrapArr")]),e._v(" - definiert ein boolesches Flag, wenn das oberste Element des Stapels ein Array ist;")]),e._v(" "),t("li",[t("strong",[e._v("cmdMapInit")]),e._v(" – initialisiert den Wert von map;")]),e._v(" "),t("li",[t("strong",[e._v("cmdArrayInit")]),e._v(" – initialisiert den Wert des Arrays;")]),e._v(" "),t("li",[t("strong",[e._v("cmdError")]),e._v(" - Dieser Befehl wird erstellt, wenn ein Vertrag oder eine Funktion mit einem angegebenen "),t("code",[e._v("error, warning, info")]),e._v(" beendet wird.")])]),e._v(" "),t("h3",{attrs:{id:"stack-operationsbefehle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#stack-operationsbefehle"}},[e._v("#")]),e._v(" Stack-Operationsbefehle")]),e._v(" "),t("blockquote",[t("p",[e._v("Hinweis")])]),e._v(" "),t("blockquote",[t("p",[e._v("In der aktuellen Version ist die automatische Typkonvertierung für diese Befehle nicht vollständig anwendbar. Zum Beispiel,")])]),e._v(" "),t("blockquote",[t("p",[t("code",[e._v("string + float | int | decimal => float | int | decimal, float + int | str => float, but int + string => runtime error")]),e._v(".")])]),e._v(" "),t("p",[e._v("Das Folgende sind Befehle für die direkte Stack-Verarbeitung. Das Feld Wert wird in diesen Befehlen nicht verwendet.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("cmdNot")]),e._v(" - logische Negation. "),t("code",[e._v("(val) => (!ValueToBool(val))")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdSign")]),e._v(" - Vorzeichenwechsel. "),t("code",[e._v("(val) => (-val)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdAdd")]),e._v(" - Ergänzung. "),t("code",[e._v("(val1)(val2) => (val1 + val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdSub")]),e._v(" - Subtraktion. "),t("code",[e._v("(val1)(val2) => (val1-val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdMul")]),e._v(" - Multiplikation. "),t("code",[e._v("(val1)(val2) => (val1 * val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdDiv")]),e._v(" - Division. "),t("code",[e._v("(val1)(val2) => (val1 / val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdAnd")]),e._v(" - logisches UND. "),t("code",[e._v("(val1)(val2) => (valueToBool(val1) && valueToBool(val2))")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdOr")]),e._v(" - logisches ODER. "),t("code",[e._v("(val1)(val2) => (valueToBool(val1) || valueToBool(val2))")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdEqual")]),e._v(" - Gleichheitsvergleich, bool wird zurückgegeben. "),t("code",[e._v("(val1)(val2) => (val1 == val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdNotEq")]),e._v(" - Ungleichheitsvergleich, bool wird zurückgegeben. "),t("code",[e._v("(val1)(val2) => (val1 != val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdLess")]),e._v(" - Kleiner-als-Vergleich, bool wird zurückgegeben. "),t("code",[e._v("(val1)(val2) => (val1 (val1 >= val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdGreat")]),e._v(" - Größer-als-Vergleich, bool wird zurückgegeben. "),t("code",[e._v("(val1)(val2) => (val1> val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdNotGreat")]),e._v(" - Kleiner-gleich-Vergleich, bool wird zurückgegeben. "),t("code",[e._v("(val1)(val2) => (val1 <= val2)")]),e._v(".")])]),e._v(" "),t("h3",{attrs:{id:"laufzeitstruktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#laufzeitstruktur"}},[e._v("#")]),e._v(" Laufzeitstruktur")]),e._v(" "),t("p",[e._v("Die Ausführung von Bytecodes wirkt sich nicht auf die virtuelle Maschine aus. Beispielsweise können verschiedene Funktionen und Verträge gleichzeitig in einer einzigen virtuellen Maschine ausgeführt werden. Die Runtime-Struktur wird verwendet, um Funktionen und Verträge sowie beliebige Ausdrücke und Bytecode auszuführen.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type RunTime struct {\n stack []interface{}\n blocks []*blockStack\n vars []interface{}\n extend *map[string]interface{}\n vm *VM\n cost int64\n err error\n}\n")])])]),t("ul",[t("li",[t("strong",[e._v("stack")]),e._v(" - der Stack zum Ausführen des Bytecodes;")]),e._v(" "),t("li",[t("strong",[e._v("blocks")]),e._v(" - Stack für Blockaufrufe;")]),e._v(" "),t("li",[t("strong",[e._v("vars")]),e._v(" - Stapel von Variablen. Seine Variable wird dem Stapel von Variablen hinzugefügt, wenn der Bytecode im Block aufgerufen wird. Nach dem Verlassen des Blocks kehrt die Größe des Variablenstapels zum vorherigen Wert zurück;")]),e._v(" "),t("li",[t("strong",[e._v("extend")]),e._v(" - ein Zeiger zum Abbilden mit Werten externer Variablen ("),t("code",[e._v("$name")]),e._v(");")]),e._v(" "),t("li",[t("strong",[e._v("vm")]),e._v(" - ein Zeiger einer virtuellen Maschine;")]),e._v(" "),t("li",[t("strong",[e._v("cost")]),e._v(" - Kraftstoffeinheit der resultierenden Ausführungskosten;")]),e._v(" "),t("li",[t("strong",[e._v("err")]),e._v(" - Fehler während der Ausführung aufgetreten.")])]),e._v(" "),t("h4",{attrs:{id:"blockstack-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#blockstack-struktur"}},[e._v("#")]),e._v(" blockStack-Struktur")]),e._v(" "),t("p",[e._v("Die blockStack-Struktur wird in der Runtime-Struktur verwendet.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type blockStack struct {\n Block *Block\n Offset int\n}\n")])])]),t("ul",[t("li",[t("strong",[e._v("Block")]),e._v(" – ein Zeiger auf den ausgeführten Block;")]),e._v(" "),t("li",[t("strong",[e._v("Offset")]),e._v(" – der Offset des letzten ausgeführten Befehls im Bytecode des angegebenen Blocks.")])]),e._v(" "),t("h3",{attrs:{id:"runcode-funktion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#runcode-funktion"}},[e._v("#")]),e._v(" RunCode-Funktion")]),e._v(" "),t("p",[e._v("Bytecodes werden in der Funktion "),t("strong",[e._v("RunCode")]),e._v(" ausgeführt. Es enthält eine Schleife, die die entsprechende Operation für jeden Bytecode-Befehl durchführt. Vor der Verarbeitung eines Bytecodes müssen die erforderlichen Daten initialisiert werden.")]),e._v(" "),t("p",[e._v("Neue Blöcke werden zu anderen Blöcken hinzugefügt.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("rt.blocks = append(rt.blocks, &blockStack{block, len(rt.vars)})\n")])])]),t("p",[e._v("Rufen Sie als Nächstes die Informationen zu den relevanten Parametern der Tail-Funktion ab. Diese Parameter sind im letzten Element des Stapels enthalten.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var namemap map[string][]interface{}\nif block.Type == ObjFunc && block.Info.(*FuncInfo).Names != nil {\n if rt.stack[len(rt.stack)-1] != nil {\n namemap = rt.stack[len(rt.stack)-1].(map[string][]interface{})\n }\n rt.stack = rt.stack[:len(rt.stack)-1]\n}\n")])])]),t("p",[e._v("Anschließend müssen alle im aktuellen Block definierten Variablen mit ihren Anfangswerten initialisiert werden.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("start := len(rt.stack)\nvaroff := len(rt.vars)\nfor vkey, vpar := range block.Vars {\n rt.cost--\n var value interface{}\n")])])]),t("p",[e._v("Da Variablen in der Funktion auch Variablen sind, müssen wir sie vom letzten Element des Stacks in der von der Funktion selbst beschriebenen Reihenfolge abrufen.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" if block.Type == ObjFunc && vkey = len(params.Params)-1 {\n")])])]),t("p",[e._v("Wenn übergebene variable Parameter zu einer variablen Anzahl von Parametern gehören, werden diese Parameter zu einem Array von Variablen kombiniert.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" off := varoff + params.Offset[len(params.Params)-1]\n rt.vars[off] = append(rt.vars[off].([]interface{}), value)\n } else {\n rt.vars[varoff+params.Offset[i]] = value\n }\n }\n }\n}\n")])])]),t("p",[e._v("Danach müssen wir nur noch Werte löschen, die von der Spitze des Stacks als Funktionsparameter übergeben wurden, wodurch der Stack verschoben wird. Wir haben ihre Werte in ein Variablenarray kopiert.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("if block.Type == ObjFunc {\n start -= len(block.Info.(*FuncInfo).Params)\n}\n")])])]),t("p",[e._v("Wenn eine Bytecode-Befehlsschleife beendet ist, müssen wir den Stack korrekt leeren.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("last := rt.blocks[len(rt.blocks)-1]\n")])])]),t("p",[e._v("Löschen Sie den aktuellen Block aus dem Blockstapel.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("rt.blocks = rt.blocks[:len(rt.blocks)-1]\nif status == statusReturn {\n")])])]),t("p",[e._v("Wenn eine bereits ausgeführte Funktion erfolgreich beendet wird, fügen wir den Rückgabewert am Ende des vorherigen Stacks hinzu.```\nif last.Block.Type == ObjFunc {\nfor count := len(last.Block.Info.(*FuncInfo).Results); count > 0; count-- {\nrt.stack[start] = rt.stack[len(rt.stack)-count]\nstart++\n}\nstatus = statusNormal\n} else {")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Wie Sie sehen können, stellen wir den Stack-Status nicht wieder her und beenden die Funktion unverändert, wenn wir die Funktion nicht ausführen. Der Grund ist, dass Schleifen und bedingte Strukturen, die in der Funktion ausgeführt wurden, ebenfalls Bytecode-Blöcke sind.\n")])])]),t("p",[e._v("return")]),e._v(" "),t("p",[e._v("}\n}")]),e._v(" "),t("p",[e._v("rt.stack = rt.stack[:start]")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n### Weitere Funktionen für Operationen mit VM\n\nMit der Funktion **NewVM** können Sie eine virtuelle Maschine erstellen. Jeder virtuellen Maschine werden über die Funktion **Extend** vier Funktionen hinzugefügt, z. B. **ExecContract**, **MemoryUsage**, **CallContract** und **Settings**.\n\n")])])]),t("p",[e._v("for key, item := range ext.Objects {\nfobj := reflect.ValueOf(item).Type()")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\nWir durchlaufen alle übergebenen Objekte und betrachten nur die Funktionen.\n\n")])])]),t("p",[e._v("switch fobj.Kind() {\ncase reflect.Func:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\nWir füllen die **ExtFuncInfo**-Struktur gemäß den über die Funktion erhaltenen Informationen und fügen ihre Struktur namentlich der Top-Level-Map **Objects** hinzu.\n\n")])])]),t("p",[e._v("data := ExtFuncInfo{key, make([]reflect.Type, fobj.NumIn()), make([]reflect.Type, fobj.NumOut()),\nmake([]string, fobj.NumIn()), fobj.IsVariadic(), item}\nfor i := 0; i 0 && ((*lexems)[i-1].Type == isComma || (*lexems)[i-1].Type == lexOper) {\ncontinue main\n}\nfor k := len(buffer) - 1; k >= 0; k-- {\nif buffer[k].Cmd == cmdSys {\ncontinue main\n}\n}\nbreak main")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Im Allgemeinen entspricht der Algorithmus selbst einem Algorithmus zum Umwandeln in die inverse polnische Notation. Unter Berücksichtigung des Aufrufs notwendiger Verträge, Funktionen und Indizes sowie anderer Dinge, die beim Parsing nicht vorkommen, und Optionen zum Parsing von Token vom Typ lexIdent werden dann Variablen, Funktionen oder Verträge mit diesem Namen überprüft. Wenn nichts gefunden wird und es sich nicht um einen Funktions- oder Vertragsaufruf handelt, wird ein Fehler angezeigt.\n\n")])])]),t("p",[e._v("objInfo, tobj := vm.findObj(lexem.Value.(string), block)\nif objInfo == nil && (!vm.Extern || i> *ind || i >= len(*lexems)-2 || (*lexems)[i+1].Type != isLPar) {\nreturn fmt.Errorf("),t("code",[e._v("unknown identifier %s")]),e._v(", lexem.Value.(string))\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\nWir können auf eine solche Situation stoßen, und der Vertragsaufruf wird später beschrieben. Wenn in diesem Beispiel keine Funktionen oder Variablen mit demselben Namen gefunden werden, halten wir es für notwendig, einen Vertrag aufzurufen. In dieser kompilierten Sprache gibt es keinen Unterschied zwischen Verträgen und Funktionsaufrufen. Aber wir müssen den Vertrag über die Funktion **ExecContract** aufrufen, die im Bytecode verwendet wird.\n")])])]),t("p",[e._v("if objInfo.Type == ObjContract {\nif objInfo.Value != nil {\nobjContract = objInfo.Value.(*Block)\n}\nobjInfo, tobj = vm.findObj("),t("code",[e._v("ExecContract")]),e._v(", block)\nisContract = true\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Die Anzahl der bisherigen Variablen erfassen wir in `count`, die zusammen mit der Anzahl der Funktionsparameter auch auf den Stack geschrieben werden. Bei jeder weiteren Erkennung von Parametern müssen wir diese Zahl nur am letzten Element des Stapels um eine Einheit erhöhen.\n\n\n")])])]),t("p",[e._v("count := 0\nif (*lexems)[i+2].Type != isRPar {\ncount++\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Wir haben eine Liste mit aufgerufenen Parametern für Verträge verwendet, dann müssen wir den Fall markieren, in dem der Vertrag aufgerufen wird. Wenn der Vertrag ohne Parameter aufgerufen wird, müssen wir zwei leere Parameter hinzufügen, um **ExecContract** aufzurufen, um mindestens zwei Parameter zu erhalten.\n")])])]),t("p",[e._v('if isContract {\nname := StateName((*block)[0].Info.(uint32), lexem.Value.(string))\nfor j := len(*block) - 1; j >= 0; j-- {\ntopblock := (*block)[j]\nif topblock.Type == ObjContract {\nif topblock.Info.(*ContractInfo).Used == nil {\ntopblock.Info.(*ContractInfo).Used = make(map[string]bool)\n}\ntopblock.Info.(*ContractInfo).Used[name] = true\n}\n}\nbytecode = append(bytecode, &ByteCode{cmdPush, name})\nif count == 0 {\ncount = 2\nbytecode = append(bytecode, &ByteCode{cmdPush, ""})\nbytecode = append(bytecode, &ByteCode{cmdPush, ""})\n}\ncount++\n}')]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\nWenn wir sehen, dass als nächstes eine eckige Klammer steht, fügen wir den Befehl **cmdIndex** hinzu, um den Wert durch den Index zu erhalten.\n")])])]),t("p",[e._v("if (*lexems)[i+1].Type == isLBrack {\nif objInfo == nil || objInfo.Type != ObjVar {\nreturn fmt.Errorf("),t("code",[e._v("unknown variable %s")]),e._v(", lexem.Value.(string))\n}\nbuffer = append(buffer, &ByteCode{cmdIndex, 0})\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Die Funktion **CompileBlock** kann Objektbäume und ausdrucksunabhängige Bytecodes generieren. Der Kompilierungsprozess basiert auf einer endlichen Zustandsmaschine, genau wie ein lexikalischer Analysator, aber mit den folgenden Unterschieden. Erstens verwenden wir keine Symbole, sondern Tokens; zweitens werden wir gleich die *states*-Variablen in allen Zuständen und Übergängen beschreiben. Es stellt ein Array von Objekten dar, die nach Tokentyp indiziert sind. Jedes Token hat eine Struktur von *compileState*, und ein neuer Status wird in *NewState* angegeben. Wenn klar ist, welche Struktur wir aufgelöst haben, können wir die Funktion des Handlers im Feld *Func* angeben.\n\nBetrachten wir den Hauptzustand als Beispiel.\n\nWenn wir auf einen Zeilenumbruch oder einen Kommentar stoßen, bleiben wir im selben Zustand. Wenn wir auf das Schlüsselwort **contract** stoßen, ändern wir den Status in *stateContract* und beginnen mit dem Parsen der Struktur. Wenn wir auf das Schlüsselwort **func** stoßen, ändern wir den Status in *stateFunc*. Wenn andere Token empfangen werden, wird die Funktion, die einen Fehler generiert, aufgerufen.\n\n")])])]),t("p",[e._v("{// stateRoot\nlexNewLine: {stateRoot, 0},\nlexKeyword | (keyContract << 8): {stateContract | statePush, 0},\nlexKeyword | (keyFunc << 8): {stateFunc | statePush, 0},\nlexComment: {stateRoot, 0},\n0: {errUnknownCmd, cfError},\n},")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Angenommen, wir sind auf das Schlüsselwort **func** gestoßen und haben den Status in *stateFunc* geändert. Da der Funktionsname auf das Schlüsselwort **func** folgen muss, behalten wir denselben Zustand bei, wenn wir den Funktionsnamen ändern. Für alle anderen Token werden wir entsprechende Fehler generieren. Wenn wir den Funktionsnamen in der Token-ID erhalten, gehen wir zum *stateFParams*-Zustand, wo wir die Parameter der Funktion erhalten können.\n")])])]),t("p",[e._v("{// stateFunc\nlexNewLine: {stateFunc, 0},\nlexIdent: {stateFParams, cfNameBlock},\n0: {errMustName, cfError},\n},")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Gleichzeitig mit den obigen Operationen rufen wir die Funktion **fNameBlock** auf. Es sollte beachtet werden, dass die Blockstruktur mit der statePush-Markierung erstellt wird, wo wir sie aus dem Puffer holen und mit den Daten füllen, die wir benötigen. Die **fNameBlock**-Funktion eignet sich für Verträge und Funktionen (einschließlich der darin verschachtelten). Er füllt das *Info*-Feld mit der entsprechenden Struktur und schreibt sich in die *Objects* des übergeordneten Blocks. Auf diese Weise können wir die Funktion oder den Vertrag mit dem angegebenen Namen aufrufen. Ebenso erstellen wir entsprechende Funktionen für alle Zustände und Variablen. Diese Funktionen sind normalerweise sehr klein und führen einige Aufgaben beim Erstellen des Baums der virtuellen Maschine aus.\n")])])]),t("p",[e._v("func fNameBlock(buf *[]*Block, state int, lexem *Lexem) error {\nvar itype int\nprev := (*buf)[len(*buf)-2]\nfblock := (*buf)[len(*buf)-1]\nname := lexem.Value.(string)\nswitch state {\ncase stateBlock:\nitype = ObjContract\nname = StateName((*buf)[0].Info.(uint32), name)\nfblock.Info = &ContractInfo{ID: uint32(len(prev.Children) - 1), Name: name,\nOwner: (*buf)[0].Owner}\ndefault:\nitype = ObjFunc\nfblock.Info = &FuncInfo{}\n}\nfblock.Type = itype\nprev.Objects[name] = &ObjInfo{Type: itype, Value: fblock}\nreturn nil\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Für die Funktion **CompileBlock** durchläuft sie einfach alle Tokens und wechselt die Zustände gemäß den in den Zuständen beschriebenen Tokens. Fast alle zusätzlichen Token entsprechen zusätzlichen Programmcodes.\n\n* **statePush** – fügt das Objekt **Block** zum Objektbaum hinzu;\n* **statePop** - wird verwendet, wenn der Block mit einer schließenden geschweiften Klammer endet;\n* **stateStay** - Sie müssen die aktuelle Markierung beibehalten, wenn Sie in einen neuen Status wechseln;\n* **stateToBlock** - Übergang in den Zustand **stateBlock** zur Verarbeitung von *while* und *if*. Nach der Verarbeitung von Ausdrücken müssen Sie Blöcke innerhalb der geschweiften Klammern verarbeiten;\n* **stateToBody** - Übergang in den Zustand **stateBody**;\n* **stateFork** - speichert die markierte Position. Wenn der Ausdruck mit einem Bezeichner oder einem Namen mit `$` beginnt, können wir Funktionsaufrufe oder Zuweisungen vornehmen;\n* **stateToFork** – wird verwendet, um das in **stateFork** gespeicherte Token abzurufen, das an die Prozessfunktion übergeben wird;\n* **stateLabel** – wird zum Einfügen von **cmdLabel**-Befehlen verwendet. *während* die Struktur dieses Flag erfordert;\n* **stateMustEval** – prüft die Verfügbarkeit von bedingten Ausdrücken am Anfang von *if*- und *while*-Strukturen.\n\nNeben der Funktion **CompileBlock** ist auch die Funktion **FlushBlock** zu nennen. Das Problem besteht jedoch darin, dass der Blockbaum unabhängig von vorhandenen virtuellen Maschinen erstellt wird. Genauer gesagt erhalten wir Informationen über Funktionen und Verträge, die in einer virtuellen Maschine vorhanden sind, aber wir sammeln die kompilierten Blöcke in einem separaten Baum. Andernfalls, wenn während der Kompilierung ein Fehler auftritt, müssen wir die virtuelle Maschine auf den vorherigen Zustand zurücksetzen. Daher gehen wir separat zum Kompilierungsbaum, aber nachdem die Kompilierung erfolgreich ist, muss die Funktion **FlushContract** aufgerufen werden. Diese Funktion fügt den fertigen Blockbaum zur aktuellen virtuellen Maschine hinzu. Die Kompilierungsphase ist nun abgeschlossen.\n\n## Lexikalischer Analysator\nDer lexikalische Analysator verarbeitet eingehende Zeichenfolgen und bildet eine Folge von Token der folgenden Typen:\n* **lexSys** - Systemtoken, zum Beispiel: `{}, [], (), ,, .` usw.;\n* **lexOper** - Vorgangstoken, zum Beispiel: `+, -, /, \\, *`;\n* **lexNumber** - Zahl;\n* **lexident** - Kennung;\n* **lexNewline** - Zeilenumbruchzeichen;\n* **lexString** - Zeichenkette;\n* **lexComment** - Kommentar;\n* **lexKeyword** - Schlüsselwort;\n* **lexType** - Typ;\n* **lexExtend** - Verweis auf externe Variablen oder Funktionen, zum Beispiel: `$myname`.\n\nIn der aktuellen Version wird zunächst mit Hilfe der Datei [script/lextable/lextable.go](#lextablelextablego) eine Konvertierungstabelle (finite state machine) zum Parsen der Tokens aufgebaut, die in die Datei lex_table.go geschrieben wird. Im Allgemeinen können Sie die ursprünglich von der Datei generierte Konvertierungstabelle loswerden und direkt beim Start eine Konvertierungstabelle im Speicher erstellen (`init()`). Die lexikalische Analyse selbst findet in der lexParser-Funktion in der Datei [lex.go](#lex-go) statt.\n\n### lextable/lextable.go\n\nHier definieren wir das zu betreibende Alphabet und beschreiben, wie die endliche Zustandsmaschine basierend auf dem nächsten empfangenen Symbol von einem Zustand in einen anderen wechselt.\n\n*states* ist ein JSON-Objekt, das eine Liste von Zuständen enthält.\nMit Ausnahme bestimmter Symbole steht „d“ für alle Symbole, die nicht im Staat angegeben sind.\n„n“ steht für 0x0a, „s“ steht für Leerzeichen, „q“ steht für Backquote, „Q“ steht für doppeltes Anführungszeichen, „r“ steht für Zeichen >= 128, „a“ steht für AZ und az und „ 1` steht für 1-9.\n\nDie Namen dieser Zustände sind Schlüssel, und die möglichen Werte sind im Wertobjekt aufgelistet. Dann gibt es einen neuen Zustand, um Übergänge für jede Gruppe vorzunehmen. Dann gibt es noch den Namen des Tokens. Wenn wir zum Anfangszustand zurückkehren müssen, ist der dritte Parameter das Service-Token, das angibt, wie mit dem aktuellen Symbol umgegangen werden soll.\n\nZum Beispiel haben wir den Hauptzustand und die eingehenden Zeichen `/`, `"/": ["solidus", "", "push next"]`,\n\n* **push** - gibt den Befehl, sich daran zu erinnern, dass es sich in einem separaten Stack befindet ;\n* **nächster** - geht zum nächsten Zeichen, und gleichzeitig ändern wir den Status auf **solidus**. Ruft danach das nächste Zeichen ab und überprüft den Status von **solidus**.\n\nWenn das nächste Zeichen `/` oder `/*` hat, gehen wir zum Kommentarstatus **Kommentar**, weil sie mit `//` oder `/*` beginnen. Offensichtlich hat jeder Kommentar danach einen anderen Zustand, weil sie mit einem anderen Symbol enden.\n\nWenn das nächste Zeichen nicht `/` und `*` ist, dann zeichnen wir alles im Stack als Tags vom Typ **lexOper** auf, leeren den Stack und kehren zum Hauptzustand zurück.\nDas folgende Modul konvertiert den Zustandsbaum in ein numerisches Array und schreibt es in die Datei *lex_table.go*.\n\nIn der ersten Schleife:\n\nWir bilden ein Alphabet gültiger Symbole.\n\n')])])]),t("p",[e._v("for ind, ch := range alphabet {\ni := byte(ind)")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Darüber hinaus versehen wir in **state2int** jeden Zustand mit einer eigenen Sequenzkennung.\n\n")])])]),t("p",[e._v("state2int := map[string]uint{"),t("code",[e._v("main")]),e._v(": 0}\nif err := json.Unmarshal([]byte(states), &data); err == nil {\nfor key := range data {\nif key != "),t("code",[e._v("main")]),e._v(" {\nstate2int[key] = uint(len(state2int))")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Wenn wir alle Zustände und jede Menge in einem Zustand und jedes Symbol in einer Menge durchlaufen, schreiben wir eine Drei-Byte-Zahl [neue Zustandskennung (0 = Haupt)] + [Tokentyp (0-kein Token)] + [Token] .\nDie Zweidimensionalität des Arrays *table* besteht darin, dass es in Zustände und 34 Eingabesymbole aus dem Array *alphabet* unterteilt ist, die in derselben Reihenfolge angeordnet sind.\nWir befinden uns im *Hauptzustand* in der Nullzeile der *Tabelle*. Nehmen Sie das erste Zeichen, finden Sie seinen Index im Array *alphabet* und erhalten Sie den Wert aus der Spalte mit dem angegebenen Index. Ausgehend vom empfangenen Wert erhalten wir den Token im Low-Byte. Wenn die Analyse abgeschlossen ist, zeigt das zweite Byte den Typ des empfangenen Tokens an. Im dritten Byte erhalten wir den Index des nächsten neuen Zustands.\nAll dies wird ausführlicher in der Funktion **lexParser** in *lex.go* beschrieben.\nWenn Sie einige neue Zeichen hinzufügen möchten, müssen Sie sie dem Array *alphabet* hinzufügen und die Menge der Konstante *AlphaSize* erhöhen. Wenn Sie eine neue Symbolkombination hinzufügen möchten, sollte diese ähnlich wie bei den bestehenden Optionen im Status beschrieben werden. Führen Sie nach dem obigen Vorgang die Datei *lextable.go* aus, um die Datei *lex_table.go* zu aktualisieren.\n\n### lex.go\nDie **lexParser**-Funktion generiert direkt eine lexikalische Analyse und gibt basierend auf eingehenden Zeichenfolgen ein Array empfangener Tags zurück. Lassen Sie uns die Struktur von Token analysieren.\n\n')])])]),t("p",[e._v("type Lexem struct {\nType uint32 // Type of the lexem\nValue interface{} // Value of lexem\nLine uint32 // Line of the lexem\nColumn uint32 // Position inside the line\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('* **Typ** - Token-Typ. Es hat einen der folgenden Werte: `lexSys, lexOper, lexNumber, lexIdent, lexString, lexComment, lexKeyword, lexType, lexExtend`;\n* **value** – Wert des Tokens. Die Art des Werts hängt vom Token-Typ ab. Lassen Sie uns das genauer analysieren:\n * **lexSys** - enthält Klammern, Kommas usw. In diesem Fall `Type = ch << 8 | lexSys“, beziehen Sie sich bitte auf die Konstante „isLPar ... isRBrack“, und ihr Wert ist uint32 Bits;\n * **lexOper** - der Wert stellt eine äquivalente Zeichenfolge in Form von uint32 dar. Siehe die `isNot ... isOr`-Konstanten;\n * **lexNumber** - Zahlen werden als int64 oder float64 gespeichert. Wenn die Zahl einen Dezimalpunkt hat, ist sie Float64;\n * **lexIdent** - Identifikatoren werden als String gespeichert;\n * **lexNewLine** - Zeilenumbruchzeichen. Wird auch zur Berechnung der Reihen- und Tokenposition verwendet;\n * **lexString** - Zeilen werden als String gespeichert;\n * **lexComment** - Kommentare werden als String gespeichert;\n * **lexKeyword** - für Schlüsselwörter werden nur die entsprechenden Indizes gespeichert, siehe `keyContract ... keyTail`-Konstante. In diesem Fall `Type = KeyID << 8 | lexKeyword`. Außerdem ist zu beachten, dass die Schlüsselwörter „true, false, nil“ sofort in Token vom Typ „lexNumber“ umgewandelt und die entsprechenden Typen „bool“ und „interface {}“ verwendet werden;\n * **lexType** – dieser Wert enthält den entsprechenden „reflect.Type“-Typwert;\n * **lexExtend** – Bezeichner, die mit einem `$` beginnen. Diese Variablen und Funktionen werden von außen übergeben und sind daher speziellen Arten von Token zugeordnet. Dieser Wert enthält den Namen als String ohne $ am Anfang.\n* **Line** - die Zeile, in der das Token gefunden wird;\n* **Column** - Inline-Position des Tokens.\nLassen Sie uns die Funktion **lexParser** im Detail analysieren. Die **todo**-Funktion schlägt den Symbolindex im Alphabet basierend auf dem aktuellen Status und dem eingehenden Symbol nach und erhält einen neuen Status, Token-Identifikator (falls vorhanden) und andere Token aus der Umwandlungstabelle. Das Parsing selbst beinhaltet das Aufrufen der **todo**-Funktion der Reihe nach für jedes nächste Zeichen und das Wechseln in einen neuen Zustand. Sobald das Tag empfangen wurde, erstellen wir das entsprechende Token in den Ausgabekriterien und setzen den Parsing-Prozess fort. Es sollte beachtet werden, dass wir während des Parsing-Prozesses die Token-Symbole nicht in einem separaten Stack oder Array akkumulieren, weil wir nur den Offset des Starts des Tokens speichern. Nachdem wir das Token erhalten haben, verschieben wir den Offset des nächsten Tokens an die aktuelle Parsing-Position.\n\nEs bleibt nur noch, die beim Parsing verwendeten lexikalischen Status-Token zu überprüfen:\n* **lexfPush** - dieses Token bedeutet, dass wir beginnen, Symbole in einem neuen Token zu sammeln;\n* **lexfNext** - das Zeichen muss dem aktuellen Token hinzugefügt werden;\n* **lexfPop** - Der Empfang des Tokens ist abgeschlossen. Normalerweise haben wir mit diesem Flag den Bezeichnertyp des geparsten Tokens;\n* **lexfSkip** - Dieses Token wird verwendet, um Zeichen vom Parsen auszuschließen. Beispielsweise sind die Kontrollschrägstriche in der Zeichenfolge \\n \\r \\". Sie werden während der lexikalischen Analysephase automatisch ersetzt.\n\n## Needle Sprache\n### Lexemes\nDer Quellcode eines Programms muss in UTF-8-Kodierung vorliegen.\n\nDie folgenden lexikalischen Typen werden verarbeitet:\n\n* **Schlüsselwörter** - ```action, break, conditions, Continue, Contract, data, else, error, false, func, If, info, nil, return, settings, true, var, warning, while``` ;\n* **Zahl** - nur Dezimalzahlen werden akzeptiert. Es gibt zwei Grundtypen: **int** und **float**. Wenn die Zahl einen Dezimalpunkt hat, wird sie zu einem Float **float**. Der Typ **int** entspricht in Golang **int64**, während der Typ **float** in Golang **float64** entspricht.\n* **String** - Der String kann in doppelte Anführungszeichen ```("ein String")``` oder Backquotes ```(\\`ein String\\`)``` eingeschlossen werden. Beide Arten von Zeichenfolgen können Zeilenumbruchzeichen enthalten. Zeichenfolgen in doppelten Anführungszeichen können doppelte Anführungszeichen, Zeilenumbruchzeichen und mit Schrägstrichen maskierte Wagenrückläufe enthalten. Beispiel: ```"Dies ist eine \\"erste Zeichenfolge\\".\\r\\nDies ist eine zweite Zeichenfolge."```.\n* **Kommentar** - Es gibt zwei Arten von Kommentaren. Einzeilige Kommentare verwenden zwei Schrägstriche (//). Beispiel: // Dies ist ein einzeiliger Kommentar. Mehrzeilige Kommentare verwenden Schrägstriche und Sternchen und können sich über mehrere Zeilen erstrecken. Beispiel: ```/* Dies ist ein mehrzeiliger Kommentar */```.\n* **Bezeichner** - die Namen von Variablen und Funktionen, die aus Buchstaben a-z und A-Z, UTF-8-Symbolen, Zahlen und Unterstrichen bestehen. Der Name kann mit einem Buchstaben, Unterstrich, ```@``` oder ```$``` beginnen. Der Name, der mit ```$``` beginnt, ist der Name der Variablen, die im **Datenabschnitt** definiert ist. Der mit ```$``` beginnende Name kann auch verwendet werden, um globale Variablen im Bereich von **Bedingungen** und **Aktionsabschnitten** zu definieren. Ökosystemverträge können über das Symbol ```@``` aufgerufen werden. Zum Beispiel: ```@1NewTable(...)```.\n\n### Typen\n\nNeben den Nadeltypen sind entsprechende Golang-Typen angegeben.\n* **bool** - bool, standardmäßig **false**;\n* **bytes** - []byte{}, standardmäßig ein leeres Byte-Array;\n* **int** - standardmäßig int64, **0**;\n* **Address** - uint64, standardmäßig **0**;\n* **Array** - []interface{}, standardmäßig ein leeres Array;\n* **map** - map[string]interface{}, standardmäßig ein leeres Objekt-Array;\n* **money** - Dezimalzahl. Dezimal, standardmäßig **0**;\n* **float** - float64, standardmäßig **0**;\n* **String** - String, standardmäßig ein leerer String;\n* **file** - map[string]interface{}, standardmäßig ein leeres Objekt-Array.\nDiese Variablentypen werden mit dem Schlüsselwort ```var``` definiert. Beispiel: ```var var1, var2 int```. Bei dieser Definition wird einer Variablen ein Standardwert nach Typ zugewiesen.\n\nAlle Variablenwerte sind vom Typ interface{} und werden dann den erforderlichen Golang-Typen zugewiesen. Daher sind beispielsweise Array- und Map-Typen Golang-Typen []interface{} und map[string]interface{}. Beide Arten von Arrays können Elemente beliebigen Typs enthalten.\n\n### Ausdrücke\n\nEin Ausdruck kann arithmetische Operationen, logische Operationen und Funktionsaufrufe enthalten. Alle Ausdrücke werden von links nach rechts nach Priorität der Operatoren ausgewertet. Bei gleicher Priorität werden Operatoren von links nach rechts ausgewertet.\n\nPriorität der Operationen von hoch nach niedrig:\n* **Funktionsaufruf und Klammern** - Beim Aufruf einer Funktion werden übergebene Parameter von links nach rechts berechnet;\n* **Unäre Operation** - logische Negation ```!``` und arithmetischer Vorzeichenwechsel ```-```;\n* **Multiplikation und Division** - arithmetische Multiplikation ```*``` und Division ```/```;\n* **Addition und Subtraktion** - arithmetische Addition ```+``` und Subtraktion ```-```;\n* **Logischer Vergleich** - ```>=>> >=```;\n* **Logische Gleichheit und Ungleichheit** - ```== !=```;\n* **Logisches UND** - ```&&```;\n* **Logisches ODER** - ```||```.\n\nBei der Auswertung von logischem AND und OR werden in jedem Fall beide Seiten des Ausdrucks ausgewertet.\n\nNeedle hat keine Typprüfung während der Kompilierung. Beim Auswerten von Operanden wird versucht, den Typ in einen komplexeren Typ umzuwandeln. Die Art der Komplexitätsreihenfolge kann wie folgt sein: ```string, int, float, money```. Nur ein Teil der Typkonvertierungen ist implementiert. Der Zeichenfolgentyp unterstützt Additionsoperationen, und das Ergebnis ist eine Zeichenfolgenverkettung. Beispiel: ```string + string = string, money-int = money, int * float = float```.\n\nBei Funktionen wird während der Ausführung eine Typprüfung für die Typen ```string``` und ```int``` durchgeführt.\nDie Typen **array** und **map** können per Index adressiert werden. Beim Typ **array** muss als Index der Wert **int** angegeben werden. Für den Typ **Map** muss eine Variable oder ein **String**-Wert angegeben werden. Wenn Sie einem **Array**-Element einen Wert zuweisen, dessen Index größer als der aktuelle maximale Index ist, wird dem Array ein leeres Element hinzugefügt. Der Anfangswert dieser Elemente ist **nil**. Zum Beispiel: .. Code:\n')])])]),t("p",[e._v('var my array\nmy[5] = 0\nvar mymap map\nmymap["index"] = my[3]')]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("In Ausdrücken mit bedingten logischen Werten (z. B. `if, while, &&, ||, !`) wird der Typ automatisch in einen logischen Wert konvertiert. Wenn der Typ nicht der Standardwert ist, ist er wahr.\n")])])]),t("p",[e._v("var mymap map\nvar val string\nif mymap && val {\n...\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("### Zielfernrohr\n\nKlammern geben einen Block an, der lokale Bereichsvariablen enthalten kann. Standardmäßig erstreckt sich der Geltungsbereich einer Variablen auf ihre eigenen Blöcke und alle verschachtelten Blöcke. In einem Block können Sie eine neue Variable mit dem Namen einer vorhandenen Variablen definieren. In diesem Fall sind jedoch externe Variablen mit demselben Namen nicht mehr verfügbar.\n")])])]),t("p",[e._v("var a int\na = 3\n{\nvar a int\na = 4\nPrintln(a) // 4\n}\nPrintln(a) // 3")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('### Vertragsabwicklung\n\nBeim Aufruf eines Contracts müssen ihm in **data** definierte Parameter übergeben werden. Vor Ausführung eines Auftrags erhält die virtuelle Maschine diese Parameter und weist sie den entsprechenden Variablen ($Param) zu. Dann werden die vordefinierten Funktionen **conditions** und **action** aufgerufen.\n\nFehler, die während der Vertragsausführung auftreten, können in zwei Arten unterteilt werden: Formularfehler und Umgebungsfehler. Formularfehler werden mit speziellen Befehlen generiert: `error, warning, info` und wenn die eingebaute Funktion `err` ungleich *nil* zurückgibt.\n\nDie Needle-Sprache behandelt keine Ausnahmen. Jeder Fehler wird die Ausführung von Verträgen beenden. Da ein separater Stack und eine separate Struktur zum Speichern von Variablenwerten erstellt werden, wenn ein Vertrag ausgeführt wird, löscht der Golang-Garbage-Collection-Mechanismus diese Daten automatisch, wenn ein Vertrag ausgeführt wird.\n\n### Backus–Naur Form (BNF)\nIn der Informatik ist BNF eine Notationstechnik für kontextfreie Syntax und wird normalerweise verwendet, um die Syntax der beim Rechnen verwendeten Sprache zu beschreiben.\n\n* <decimal digit>\n')])])]),t("p",[e._v("'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <decimal number>\n")])])]),t("p",[t("decimal",{attrs:{digit:""}},[e._v(" {"),t("decimal",{attrs:{digit:""}},[e._v("}")])],1)],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <symbol code>\n")])])]),t("p",[e._v("'''"),t("any",{attrs:{symbol:""}},[e._v("'''")])],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <real number>\n")])])]),t("p",[e._v("['-'] ' |'[' |'\\' |']' |'_' |'|' |'}' | '{' | "),t("tabulation",[e._v(" | "),t("space",[e._v(" | "),t("newline")],1)],1)],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <symbol>\n")])])]),t("p",[t("decimal",{attrs:{digit:""}},[e._v(" | "),t("letter",[e._v(" | "),t("special",{attrs:{symbol:""}})],1)],1)],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <name>\n")])])]),t("p",[e._v("("),t("letter",[e._v(" |'"),t("em",[e._v("') {"),t("letter",[e._v(" |'")])],1),e._v("' | "),t("decimal",{attrs:{digit:""}},[e._v("}")])],1)],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <function name>\n")])])]),t("name",[e._v("\n```\n"),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" | |'!' |'#' | ... |'[' |']' | ...\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("{ |'\\\"' |'\\n' |'\\r'}\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'\"' {}'\"' |'\\`' {}'\\`'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'='\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'-'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'==' |'!=' |'>' |'<' |'<=' |'>=' |'&&' |'||' |'\\*' |'/' |'+ '|'-'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" | | \n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" {','}\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'(' []')'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" [{'.' '(' []')'}]\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" {}\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'{''}'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("( | | | | | break | continue | return)\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'if [else ]'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'while '\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'contract '{'[] {} [] []'}''\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'data '{' {} '}''\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" '\"'{}'\"'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'optional | image | file | hidden | text | polymap | map | address | signature:'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'conditions '\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'action '\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'func '('[{','}]')'[{}] [] '\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" {',' } \n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'.''('[{','}]')'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'var {','}'\n")])])])])],1)}),[],!1,null,null,null);n.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{408:function(e,n,t){"use strict";t.r(n);var r=t(51),a=Object(r.a)({},(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"compiler-und-virtuelle-maschine"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#compiler-und-virtuelle-maschine"}},[e._v("#")]),e._v(" Compiler und virtuelle Maschine")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#source-code-storage-and-compilation"}},[e._v("Speicherung und Kompilierung des Quellcodes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#virtual-machine-structures"}},[e._v("Strukturen virtueller Maschinen")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#vm-Struktur"}},[e._v("VM-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Blockstruktur"}},[e._v("Blockstruktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#objinfo-Struktur"}},[e._v("ObjInfo-Struktur")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#contractinfo-Struktur"}},[e._v("ContractInfo-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#fieldinfo-Struktur"}},[e._v("FieldInfo-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#funcinfo-Struktur"}},[e._v("FuncInfo-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Funktionsname-Struktur"}},[e._v("Funktionsname-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#extfuncinfo-Struktur"}},[e._v("ExtFuncInfo-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#varinfo-Struktur"}},[e._v("VarInfo-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#objextend-Wert"}},[e._v("ObjExtend-Wert")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#virtual-machine-commands"}},[e._v("Befehle für virtuelle Maschinen")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Bytecode-Struktur"}},[e._v("ByteCode-Struktur")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Befehlskennungen"}},[e._v("Befehlskennungen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#stack-operation-commands"}},[e._v("Befehle für Stapeloperationen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#runtime-structure"}},[e._v("Laufzeitstruktur")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#blockstack-Struktur"}},[e._v("blockStack-Struktur")])])])]),e._v(" "),t("li",[e._v("[RunCode-Funktion] (#runcode-Funktion)")]),e._v(" "),t("li",[t("a",{attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("Andere Funktionen für Operationen mit VM")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Compiler"}},[e._v("Compiler")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#lexical-analyzer"}},[e._v("Lexikalanalyse")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Nadelsprache"}},[e._v("Nadelsprache")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#lexeme"}},[e._v("Lexeme")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Typen"}},[e._v("Typen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Ausdr%C3%BCcke"}},[e._v("Ausdrücke")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Bereich"}},[e._v("Bereich")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Vertragsausf%C3%BChrung"}},[e._v("Vertragsausführung")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#backus-naur-Form-bnf"}},[e._v("Backus-Naur-Form (BNF)")])])])])]),e._v(" "),t("p",[e._v("Dieser Abschnitt umfasst Programmkompilierung und Needle-Language-Operationen in der virtuellen Maschine (VM).")]),e._v(" "),t("h2",{attrs:{id:"speicherung-und-kompilierung-des-quellcodes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#speicherung-und-kompilierung-des-quellcodes"}},[e._v("#")]),e._v(" Speicherung und Kompilierung des Quellcodes")]),e._v(" "),t("p",[e._v("Verträge und Funktionen werden mit Golang geschrieben und in den Vertragstabellen von Ökosystemen gespeichert.")]),e._v(" "),t("p",[e._v("Wenn ein Vertrag ausgeführt wird, wird sein Quellcode aus der Datenbank gelesen und in Bytecode kompiliert.")]),e._v(" "),t("p",[e._v("Wenn ein Vertrag geändert wird, wird sein Quellcode aktualisiert und in der Datenbank gespeichert. Dann wird der Quellcode kompiliert, wodurch der Bytecode in der entsprechenden virtuellen Maschine aktualisiert wird.")]),e._v(" "),t("p",[e._v("Da Bytecodes nicht physikalisch gespeichert werden, werden sie bei einer erneuten Programmausführung neu kompiliert.")]),e._v(" "),t("p",[e._v("Der gesamte in der Vertragstabelle jedes Ökosystems beschriebene Quellcode wird in einer strengen Reihenfolge in eine virtuelle Maschine kompiliert, und der Status der virtuellen Maschine ist auf allen Knoten gleich.")]),e._v(" "),t("p",[e._v("Beim Vertragsaufruf ändert die virtuelle Maschine ihren Status in keiner Weise. Die Ausführung eines Vertrages oder das Aufrufen einer Funktion erfolgt auf einem separaten laufenden Stack, der während jedes externen Aufrufs erstellt wird.")]),e._v(" "),t("p",[e._v("Jedes Ökosystem kann ein sogenanntes virtuelles Ökosystem haben, das innerhalb eines Knotens in Verbindung mit Tabellen außerhalb der Blockchain verwendet werden kann, ohne direkten Einfluss auf die Blockchain oder andere virtuelle Ökosysteme. In diesem Fall erstellt der Knoten, der ein solches virtuelles Ökosystem hostet, seinen Vertrag und erstellt seine eigene virtuelle Maschine.")]),e._v(" "),t("h2",{attrs:{id:"strukturen-virtueller-maschinen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#strukturen-virtueller-maschinen"}},[e._v("#")]),e._v(" Strukturen virtueller Maschinen")]),e._v(" "),t("h3",{attrs:{id:"vm-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vm-struktur"}},[e._v("#")]),e._v(" VM-Struktur")]),e._v(" "),t("p",[e._v("Eine virtuelle Maschine ist im Arbeitsspeicher als Struktur wie unten organisiert.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type VM struct {\n Block\n ExtCost func(string) int64\n FuncCallsDB map[string]struct{}\n Extern bool\n ShiftContract int64\n logger *log.Entry\n}\n")])])]),t("p",[e._v("Eine VM-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[e._v("Block - enthält eine [Blockstruktur] (#block-structure);")]),e._v(" "),t("li",[e._v("ExtCost - eine Funktion gibt die Kosten für die Ausführung einer externen Golang-Funktion zurück;")]),e._v(" "),t("li",[e._v("FuncCallsDB - eine Sammlung von Golang-Funktionsnamen. Diese Funktion gibt die Ausführungskosten als ersten Parameter zurück. Diese Funktionen verwenden EXPLAIN, um die Kosten der Datenbankverarbeitung zu berechnen;")]),e._v(" "),t("li",[e._v("Extern – ein Boolesches Flag, das angibt, ob ein Vertrag ein externer Vertrag ist. Es wird auf „true“ gesetzt, wenn eine VM erstellt wird. Aufgerufene Verträge werden beim Kompilieren des Codes nicht angezeigt. Mit anderen Worten, es ermöglicht, den in Zukunft festgelegten Vertragscode aufzurufen;")]),e._v(" "),t("li",[e._v("Schichtvertrag – ID des ersten Vertrags in der VM;")]),e._v(" "),t("li",[e._v("logger - Ausgabe des VM-Fehlerprotokolls.")])]),e._v(" "),t("h3",{attrs:{id:"blockstruktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#blockstruktur"}},[e._v("#")]),e._v(" Blockstruktur")]),e._v(" "),t("p",[e._v("Eine virtuelle Maschine ist ein Baum, der aus "),t("strong",[e._v("Blocktyp")]),e._v("-Objekten besteht.")]),e._v(" "),t("p",[e._v("Ein Block ist eine unabhängige Einheit, die einige Bytecodes enthält. Einfach ausgedrückt ist alles, was Sie in der Sprache in die geschweiften Klammern ("),t("code",[e._v("{}")]),e._v(") setzen, ein Block.")]),e._v(" "),t("p",[e._v("Der folgende Code würde beispielsweise einen Block mit Funktionen erstellen. Dieser Block enthält auch einen weiteren Block mit einer if-Anweisung, der wiederum einen Block mit einer while-Anweisung enthält.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("func my() {\n if true {\n while false {\n ...\n }\n }\n}\n")])])]),t("p",[e._v("Der Block ist im Speicher als Struktur wie unten organisiert.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type Block struct {\n Objects map[string]*ObjInfo\n Type int\n Owner *OwnerInfo\n Info interface{}\n Parent *Block\n Vars []reflect.Type\n Code ByteCodes\n Children Blocks\n}\n")])])]),t("p",[e._v("Eine Blockstruktur besteht aus folgenden Elementen:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Objekte")]),e._v(" - eine Abbildung interner Objekte des Zeigertyps "),t("a",{attrs:{href:"#objInfo-Struktur"}},[e._v("ObjInfo")]),e._v(". Wenn der Block beispielsweise eine Variable enthält, können Sie anhand ihres Namens Informationen darüber erhalten.")]),e._v(" "),t("li",[t("strong",[e._v("Typ")]),e._v(" - der Typ des Blocks. Bei einem Funktionsblock ist sein Typ "),t("strong",[e._v("ObjFunc")]),e._v("; für einen Vertragsblock ist sein Typ "),t("strong",[e._v("ObjContract")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("Eigentümer")]),e._v(" – eine Struktur vom Zeigertyp "),t("strong",[e._v("Eigentümerinfo")]),e._v(". Diese Struktur enthält Informationen über den Eigentümer des kompilierten Vertrags, der während der Vertragserstellung angegeben oder aus der Tabelle "),t("strong",[e._v("Verträge")]),e._v(" erhalten wird;")]),e._v(" "),t("li",[t("strong",[e._v("Info")]),e._v(" - enthält Informationen über das Objekt, die vom Blocktyp abhängen;")]),e._v(" "),t("li",[t("strong",[e._v("Parent")]),e._v(" – ein Zeiger auf den Elternblock;")]),e._v(" "),t("li",[t("strong",[e._v("Vars")]),e._v(" - ein Array, das die Typen der aktuellen Blockvariablen enthält;")]),e._v(" "),t("li",[t("strong",[e._v("Code")]),e._v(" - der Bytecode des Blocks selbst, der ausgeführt wird, wenn die Kontrollrechte an den Block übergeben werden, zum Beispiel Funktionsaufrufe oder Schleifenkörper;")]),e._v(" "),t("li",[t("strong",[e._v("Children")]),e._v(" - ein Array mit Unterblöcken, wie z. B. Funktionsverschachtelung, Schleifen, bedingte Operatoren.")])]),e._v(" "),t("h3",{attrs:{id:"objinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#objinfo-struktur"}},[e._v("#")]),e._v(" ObjInfo-Struktur")]),e._v(" "),t("p",[e._v("Die ObjInfo-Struktur enthält Informationen über interne Objekte.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type ObjInfo struct {\n Type int\n Value interface{}\n}\n")])])]),t("p",[e._v("Die ObjInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Typ")]),e._v(" ist der Objekttyp, der einen der folgenden Werte hat:\n"),t("ul",[t("li",[t("strong",[e._v("ObjContract")]),e._v(" – "),t("a",{attrs:{href:"#contractInfo-Struktur"}},[e._v("Vertrag")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("ObjFunc")]),e._v(" - Funktion;")]),e._v(" "),t("li",[t("strong",[e._v("ObjExtFunc")]),e._v(" - externe Golang-Funktion;")]),e._v(" "),t("li",[t("strong",[e._v("ObjVar")]),e._v(" - Variable;")]),e._v(" "),t("li",[t("strong",[e._v("ObjExtend")]),e._v(" - $name-Variable.")])])]),e._v(" "),t("li",[t("strong",[e._v("Wert")]),e._v(" – enthält die Struktur jedes Typs.")])]),e._v(" "),t("h4",{attrs:{id:"contractinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contractinfo-struktur"}},[e._v("#")]),e._v(" ContractInfo-Struktur")]),e._v(" "),t("p",[e._v("Zeigt auf den Typ "),t("strong",[e._v("ObjContract")]),e._v(", und das Feld "),t("strong",[e._v("Value")]),e._v(" enthält eine "),t("strong",[e._v("ContractInfo")]),e._v("-Struktur.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type ContractInfo struct {\n ID uint32\n Name string\n Owner *OwnerInfo\n Used map[string]bool\n Tx *[]*FieldInfo\n}\n")])])]),t("p",[e._v("Die ContractInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("ID")]),e._v(" - Vertrags-ID, die beim Aufruf des Vertrags in der Blockchain angezeigt wird;")]),e._v(" "),t("li",[t("strong",[e._v("Name")]),e._v(" - Vertragsname;")]),e._v(" "),t("li",[t("strong",[e._v("Eigentümer")]),e._v(" - andere Informationen zum Vertrag;")]),e._v(" "),t("li",[t("strong",[e._v("Verwendet")]),e._v(" - Karte der aufgerufenen Vertragsnamen;")]),e._v(" "),t("li",[t("strong",[e._v("Tx")]),e._v(" – ein Datenarray, das im "),t("RouterLink",{attrs:{to:"/de/topics/script.html#data-section"}},[e._v("Datenabschnitt")]),e._v(" des Vertrags beschrieben wird.")],1)]),e._v(" "),t("h4",{attrs:{id:"fieldinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fieldinfo-struktur"}},[e._v("#")]),e._v(" FieldInfo-Struktur")]),e._v(" "),t("p",[e._v("Die FieldInfo-Struktur wird in der "),t("strong",[e._v("ContractInfo")]),e._v("-Struktur verwendet und beschreibt Elemente im "),t("RouterLink",{attrs:{to:"/de/topics/script.html#data-section"}},[e._v("Datenabschnitt")]),e._v(" eines Vertrags.")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type FieldInfo struct {\n Name string\n Type reflect.Type\n Original uint32\n Tags string\n}\n")])])]),t("p",[e._v("Die FieldInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Name")]),e._v(" - Feldname;")]),e._v(" "),t("li",[t("strong",[e._v("Typ")]),e._v(" - Feldtyp;")]),e._v(" "),t("li",[t("strong",[e._v("Original")]),e._v(" - optionales Feld;")]),e._v(" "),t("li",[t("strong",[e._v("Tags")]),e._v(" - zusätzliche Beschriftungen für dieses Feld.")])]),e._v(" "),t("h4",{attrs:{id:"funcinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#funcinfo-struktur"}},[e._v("#")]),e._v(" FuncInfo-Struktur")]),e._v(" "),t("p",[e._v("Zeigt auf den ObjFunc-Typ, und das Value-Feld enthält eine FuncInfo-Struktur.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type FuncInfo struct {\n Params []reflect.Type\n Results []reflect.Type\n Names *map[string]FuncName\n Variadic bool\n ID uint32\n}\n")])])]),t("p",[e._v("Die FuncInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Params")]),e._v(" - ein Array von Parametertypen;")]),e._v(" "),t("li",[t("strong",[e._v("Ergebnisse")]),e._v(" - ein Array zurückgegebener Typen;")]),e._v(" "),t("li",[t("strong",[e._v("Namen")]),e._v(" - Abbildung von Daten für Tail-Funktionen, zum Beispiel "),t("code",[e._v("DBFind().Columns ()")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("Variadic")]),e._v(" - wahr, wenn die Funktion eine variable Anzahl von Parametern haben kann;")]),e._v(" "),t("li",[t("strong",[e._v("ID")]),e._v(" - Funktions-ID.")])]),e._v(" "),t("h4",{attrs:{id:"funcname-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#funcname-struktur"}},[e._v("#")]),e._v(" FuncName-Struktur")]),e._v(" "),t("p",[e._v("Die Struktur FuncName wird für FuncInfo verwendet und beschreibt die Daten einer Tail-Funktion.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type FuncName struct {\n Params []reflect.Type\n Offset []int\n Variadic bool\n}\n")])])]),t("p",[e._v("Die FuncName-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Params")]),e._v(" - ein Array von Parametertypen;")]),e._v(" "),t("li",[t("strong",[e._v("Offset")]),e._v(" - das Array von Offsets für diese Variablen. Tatsächlich können die Werte aller Parameter in einer Funktion mit dem Punkt . initialisiert werden;")]),e._v(" "),t("li",[t("strong",[e._v("Variadic")]),e._v(" - true, wenn die Tail-Funktion eine variable Anzahl von Parametern haben kann.")])]),e._v(" "),t("h4",{attrs:{id:"extfuncinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#extfuncinfo-struktur"}},[e._v("#")]),e._v(" ExtFuncInfo-Struktur")]),e._v(" "),t("p",[e._v("Zeigt auf den ObjExtFunc-Typ, und das Value-Feld enthält eine ExtFuncInfo-Struktur. Es wird verwendet, um Golang-Funktionen zu beschreiben.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type ExtFuncInfo struct {\n Name string\n Params []reflect.Type\n Results []reflect.Type\n Auto []string\n Variadic bool\n Func interface{}\n}\n")])])]),t("p",[e._v("Die ExtFuncInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[e._v("Die Parameter "),t("strong",[e._v("Name")]),e._v(", "),t("strong",[e._v("Params")]),e._v(", "),t("strong",[e._v("Results")]),e._v(" haben die gleiche Struktur wie "),t("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("Auto")]),e._v(" - ein Array von Variablen. Wird gegebenenfalls als zusätzlicher Parameter an die Funktion übergeben. Beispielsweise eine Variable vom Typ SmartContract sc;")]),e._v(" "),t("li",[t("strong",[e._v("Func")]),e._v(" - Golang-Funktionen.")])]),e._v(" "),t("h4",{attrs:{id:"varinfo-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#varinfo-struktur"}},[e._v("#")]),e._v(" VarInfo-Struktur")]),e._v(" "),t("p",[e._v("Zeigt auf den Typ "),t("strong",[e._v("ObjVar")]),e._v(", und das Feld "),t("strong",[e._v("Value")]),e._v(" enthält eine "),t("strong",[e._v("VarInfo")]),e._v("-Struktur.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type VarInfo struct {\n Obj *ObjInfo\n Owner *Block\n}\n")])])]),t("p",[e._v("Die VarInfo-Struktur hat die folgenden Elemente:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Obj")]),e._v(" - Informationen über Typ und Wert der Variablen;")]),e._v(" "),t("li",[t("strong",[e._v("Eigentümer")]),e._v(" - Zeiger auf den Eigentümerblock.")])]),e._v(" "),t("h4",{attrs:{id:"objextend-wert"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#objextend-wert"}},[e._v("#")]),e._v(" ObjExtend-Wert")]),e._v(" "),t("p",[e._v("Zeigt auf den Typ "),t("strong",[e._v("ObjExtend")]),e._v(", und das Feld "),t("strong",[e._v("Value")]),e._v(" enthält eine Zeichenfolge, die den Namen der Variablen oder Funktion enthält.")]),e._v(" "),t("h2",{attrs:{id:"befehle-fur-virtuelle-maschinen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#befehle-fur-virtuelle-maschinen"}},[e._v("#")]),e._v(" Befehle für virtuelle Maschinen")]),e._v(" "),t("h3",{attrs:{id:"bytecode-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bytecode-struktur"}},[e._v("#")]),e._v(" ByteCode-Struktur")]),e._v(" "),t("p",[e._v("Ein Bytecode ist eine Folge von Strukturen vom Typ "),t("strong",[e._v("ByteCode")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type ByteCode struct {\n Cmd uint16\n Value interface{}\n}\n")])])]),t("p",[e._v("Diese Struktur hat die folgenden Felder:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Cmd")]),e._v(" - der Bezeichner der Speicherbefehle;")]),e._v(" "),t("li",[t("strong",[e._v("Wert")]),e._v(" - enthält den Operanden (Wert).")])]),e._v(" "),t("p",[e._v("Im Allgemeinen führen Befehle eine Operation auf dem obersten Element des Stapels aus und schreiben bei Bedarf den Ergebniswert hinein.")]),e._v(" "),t("h3",{attrs:{id:"befehlskennungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#befehlskennungen"}},[e._v("#")]),e._v(" Befehlskennungen")]),e._v(" "),t("p",[e._v("Bezeichner der Befehle der virtuellen Maschine sind in der Datei vm/cmds_list.go beschrieben.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("cmdPush")]),e._v(" – legt einen Wert aus dem Value-Feld auf den Stack. Legen Sie zum Beispiel Zahlen und Linien auf den Stapel;")]),e._v(" "),t("li",[t("strong",[e._v("cmdVar")]),e._v(" - Legt den Wert einer Variablen auf den Stack. Value enthält einen Zeiger auf die VarInfo-Struktur und Informationen über die Variable;")]),e._v(" "),t("li",[t("strong",[e._v("cmdExtend")]),e._v(" – legt den Wert einer externen Variablen auf den Stack. Wert enthält eine Zeichenfolge mit dem Variablennamen (beginnend mit $);")]),e._v(" "),t("li",[t("strong",[e._v("cmdCallExtend")]),e._v(" – Aufruf einer externen Funktion (beginnend mit $). Die Parameter der Funktion werden aus dem Stapel abgerufen und die Ergebnisse auf dem Stapel abgelegt. Wert enthält einen Funktionsnamen (beginnend mit $);")]),e._v(" "),t("li",[t("strong",[e._v("cmdPushStr")]),e._v(" – legt den String in Value auf den Stack;")]),e._v(" "),t("li",[t("strong",[e._v("cmdCall")]),e._v(" - ruft die Funktion der virtuellen Maschine auf. Wert enthält eine "),t("strong",[e._v("ObjInfo")]),e._v("-Struktur. Dieser Befehl gilt für die Golang-Funktion "),t("strong",[e._v("ObjExtFunc")]),e._v(" und die Needle-Funktion "),t("strong",[e._v("ObjFunc")]),e._v(". Wenn eine Funktion aufgerufen wird, werden ihre Parameter vom Stapel abgerufen und die Ergebniswerte werden auf dem Stapel abgelegt;")]),e._v(" "),t("li",[t("strong",[e._v("cmdCallVari")]),e._v(" - Ähnlich wie der Befehl "),t("strong",[e._v("cmdCall")]),e._v(" ruft er die Funktion der virtuellen Maschine auf. Dieser Befehl wird verwendet, um eine Funktion mit einer variablen Anzahl von Parametern aufzurufen;")]),e._v(" "),t("li",[t("strong",[e._v("cmdReturn")]),e._v(" - wird verwendet, um die Funktion zu verlassen. Die Rückgabewerte werden auf den Stack gelegt und das Value-Feld wird nicht verwendet;")]),e._v(" "),t("li",[t("strong",[e._v("cmdIf")]),e._v(" – übergibt die Kontrolle an den Bytecode in der Struktur "),t("strong",[e._v("block")]),e._v(", der im Feld Wert übergeben wird. Das Steuerelement wird nur dann auf den Stack übertragen, wenn das oberste Element des Stacks von der "),t("em",[e._v("valueToBool")]),e._v("-Funktion aufgerufen und "),t("code",[e._v("true")]),e._v(" zurückgegeben wird. Andernfalls wird die Steuerung an den nächsten Befehl übergeben;")]),e._v(" "),t("li",[t("strong",[e._v("cmdElse")]),e._v(" - dieser Befehl funktioniert auf die gleiche Weise wie "),t("strong",[e._v("cmdIf")]),e._v(", aber nur wenn das oberste Element des Stacks von der valueToBool-Funktion aufgerufen und "),t("code",[e._v("false")]),e._v(" zurückgegeben wird, wird die Steuerung an die übertragen angegebener Block;")]),e._v(" "),t("li",[t("strong",[e._v("cmdAssignVar")]),e._v(" – erhält eine Liste von Variablen des Typs "),t("strong",[e._v("VarInfo")]),e._v(" von Value. Diese Variablen verwenden den Befehl "),t("strong",[e._v("cmdAssign")]),e._v(", um den Wert abzurufen;")]),e._v(" "),t("li",[t("strong",[e._v("cmdAssign")]),e._v(" – weist den Wert im Stack der Variablen zu, die durch den Befehl "),t("strong",[e._v("cmdAssignVar")]),e._v(" erhalten wurde;")]),e._v(" "),t("li",[t("strong",[e._v("cmdLabel")]),e._v(" - definiert ein Label, wenn die Steuerung während der While-Schleife zurückgegeben wird;")]),e._v(" "),t("li",[t("strong",[e._v("cmdContinue")]),e._v(" - Dieser Befehl überträgt die Steuerung an das Label "),t("strong",[e._v("cmdLabel")]),e._v(". Beim Ausführen einer neuen Iteration der Schleife wird Value nicht verwendet;")]),e._v(" "),t("li",[t("strong",[e._v("cmdWhile")]),e._v(" – Verwenden Sie valueToBool, um das oberste Element des Stapels zu überprüfen. Wenn dieser Wert „true“ ist, wird die Struktur "),t("strong",[e._v("block")]),e._v(" aus dem Wertefeld aufgerufen;")]),e._v(" "),t("li",[t("strong",[e._v("cmdBreak")]),e._v(" - beendet die Schleife;")]),e._v(" "),t("li",[t("strong",[e._v("cmdIndex")]),e._v(" – legt den Wert in der Map oder im Array nach Index in den Stack, ohne Value zu verwenden. Beispiel: "),t("code",[e._v("(map | array) (index value) => (map | array [index value])")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdSetIndex")]),e._v(" – weist den Wert des obersten Elements des Stapels den Elementen der Karte oder des Arrays zu, ohne Value zu verwenden. Beispiel: "),t("code",[e._v("(map | array) (index value) (value) => (map | array)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdFuncName")]),e._v(" - fügt Parameter hinzu, die mit sequentiellen Beschreibungen geteilt durch Punkt übergeben werden. Beispiel: "),t("code",[e._v("func name => Fun (...) .Name (...)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdUnwrapArr")]),e._v(" - definiert ein boolesches Flag, wenn das oberste Element des Stapels ein Array ist;")]),e._v(" "),t("li",[t("strong",[e._v("cmdMapInit")]),e._v(" – initialisiert den Wert von map;")]),e._v(" "),t("li",[t("strong",[e._v("cmdArrayInit")]),e._v(" – initialisiert den Wert des Arrays;")]),e._v(" "),t("li",[t("strong",[e._v("cmdError")]),e._v(" - Dieser Befehl wird erstellt, wenn ein Vertrag oder eine Funktion mit einem angegebenen "),t("code",[e._v("error, warning, info")]),e._v(" beendet wird.")])]),e._v(" "),t("h3",{attrs:{id:"stack-operationsbefehle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#stack-operationsbefehle"}},[e._v("#")]),e._v(" Stack-Operationsbefehle")]),e._v(" "),t("blockquote",[t("p",[e._v("Hinweis")])]),e._v(" "),t("blockquote",[t("p",[e._v("In der aktuellen Version ist die automatische Typkonvertierung für diese Befehle nicht vollständig anwendbar. Zum Beispiel,")])]),e._v(" "),t("blockquote",[t("p",[t("code",[e._v("string + float | int | decimal => float | int | decimal, float + int | str => float, but int + string => runtime error")]),e._v(".")])]),e._v(" "),t("p",[e._v("Das Folgende sind Befehle für die direkte Stack-Verarbeitung. Das Feld Wert wird in diesen Befehlen nicht verwendet.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("cmdNot")]),e._v(" - logische Negation. "),t("code",[e._v("(val) => (!ValueToBool(val))")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdSign")]),e._v(" - Vorzeichenwechsel. "),t("code",[e._v("(val) => (-val)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdAdd")]),e._v(" - Ergänzung. "),t("code",[e._v("(val1)(val2) => (val1 + val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdSub")]),e._v(" - Subtraktion. "),t("code",[e._v("(val1)(val2) => (val1-val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdMul")]),e._v(" - Multiplikation. "),t("code",[e._v("(val1)(val2) => (val1 * val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdDiv")]),e._v(" - Division. "),t("code",[e._v("(val1)(val2) => (val1 / val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdAnd")]),e._v(" - logisches UND. "),t("code",[e._v("(val1)(val2) => (valueToBool(val1) && valueToBool(val2))")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdOr")]),e._v(" - logisches ODER. "),t("code",[e._v("(val1)(val2) => (valueToBool(val1) || valueToBool(val2))")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdEqual")]),e._v(" - Gleichheitsvergleich, bool wird zurückgegeben. "),t("code",[e._v("(val1)(val2) => (val1 == val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdNotEq")]),e._v(" - Ungleichheitsvergleich, bool wird zurückgegeben. "),t("code",[e._v("(val1)(val2) => (val1 != val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdLess")]),e._v(" - Kleiner-als-Vergleich, bool wird zurückgegeben. "),t("code",[e._v("(val1)(val2) => (val1 (val1 >= val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdGreat")]),e._v(" - Größer-als-Vergleich, bool wird zurückgegeben. "),t("code",[e._v("(val1)(val2) => (val1> val2)")]),e._v(";")]),e._v(" "),t("li",[t("strong",[e._v("cmdNotGreat")]),e._v(" - Kleiner-gleich-Vergleich, bool wird zurückgegeben. "),t("code",[e._v("(val1)(val2) => (val1 <= val2)")]),e._v(".")])]),e._v(" "),t("h3",{attrs:{id:"laufzeitstruktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#laufzeitstruktur"}},[e._v("#")]),e._v(" Laufzeitstruktur")]),e._v(" "),t("p",[e._v("Die Ausführung von Bytecodes wirkt sich nicht auf die virtuelle Maschine aus. Beispielsweise können verschiedene Funktionen und Verträge gleichzeitig in einer einzigen virtuellen Maschine ausgeführt werden. Die Runtime-Struktur wird verwendet, um Funktionen und Verträge sowie beliebige Ausdrücke und Bytecode auszuführen.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type RunTime struct {\n stack []interface{}\n blocks []*blockStack\n vars []interface{}\n extend *map[string]interface{}\n vm *VM\n cost int64\n err error\n}\n")])])]),t("ul",[t("li",[t("strong",[e._v("stack")]),e._v(" - der Stack zum Ausführen des Bytecodes;")]),e._v(" "),t("li",[t("strong",[e._v("blocks")]),e._v(" - Stack für Blockaufrufe;")]),e._v(" "),t("li",[t("strong",[e._v("vars")]),e._v(" - Stapel von Variablen. Seine Variable wird dem Stapel von Variablen hinzugefügt, wenn der Bytecode im Block aufgerufen wird. Nach dem Verlassen des Blocks kehrt die Größe des Variablenstapels zum vorherigen Wert zurück;")]),e._v(" "),t("li",[t("strong",[e._v("extend")]),e._v(" - ein Zeiger zum Abbilden mit Werten externer Variablen ("),t("code",[e._v("$name")]),e._v(");")]),e._v(" "),t("li",[t("strong",[e._v("vm")]),e._v(" - ein Zeiger einer virtuellen Maschine;")]),e._v(" "),t("li",[t("strong",[e._v("cost")]),e._v(" - Kraftstoffeinheit der resultierenden Ausführungskosten;")]),e._v(" "),t("li",[t("strong",[e._v("err")]),e._v(" - Fehler während der Ausführung aufgetreten.")])]),e._v(" "),t("h4",{attrs:{id:"blockstack-struktur"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#blockstack-struktur"}},[e._v("#")]),e._v(" blockStack-Struktur")]),e._v(" "),t("p",[e._v("Die blockStack-Struktur wird in der Runtime-Struktur verwendet.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("type blockStack struct {\n Block *Block\n Offset int\n}\n")])])]),t("ul",[t("li",[t("strong",[e._v("Block")]),e._v(" – ein Zeiger auf den ausgeführten Block;")]),e._v(" "),t("li",[t("strong",[e._v("Offset")]),e._v(" – der Offset des letzten ausgeführten Befehls im Bytecode des angegebenen Blocks.")])]),e._v(" "),t("h3",{attrs:{id:"runcode-funktion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#runcode-funktion"}},[e._v("#")]),e._v(" RunCode-Funktion")]),e._v(" "),t("p",[e._v("Bytecodes werden in der Funktion "),t("strong",[e._v("RunCode")]),e._v(" ausgeführt. Es enthält eine Schleife, die die entsprechende Operation für jeden Bytecode-Befehl durchführt. Vor der Verarbeitung eines Bytecodes müssen die erforderlichen Daten initialisiert werden.")]),e._v(" "),t("p",[e._v("Neue Blöcke werden zu anderen Blöcken hinzugefügt.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("rt.blocks = append(rt.blocks, &blockStack{block, len(rt.vars)})\n")])])]),t("p",[e._v("Rufen Sie als Nächstes die Informationen zu den relevanten Parametern der Tail-Funktion ab. Diese Parameter sind im letzten Element des Stapels enthalten.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("var namemap map[string][]interface{}\nif block.Type == ObjFunc && block.Info.(*FuncInfo).Names != nil {\n if rt.stack[len(rt.stack)-1] != nil {\n namemap = rt.stack[len(rt.stack)-1].(map[string][]interface{})\n }\n rt.stack = rt.stack[:len(rt.stack)-1]\n}\n")])])]),t("p",[e._v("Anschließend müssen alle im aktuellen Block definierten Variablen mit ihren Anfangswerten initialisiert werden.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("start := len(rt.stack)\nvaroff := len(rt.vars)\nfor vkey, vpar := range block.Vars {\n rt.cost--\n var value interface{}\n")])])]),t("p",[e._v("Da Variablen in der Funktion auch Variablen sind, müssen wir sie vom letzten Element des Stacks in der von der Funktion selbst beschriebenen Reihenfolge abrufen.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" if block.Type == ObjFunc && vkey = len(params.Params)-1 {\n")])])]),t("p",[e._v("Wenn übergebene variable Parameter zu einer variablen Anzahl von Parametern gehören, werden diese Parameter zu einem Array von Variablen kombiniert.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" off := varoff + params.Offset[len(params.Params)-1]\n rt.vars[off] = append(rt.vars[off].([]interface{}), value)\n } else {\n rt.vars[varoff+params.Offset[i]] = value\n }\n }\n }\n}\n")])])]),t("p",[e._v("Danach müssen wir nur noch Werte löschen, die von der Spitze des Stacks als Funktionsparameter übergeben wurden, wodurch der Stack verschoben wird. Wir haben ihre Werte in ein Variablenarray kopiert.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("if block.Type == ObjFunc {\n start -= len(block.Info.(*FuncInfo).Params)\n}\n")])])]),t("p",[e._v("Wenn eine Bytecode-Befehlsschleife beendet ist, müssen wir den Stack korrekt leeren.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("last := rt.blocks[len(rt.blocks)-1]\n")])])]),t("p",[e._v("Löschen Sie den aktuellen Block aus dem Blockstapel.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("rt.blocks = rt.blocks[:len(rt.blocks)-1]\nif status == statusReturn {\n")])])]),t("p",[e._v("Wenn eine bereits ausgeführte Funktion erfolgreich beendet wird, fügen wir den Rückgabewert am Ende des vorherigen Stacks hinzu.```\nif last.Block.Type == ObjFunc {\nfor count := len(last.Block.Info.(*FuncInfo).Results); count > 0; count-- {\nrt.stack[start] = rt.stack[len(rt.stack)-count]\nstart++\n}\nstatus = statusNormal\n} else {")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Wie Sie sehen können, stellen wir den Stack-Status nicht wieder her und beenden die Funktion unverändert, wenn wir die Funktion nicht ausführen. Der Grund ist, dass Schleifen und bedingte Strukturen, die in der Funktion ausgeführt wurden, ebenfalls Bytecode-Blöcke sind.\n")])])]),t("p",[e._v("return")]),e._v(" "),t("p",[e._v("}\n}")]),e._v(" "),t("p",[e._v("rt.stack = rt.stack[:start]")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n### Weitere Funktionen für Operationen mit VM\n\nMit der Funktion **NewVM** können Sie eine virtuelle Maschine erstellen. Jeder virtuellen Maschine werden über die Funktion **Extend** vier Funktionen hinzugefügt, z. B. **ExecContract**, **MemoryUsage**, **CallContract** und **Settings**.\n\n")])])]),t("p",[e._v("for key, item := range ext.Objects {\nfobj := reflect.ValueOf(item).Type()")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\nWir durchlaufen alle übergebenen Objekte und betrachten nur die Funktionen.\n\n")])])]),t("p",[e._v("switch fobj.Kind() {\ncase reflect.Func:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\nWir füllen die **ExtFuncInfo**-Struktur gemäß den über die Funktion erhaltenen Informationen und fügen ihre Struktur namentlich der Top-Level-Map **Objects** hinzu.\n\n")])])]),t("p",[e._v("data := ExtFuncInfo{key, make([]reflect.Type, fobj.NumIn()), make([]reflect.Type, fobj.NumOut()),\nmake([]string, fobj.NumIn()), fobj.IsVariadic(), item}\nfor i := 0; i 0 && ((*lexems)[i-1].Type == isComma || (*lexems)[i-1].Type == lexOper) {\ncontinue main\n}\nfor k := len(buffer) - 1; k >= 0; k-- {\nif buffer[k].Cmd == cmdSys {\ncontinue main\n}\n}\nbreak main")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Im Allgemeinen entspricht der Algorithmus selbst einem Algorithmus zum Umwandeln in die inverse polnische Notation. Unter Berücksichtigung des Aufrufs notwendiger Verträge, Funktionen und Indizes sowie anderer Dinge, die beim Parsing nicht vorkommen, und Optionen zum Parsing von Token vom Typ lexIdent werden dann Variablen, Funktionen oder Verträge mit diesem Namen überprüft. Wenn nichts gefunden wird und es sich nicht um einen Funktions- oder Vertragsaufruf handelt, wird ein Fehler angezeigt.\n\n")])])]),t("p",[e._v("objInfo, tobj := vm.findObj(lexem.Value.(string), block)\nif objInfo == nil && (!vm.Extern || i> *ind || i >= len(*lexems)-2 || (*lexems)[i+1].Type != isLPar) {\nreturn fmt.Errorf("),t("code",[e._v("unknown identifier %s")]),e._v(", lexem.Value.(string))\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\nWir können auf eine solche Situation stoßen, und der Vertragsaufruf wird später beschrieben. Wenn in diesem Beispiel keine Funktionen oder Variablen mit demselben Namen gefunden werden, halten wir es für notwendig, einen Vertrag aufzurufen. In dieser kompilierten Sprache gibt es keinen Unterschied zwischen Verträgen und Funktionsaufrufen. Aber wir müssen den Vertrag über die Funktion **ExecContract** aufrufen, die im Bytecode verwendet wird.\n")])])]),t("p",[e._v("if objInfo.Type == ObjContract {\nif objInfo.Value != nil {\nobjContract = objInfo.Value.(*Block)\n}\nobjInfo, tobj = vm.findObj("),t("code",[e._v("ExecContract")]),e._v(", block)\nisContract = true\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Die Anzahl der bisherigen Variablen erfassen wir in `count`, die zusammen mit der Anzahl der Funktionsparameter auch auf den Stack geschrieben werden. Bei jeder weiteren Erkennung von Parametern müssen wir diese Zahl nur am letzten Element des Stapels um eine Einheit erhöhen.\n\n\n")])])]),t("p",[e._v("count := 0\nif (*lexems)[i+2].Type != isRPar {\ncount++\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Wir haben eine Liste mit aufgerufenen Parametern für Verträge verwendet, dann müssen wir den Fall markieren, in dem der Vertrag aufgerufen wird. Wenn der Vertrag ohne Parameter aufgerufen wird, müssen wir zwei leere Parameter hinzufügen, um **ExecContract** aufzurufen, um mindestens zwei Parameter zu erhalten.\n")])])]),t("p",[e._v('if isContract {\nname := StateName((*block)[0].Info.(uint32), lexem.Value.(string))\nfor j := len(*block) - 1; j >= 0; j-- {\ntopblock := (*block)[j]\nif topblock.Type == ObjContract {\nif topblock.Info.(*ContractInfo).Used == nil {\ntopblock.Info.(*ContractInfo).Used = make(map[string]bool)\n}\ntopblock.Info.(*ContractInfo).Used[name] = true\n}\n}\nbytecode = append(bytecode, &ByteCode{cmdPush, name})\nif count == 0 {\ncount = 2\nbytecode = append(bytecode, &ByteCode{cmdPush, ""})\nbytecode = append(bytecode, &ByteCode{cmdPush, ""})\n}\ncount++\n}')]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\nWenn wir sehen, dass als nächstes eine eckige Klammer steht, fügen wir den Befehl **cmdIndex** hinzu, um den Wert durch den Index zu erhalten.\n")])])]),t("p",[e._v("if (*lexems)[i+1].Type == isLBrack {\nif objInfo == nil || objInfo.Type != ObjVar {\nreturn fmt.Errorf("),t("code",[e._v("unknown variable %s")]),e._v(", lexem.Value.(string))\n}\nbuffer = append(buffer, &ByteCode{cmdIndex, 0})\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Die Funktion **CompileBlock** kann Objektbäume und ausdrucksunabhängige Bytecodes generieren. Der Kompilierungsprozess basiert auf einer endlichen Zustandsmaschine, genau wie ein lexikalischer Analysator, aber mit den folgenden Unterschieden. Erstens verwenden wir keine Symbole, sondern Tokens; zweitens werden wir gleich die *states*-Variablen in allen Zuständen und Übergängen beschreiben. Es stellt ein Array von Objekten dar, die nach Tokentyp indiziert sind. Jedes Token hat eine Struktur von *compileState*, und ein neuer Status wird in *NewState* angegeben. Wenn klar ist, welche Struktur wir aufgelöst haben, können wir die Funktion des Handlers im Feld *Func* angeben.\n\nBetrachten wir den Hauptzustand als Beispiel.\n\nWenn wir auf einen Zeilenumbruch oder einen Kommentar stoßen, bleiben wir im selben Zustand. Wenn wir auf das Schlüsselwort **contract** stoßen, ändern wir den Status in *stateContract* und beginnen mit dem Parsen der Struktur. Wenn wir auf das Schlüsselwort **func** stoßen, ändern wir den Status in *stateFunc*. Wenn andere Token empfangen werden, wird die Funktion, die einen Fehler generiert, aufgerufen.\n\n")])])]),t("p",[e._v("{// stateRoot\nlexNewLine: {stateRoot, 0},\nlexKeyword | (keyContract << 8): {stateContract | statePush, 0},\nlexKeyword | (keyFunc << 8): {stateFunc | statePush, 0},\nlexComment: {stateRoot, 0},\n0: {errUnknownCmd, cfError},\n},")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Angenommen, wir sind auf das Schlüsselwort **func** gestoßen und haben den Status in *stateFunc* geändert. Da der Funktionsname auf das Schlüsselwort **func** folgen muss, behalten wir denselben Zustand bei, wenn wir den Funktionsnamen ändern. Für alle anderen Token werden wir entsprechende Fehler generieren. Wenn wir den Funktionsnamen in der Token-ID erhalten, gehen wir zum *stateFParams*-Zustand, wo wir die Parameter der Funktion erhalten können.\n")])])]),t("p",[e._v("{// stateFunc\nlexNewLine: {stateFunc, 0},\nlexIdent: {stateFParams, cfNameBlock},\n0: {errMustName, cfError},\n},")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Gleichzeitig mit den obigen Operationen rufen wir die Funktion **fNameBlock** auf. Es sollte beachtet werden, dass die Blockstruktur mit der statePush-Markierung erstellt wird, wo wir sie aus dem Puffer holen und mit den Daten füllen, die wir benötigen. Die **fNameBlock**-Funktion eignet sich für Verträge und Funktionen (einschließlich der darin verschachtelten). Er füllt das *Info*-Feld mit der entsprechenden Struktur und schreibt sich in die *Objects* des übergeordneten Blocks. Auf diese Weise können wir die Funktion oder den Vertrag mit dem angegebenen Namen aufrufen. Ebenso erstellen wir entsprechende Funktionen für alle Zustände und Variablen. Diese Funktionen sind normalerweise sehr klein und führen einige Aufgaben beim Erstellen des Baums der virtuellen Maschine aus.\n")])])]),t("p",[e._v("func fNameBlock(buf *[]*Block, state int, lexem *Lexem) error {\nvar itype int\nprev := (*buf)[len(*buf)-2]\nfblock := (*buf)[len(*buf)-1]\nname := lexem.Value.(string)\nswitch state {\ncase stateBlock:\nitype = ObjContract\nname = StateName((*buf)[0].Info.(uint32), name)\nfblock.Info = &ContractInfo{ID: uint32(len(prev.Children) - 1), Name: name,\nOwner: (*buf)[0].Owner}\ndefault:\nitype = ObjFunc\nfblock.Info = &FuncInfo{}\n}\nfblock.Type = itype\nprev.Objects[name] = &ObjInfo{Type: itype, Value: fblock}\nreturn nil\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Für die Funktion **CompileBlock** durchläuft sie einfach alle Tokens und wechselt die Zustände gemäß den in den Zuständen beschriebenen Tokens. Fast alle zusätzlichen Token entsprechen zusätzlichen Programmcodes.\n\n* **statePush** – fügt das Objekt **Block** zum Objektbaum hinzu;\n* **statePop** - wird verwendet, wenn der Block mit einer schließenden geschweiften Klammer endet;\n* **stateStay** - Sie müssen die aktuelle Markierung beibehalten, wenn Sie in einen neuen Status wechseln;\n* **stateToBlock** - Übergang in den Zustand **stateBlock** zur Verarbeitung von *while* und *if*. Nach der Verarbeitung von Ausdrücken müssen Sie Blöcke innerhalb der geschweiften Klammern verarbeiten;\n* **stateToBody** - Übergang in den Zustand **stateBody**;\n* **stateFork** - speichert die markierte Position. Wenn der Ausdruck mit einem Bezeichner oder einem Namen mit `$` beginnt, können wir Funktionsaufrufe oder Zuweisungen vornehmen;\n* **stateToFork** – wird verwendet, um das in **stateFork** gespeicherte Token abzurufen, das an die Prozessfunktion übergeben wird;\n* **stateLabel** – wird zum Einfügen von **cmdLabel**-Befehlen verwendet. *während* die Struktur dieses Flag erfordert;\n* **stateMustEval** – prüft die Verfügbarkeit von bedingten Ausdrücken am Anfang von *if*- und *while*-Strukturen.\n\nNeben der Funktion **CompileBlock** ist auch die Funktion **FlushBlock** zu nennen. Das Problem besteht jedoch darin, dass der Blockbaum unabhängig von vorhandenen virtuellen Maschinen erstellt wird. Genauer gesagt erhalten wir Informationen über Funktionen und Verträge, die in einer virtuellen Maschine vorhanden sind, aber wir sammeln die kompilierten Blöcke in einem separaten Baum. Andernfalls, wenn während der Kompilierung ein Fehler auftritt, müssen wir die virtuelle Maschine auf den vorherigen Zustand zurücksetzen. Daher gehen wir separat zum Kompilierungsbaum, aber nachdem die Kompilierung erfolgreich ist, muss die Funktion **FlushContract** aufgerufen werden. Diese Funktion fügt den fertigen Blockbaum zur aktuellen virtuellen Maschine hinzu. Die Kompilierungsphase ist nun abgeschlossen.\n\n## Lexikalischer Analysator\nDer lexikalische Analysator verarbeitet eingehende Zeichenfolgen und bildet eine Folge von Token der folgenden Typen:\n* **lexSys** - Systemtoken, zum Beispiel: `{}, [], (), ,, .` usw.;\n* **lexOper** - Vorgangstoken, zum Beispiel: `+, -, /, \\, *`;\n* **lexNumber** - Zahl;\n* **lexident** - Kennung;\n* **lexNewline** - Zeilenumbruchzeichen;\n* **lexString** - Zeichenkette;\n* **lexComment** - Kommentar;\n* **lexKeyword** - Schlüsselwort;\n* **lexType** - Typ;\n* **lexExtend** - Verweis auf externe Variablen oder Funktionen, zum Beispiel: `$myname`.\n\nIn der aktuellen Version wird zunächst mit Hilfe der Datei [script/lextable/lextable.go](#lextablelextablego) eine Konvertierungstabelle (finite state machine) zum Parsen der Tokens aufgebaut, die in die Datei lex_table.go geschrieben wird. Im Allgemeinen können Sie die ursprünglich von der Datei generierte Konvertierungstabelle loswerden und direkt beim Start eine Konvertierungstabelle im Speicher erstellen (`init()`). Die lexikalische Analyse selbst findet in der lexParser-Funktion in der Datei [lex.go](#lex-go) statt.\n\n### lextable/lextable.go\n\nHier definieren wir das zu betreibende Alphabet und beschreiben, wie die endliche Zustandsmaschine basierend auf dem nächsten empfangenen Symbol von einem Zustand in einen anderen wechselt.\n\n*states* ist ein JSON-Objekt, das eine Liste von Zuständen enthält.\nMit Ausnahme bestimmter Symbole steht „d“ für alle Symbole, die nicht im Staat angegeben sind.\n„n“ steht für 0x0a, „s“ steht für Leerzeichen, „q“ steht für Backquote, „Q“ steht für doppeltes Anführungszeichen, „r“ steht für Zeichen >= 128, „a“ steht für AZ und az und „ 1` steht für 1-9.\n\nDie Namen dieser Zustände sind Schlüssel, und die möglichen Werte sind im Wertobjekt aufgelistet. Dann gibt es einen neuen Zustand, um Übergänge für jede Gruppe vorzunehmen. Dann gibt es noch den Namen des Tokens. Wenn wir zum Anfangszustand zurückkehren müssen, ist der dritte Parameter das Service-Token, das angibt, wie mit dem aktuellen Symbol umgegangen werden soll.\n\nZum Beispiel haben wir den Hauptzustand und die eingehenden Zeichen `/`, `"/": ["solidus", "", "push next"]`,\n\n* **push** - gibt den Befehl, sich daran zu erinnern, dass es sich in einem separaten Stack befindet ;\n* **nächster** - geht zum nächsten Zeichen, und gleichzeitig ändern wir den Status auf **solidus**. Ruft danach das nächste Zeichen ab und überprüft den Status von **solidus**.\n\nWenn das nächste Zeichen `/` oder `/*` hat, gehen wir zum Kommentarstatus **Kommentar**, weil sie mit `//` oder `/*` beginnen. Offensichtlich hat jeder Kommentar danach einen anderen Zustand, weil sie mit einem anderen Symbol enden.\n\nWenn das nächste Zeichen nicht `/` und `*` ist, dann zeichnen wir alles im Stack als Tags vom Typ **lexOper** auf, leeren den Stack und kehren zum Hauptzustand zurück.\nDas folgende Modul konvertiert den Zustandsbaum in ein numerisches Array und schreibt es in die Datei *lex_table.go*.\n\nIn der ersten Schleife:\n\nWir bilden ein Alphabet gültiger Symbole.\n\n')])])]),t("p",[e._v("for ind, ch := range alphabet {\ni := byte(ind)")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Darüber hinaus versehen wir in **state2int** jeden Zustand mit einer eigenen Sequenzkennung.\n\n")])])]),t("p",[e._v("state2int := map[string]uint{"),t("code",[e._v("main")]),e._v(": 0}\nif err := json.Unmarshal([]byte(states), &data); err == nil {\nfor key := range data {\nif key != "),t("code",[e._v("main")]),e._v(" {\nstate2int[key] = uint(len(state2int))")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Wenn wir alle Zustände und jede Menge in einem Zustand und jedes Symbol in einer Menge durchlaufen, schreiben wir eine Drei-Byte-Zahl [neue Zustandskennung (0 = Haupt)] + [Tokentyp (0-kein Token)] + [Token] .\nDie Zweidimensionalität des Arrays *table* besteht darin, dass es in Zustände und 34 Eingabesymbole aus dem Array *alphabet* unterteilt ist, die in derselben Reihenfolge angeordnet sind.\nWir befinden uns im *Hauptzustand* in der Nullzeile der *Tabelle*. Nehmen Sie das erste Zeichen, finden Sie seinen Index im Array *alphabet* und erhalten Sie den Wert aus der Spalte mit dem angegebenen Index. Ausgehend vom empfangenen Wert erhalten wir den Token im Low-Byte. Wenn die Analyse abgeschlossen ist, zeigt das zweite Byte den Typ des empfangenen Tokens an. Im dritten Byte erhalten wir den Index des nächsten neuen Zustands.\nAll dies wird ausführlicher in der Funktion **lexParser** in *lex.go* beschrieben.\nWenn Sie einige neue Zeichen hinzufügen möchten, müssen Sie sie dem Array *alphabet* hinzufügen und die Menge der Konstante *AlphaSize* erhöhen. Wenn Sie eine neue Symbolkombination hinzufügen möchten, sollte diese ähnlich wie bei den bestehenden Optionen im Status beschrieben werden. Führen Sie nach dem obigen Vorgang die Datei *lextable.go* aus, um die Datei *lex_table.go* zu aktualisieren.\n\n### lex.go\nDie **lexParser**-Funktion generiert direkt eine lexikalische Analyse und gibt basierend auf eingehenden Zeichenfolgen ein Array empfangener Tags zurück. Lassen Sie uns die Struktur von Token analysieren.\n\n')])])]),t("p",[e._v("type Lexem struct {\nType uint32 // Type of the lexem\nValue interface{} // Value of lexem\nLine uint32 // Line of the lexem\nColumn uint32 // Position inside the line\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('* **Typ** - Token-Typ. Es hat einen der folgenden Werte: `lexSys, lexOper, lexNumber, lexIdent, lexString, lexComment, lexKeyword, lexType, lexExtend`;\n* **value** – Wert des Tokens. Die Art des Werts hängt vom Token-Typ ab. Lassen Sie uns das genauer analysieren:\n * **lexSys** - enthält Klammern, Kommas usw. In diesem Fall `Type = ch << 8 | lexSys“, beziehen Sie sich bitte auf die Konstante „isLPar ... isRBrack“, und ihr Wert ist uint32 Bits;\n * **lexOper** - der Wert stellt eine äquivalente Zeichenfolge in Form von uint32 dar. Siehe die `isNot ... isOr`-Konstanten;\n * **lexNumber** - Zahlen werden als int64 oder float64 gespeichert. Wenn die Zahl einen Dezimalpunkt hat, ist sie Float64;\n * **lexIdent** - Identifikatoren werden als String gespeichert;\n * **lexNewLine** - Zeilenumbruchzeichen. Wird auch zur Berechnung der Reihen- und Tokenposition verwendet;\n * **lexString** - Zeilen werden als String gespeichert;\n * **lexComment** - Kommentare werden als String gespeichert;\n * **lexKeyword** - für Schlüsselwörter werden nur die entsprechenden Indizes gespeichert, siehe `keyContract ... keyTail`-Konstante. In diesem Fall `Type = KeyID << 8 | lexKeyword`. Außerdem ist zu beachten, dass die Schlüsselwörter „true, false, nil“ sofort in Token vom Typ „lexNumber“ umgewandelt und die entsprechenden Typen „bool“ und „interface {}“ verwendet werden;\n * **lexType** – dieser Wert enthält den entsprechenden „reflect.Type“-Typwert;\n * **lexExtend** – Bezeichner, die mit einem `$` beginnen. Diese Variablen und Funktionen werden von außen übergeben und sind daher speziellen Arten von Token zugeordnet. Dieser Wert enthält den Namen als String ohne $ am Anfang.\n* **Line** - die Zeile, in der das Token gefunden wird;\n* **Column** - Inline-Position des Tokens.\nLassen Sie uns die Funktion **lexParser** im Detail analysieren. Die **todo**-Funktion schlägt den Symbolindex im Alphabet basierend auf dem aktuellen Status und dem eingehenden Symbol nach und erhält einen neuen Status, Token-Identifikator (falls vorhanden) und andere Token aus der Umwandlungstabelle. Das Parsing selbst beinhaltet das Aufrufen der **todo**-Funktion der Reihe nach für jedes nächste Zeichen und das Wechseln in einen neuen Zustand. Sobald das Tag empfangen wurde, erstellen wir das entsprechende Token in den Ausgabekriterien und setzen den Parsing-Prozess fort. Es sollte beachtet werden, dass wir während des Parsing-Prozesses die Token-Symbole nicht in einem separaten Stack oder Array akkumulieren, weil wir nur den Offset des Starts des Tokens speichern. Nachdem wir das Token erhalten haben, verschieben wir den Offset des nächsten Tokens an die aktuelle Parsing-Position.\n\nEs bleibt nur noch, die beim Parsing verwendeten lexikalischen Status-Token zu überprüfen:\n* **lexfPush** - dieses Token bedeutet, dass wir beginnen, Symbole in einem neuen Token zu sammeln;\n* **lexfNext** - das Zeichen muss dem aktuellen Token hinzugefügt werden;\n* **lexfPop** - Der Empfang des Tokens ist abgeschlossen. Normalerweise haben wir mit diesem Flag den Bezeichnertyp des geparsten Tokens;\n* **lexfSkip** - Dieses Token wird verwendet, um Zeichen vom Parsen auszuschließen. Beispielsweise sind die Kontrollschrägstriche in der Zeichenfolge \\n \\r \\". Sie werden während der lexikalischen Analysephase automatisch ersetzt.\n\n## Needle Sprache\n### Lexemes\nDer Quellcode eines Programms muss in UTF-8-Kodierung vorliegen.\n\nDie folgenden lexikalischen Typen werden verarbeitet:\n\n* **Schlüsselwörter** - ```action, break, conditions, Continue, Contract, data, else, error, false, func, If, info, nil, return, settings, true, var, warning, while``` ;\n* **Zahl** - nur Dezimalzahlen werden akzeptiert. Es gibt zwei Grundtypen: **int** und **float**. Wenn die Zahl einen Dezimalpunkt hat, wird sie zu einem Float **float**. Der Typ **int** entspricht in Golang **int64**, während der Typ **float** in Golang **float64** entspricht.\n* **String** - Der String kann in doppelte Anführungszeichen ```("ein String")``` oder Backquotes ```(\\`ein String\\`)``` eingeschlossen werden. Beide Arten von Zeichenfolgen können Zeilenumbruchzeichen enthalten. Zeichenfolgen in doppelten Anführungszeichen können doppelte Anführungszeichen, Zeilenumbruchzeichen und mit Schrägstrichen maskierte Wagenrückläufe enthalten. Beispiel: ```"Dies ist eine \\"erste Zeichenfolge\\".\\r\\nDies ist eine zweite Zeichenfolge."```.\n* **Kommentar** - Es gibt zwei Arten von Kommentaren. Einzeilige Kommentare verwenden zwei Schrägstriche (//). Beispiel: // Dies ist ein einzeiliger Kommentar. Mehrzeilige Kommentare verwenden Schrägstriche und Sternchen und können sich über mehrere Zeilen erstrecken. Beispiel: ```/* Dies ist ein mehrzeiliger Kommentar */```.\n* **Bezeichner** - die Namen von Variablen und Funktionen, die aus Buchstaben a-z und A-Z, UTF-8-Symbolen, Zahlen und Unterstrichen bestehen. Der Name kann mit einem Buchstaben, Unterstrich, ```@``` oder ```$``` beginnen. Der Name, der mit ```$``` beginnt, ist der Name der Variablen, die im **Datenabschnitt** definiert ist. Der mit ```$``` beginnende Name kann auch verwendet werden, um globale Variablen im Bereich von **Bedingungen** und **Aktionsabschnitten** zu definieren. Ökosystemverträge können über das Symbol ```@``` aufgerufen werden. Zum Beispiel: ```@1NewTable(...)```.\n\n### Typen\n\nNeben den Nadeltypen sind entsprechende Golang-Typen angegeben.\n* **bool** - bool, standardmäßig **false**;\n* **bytes** - []byte{}, standardmäßig ein leeres Byte-Array;\n* **int** - standardmäßig int64, **0**;\n* **Address** - uint64, standardmäßig **0**;\n* **Array** - []interface{}, standardmäßig ein leeres Array;\n* **map** - map[string]interface{}, standardmäßig ein leeres Objekt-Array;\n* **money** - Dezimalzahl. Dezimal, standardmäßig **0**;\n* **float** - float64, standardmäßig **0**;\n* **String** - String, standardmäßig ein leerer String;\n* **file** - map[string]interface{}, standardmäßig ein leeres Objekt-Array.\nDiese Variablentypen werden mit dem Schlüsselwort ```var``` definiert. Beispiel: ```var var1, var2 int```. Bei dieser Definition wird einer Variablen ein Standardwert nach Typ zugewiesen.\n\nAlle Variablenwerte sind vom Typ interface{} und werden dann den erforderlichen Golang-Typen zugewiesen. Daher sind beispielsweise Array- und Map-Typen Golang-Typen []interface{} und map[string]interface{}. Beide Arten von Arrays können Elemente beliebigen Typs enthalten.\n\n### Ausdrücke\n\nEin Ausdruck kann arithmetische Operationen, logische Operationen und Funktionsaufrufe enthalten. Alle Ausdrücke werden von links nach rechts nach Priorität der Operatoren ausgewertet. Bei gleicher Priorität werden Operatoren von links nach rechts ausgewertet.\n\nPriorität der Operationen von hoch nach niedrig:\n* **Funktionsaufruf und Klammern** - Beim Aufruf einer Funktion werden übergebene Parameter von links nach rechts berechnet;\n* **Unäre Operation** - logische Negation ```!``` und arithmetischer Vorzeichenwechsel ```-```;\n* **Multiplikation und Division** - arithmetische Multiplikation ```*``` und Division ```/```;\n* **Addition und Subtraktion** - arithmetische Addition ```+``` und Subtraktion ```-```;\n* **Logischer Vergleich** - ```>=>> >=```;\n* **Logische Gleichheit und Ungleichheit** - ```== !=```;\n* **Logisches UND** - ```&&```;\n* **Logisches ODER** - ```||```.\n\nBei der Auswertung von logischem AND und OR werden in jedem Fall beide Seiten des Ausdrucks ausgewertet.\n\nNeedle hat keine Typprüfung während der Kompilierung. Beim Auswerten von Operanden wird versucht, den Typ in einen komplexeren Typ umzuwandeln. Die Art der Komplexitätsreihenfolge kann wie folgt sein: ```string, int, float, money```. Nur ein Teil der Typkonvertierungen ist implementiert. Der Zeichenfolgentyp unterstützt Additionsoperationen, und das Ergebnis ist eine Zeichenfolgenverkettung. Beispiel: ```string + string = string, money-int = money, int * float = float```.\n\nBei Funktionen wird während der Ausführung eine Typprüfung für die Typen ```string``` und ```int``` durchgeführt.\nDie Typen **array** und **map** können per Index adressiert werden. Beim Typ **array** muss als Index der Wert **int** angegeben werden. Für den Typ **Map** muss eine Variable oder ein **String**-Wert angegeben werden. Wenn Sie einem **Array**-Element einen Wert zuweisen, dessen Index größer als der aktuelle maximale Index ist, wird dem Array ein leeres Element hinzugefügt. Der Anfangswert dieser Elemente ist **nil**. Zum Beispiel: .. Code:\n')])])]),t("p",[e._v('var my array\nmy[5] = 0\nvar mymap map\nmymap["index"] = my[3]')]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("In Ausdrücken mit bedingten logischen Werten (z. B. `if, while, &&, ||, !`) wird der Typ automatisch in einen logischen Wert konvertiert. Wenn der Typ nicht der Standardwert ist, ist er wahr.\n")])])]),t("p",[e._v("var mymap map\nvar val string\nif mymap && val {\n...\n}")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("### Zielfernrohr\n\nKlammern geben einen Block an, der lokale Bereichsvariablen enthalten kann. Standardmäßig erstreckt sich der Geltungsbereich einer Variablen auf ihre eigenen Blöcke und alle verschachtelten Blöcke. In einem Block können Sie eine neue Variable mit dem Namen einer vorhandenen Variablen definieren. In diesem Fall sind jedoch externe Variablen mit demselben Namen nicht mehr verfügbar.\n")])])]),t("p",[e._v("var a int\na = 3\n{\nvar a int\na = 4\nPrintln(a) // 4\n}\nPrintln(a) // 3")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('### Vertragsabwicklung\n\nBeim Aufruf eines Contracts müssen ihm in **data** definierte Parameter übergeben werden. Vor Ausführung eines Auftrags erhält die virtuelle Maschine diese Parameter und weist sie den entsprechenden Variablen ($Param) zu. Dann werden die vordefinierten Funktionen **conditions** und **action** aufgerufen.\n\nFehler, die während der Vertragsausführung auftreten, können in zwei Arten unterteilt werden: Formularfehler und Umgebungsfehler. Formularfehler werden mit speziellen Befehlen generiert: `error, warning, info` und wenn die eingebaute Funktion `err` ungleich *nil* zurückgibt.\n\nDie Needle-Sprache behandelt keine Ausnahmen. Jeder Fehler wird die Ausführung von Verträgen beenden. Da ein separater Stack und eine separate Struktur zum Speichern von Variablenwerten erstellt werden, wenn ein Vertrag ausgeführt wird, löscht der Golang-Garbage-Collection-Mechanismus diese Daten automatisch, wenn ein Vertrag ausgeführt wird.\n\n### Backus–Naur Form (BNF)\nIn der Informatik ist BNF eine Notationstechnik für kontextfreie Syntax und wird normalerweise verwendet, um die Syntax der beim Rechnen verwendeten Sprache zu beschreiben.\n\n* <decimal digit>\n')])])]),t("p",[e._v("'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <decimal number>\n")])])]),t("p",[t("decimal",{attrs:{digit:""}},[e._v(" {"),t("decimal",{attrs:{digit:""}},[e._v("}")])],1)],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <symbol code>\n")])])]),t("p",[e._v("'''"),t("any",{attrs:{symbol:""}},[e._v("'''")])],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <real number>\n")])])]),t("p",[e._v("['-'] ' |'[' |'\\' |']' |'_' |'|' |'}' | '{' | "),t("tabulation",[e._v(" | "),t("space",[e._v(" | "),t("newline")],1)],1)],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <symbol>\n")])])]),t("p",[t("decimal",{attrs:{digit:""}},[e._v(" | "),t("letter",[e._v(" | "),t("special",{attrs:{symbol:""}})],1)],1)],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <name>\n")])])]),t("p",[e._v("("),t("letter",[e._v(" |'"),t("em",[e._v("') {"),t("letter",[e._v(" |'")])],1),e._v("' | "),t("decimal",{attrs:{digit:""}},[e._v("}")])],1)],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n* <function name>\n")])])]),t("name",[e._v("\n```\n"),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" | |'!' |'#' | ... |'[' |']' | ...\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("{ |'\\\"' |'\\n' |'\\r'}\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'\"' {}'\"' |'\\`' {}'\\`'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'='\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'-'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'==' |'!=' |'>' |'<' |'<=' |'>=' |'&&' |'||' |'\\*' |'/' |'+ '|'-'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" | | \n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" {','}\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'(' []')'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" [{'.' '(' []')'}]\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" {}\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'{''}'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("( | | | | | break | continue | return)\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'if [else ]'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'while '\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'contract '{'[] {} [] []'}''\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'data '{' {} '}''\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" '\"'{}'\"'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'optional | image | file | hidden | text | polymap | map | address | signature:'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'conditions '\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'action '\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'func '('[{','}]')'[{}] [] '\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" {',' } \n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'.''('[{','}]')'\n")])])]),t("ul",[t("li",[e._v("")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("'var {','}'\n")])])])])],1)}),[],!1,null,null,null);n.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/29.d8f4cc81.js b/assets/js/29.8f845fe9.js similarity index 99% rename from assets/js/29.d8f4cc81.js rename to assets/js/29.8f845fe9.js index 38b8793..c1f6672 100644 --- a/assets/js/29.d8f4cc81.js +++ b/assets/js/29.8f845fe9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{412:function(e,n,t){"use strict";t.r(n);var a=t(51),i=Object(a.a)({},(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"tutorial-fur-die-anwendungsentwicklung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tutorial-fur-die-anwendungsentwicklung"}},[e._v("#")]),e._v(" Tutorial für die Anwendungsentwicklung")]),e._v(" "),t("p",[e._v("In diesem Abschnitt zeigen wir Ihnen, wie Sie eine einfache Anwendung im IBAX-Netzwerk entwickeln.")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#the-goal"}},[e._v("Das Ziel")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#part-1-die-unwelt"}},[e._v("Teil 1: Die Umwelt")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#teil-2-vertrag"}},[e._v("Teil 2: Vertrag")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#creator-konto"}},[e._v("Creator-Konto")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#neuer-antrag"}},[e._v("Neuer Antrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#neue-datenbanktabelle"}},[e._v("Neue Datenbanktabelle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#neuer-Vertrag"}},[e._v("Neuer Vertrag")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#vertragscode"}},[e._v("Vertragscode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vertrag-erstellen"}},[e._v("Vertrag erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vertragsname"}},[e._v("Vertragsname")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#daten"}},[e._v("Daten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#bedingungen"}},[e._v("Bedingungen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#aktion"}},[e._v("Aktion")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vollst%C3%A4ndiger-vertragscode"}},[e._v("Vollständiger Vertragscode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#speichern-und-ausf%C3%BChren"}},[e._v("Speichern und ausführen")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#teil-3-seite"}},[e._v("Teil 3: Seite")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#neues-Feld"}},[e._v("Neues Feld")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vertrag-aktualisieren"}},[e._v("Vertrag aktualisieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Seite"}},[e._v("Seite")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#designer-ansichten"}},[e._v("Designer-Ansichten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#entwickleransicht"}},[e._v("Entwickleransicht")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#daten-aus-der-datenbanktabelle-holen"}},[e._v("Daten aus der Datenbanktabelle holen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#seite-speichern"}},[e._v("Seite speichern")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Teil-4-Bewerbung"}},[e._v("Teil 4: Bewerbung")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Men%C3%BC"}},[e._v("Menü")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#einen-men%C3%BCpunkt-hinzuf%C3%BCgen"}},[e._v("Einen Menüpunkt hinzufügen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#neues-men%C3%BClement-testen"}},[e._v("Neues Menüelement testen")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#nachrict-senden"}},[e._v("Nachricht senden")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Formular"}},[e._v("Formular")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#formularnavigation"}},[e._v("Formularnavigation")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#navigationsschaltfl%C3%A4chen"}},[e._v("Navigationsschaltflächen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#variablen"}},[e._v("Variablen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#anzahl-der-eintr%C3%A4ge"}},[e._v("Anzahl der Einträge")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#tabellenoffset"}},[e._v("Tabellenoffset")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#schaltfl%C3%A4chencode"}},[e._v("Schaltflächencode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#seitenaktualisierung"}},[e._v("Seitenaktualisierung")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#schlussfolgerungen"}},[e._v("Schlussfolgerungen")])])])])]),e._v(" "),t("h2",{attrs:{id:"das-ziel"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#das-ziel"}},[e._v("#")]),e._v(" Das Ziel")]),e._v(" "),t("p",[e._v("Die Anwendung beginnt mit einfachen Funktionen, wird aber im Laufe des Tutorials immer komplexer.")]),e._v(" "),t("p",[e._v("In der endgültigen Version der Anwendung werden einige einfache Nachrichten (Strings) in einer Datenbanktabelle gespeichert, die die Zeitstempel und Kontokennungen der Absender enthält. Benutzer können die Nachrichtenliste anzeigen und eine neue Nachricht von der Anwendungsseite hinzufügen, auf die über das Menü des Ökosystems zugegriffen werden kann.")]),e._v(" "),t("h2",{attrs:{id:"teil-1-die-umwelt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#teil-1-die-umwelt"}},[e._v("#")]),e._v(" Teil 1: Die Umwelt")]),e._v(" "),t("p",[t("strong",[e._v("Weber")])]),e._v(" "),t("p",[e._v("Als einziger Client von IBAX stellt Weaver Funktionen für alle Benutzer und Ökosystemrollen bereit. Damit können Anwendungsentwickler ihre Anwendungen entwickeln und testen, Ökosystemadministratoren können ihre Ökosysteme verwalten, während Benutzer mit den Ökosystemen interagieren können.")]),e._v(" "),t("p",[e._v("In diesem Tutorial codieren Sie Verträge, Seitenvorlagen und führen alle anderen Aktionen in Weaver aus. Weaver bietet auch eine Möglichkeit, Vertragscodes wiederherzustellen, zu speichern und auszuführen, Datenstrukturen (Datenbanktabellen) zu verwalten, Zugriffsberechtigungen zuzuweisen und Anwendungen zu erstellen.")]),e._v(" "),t("p",[e._v("Jeder Knoten hat seine eigene Weaver-Instanz.")]),e._v(" "),t("h2",{attrs:{id:"teil-2-vertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#teil-2-vertrag"}},[e._v("#")]),e._v(" Teil 2: Vertrag")]),e._v(" "),t("p",[e._v("Ihre erste einfache Anwendung ist „Hello, World!“.")]),e._v(" "),t("blockquote",[t("p",[e._v("Hinweis")])]),e._v(" "),t("blockquote",[t("p",[e._v("In dieser Anwendung werden Zeichenfolgen in einer Datenbanktabelle gespeichert, und es gibt keine Benutzerseite.")])]),e._v(" "),t("h3",{attrs:{id:"creator-konto"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creator-konto"}},[e._v("#")]),e._v(" Creator-Konto")]),e._v(" "),t("p",[e._v("Konten mit der Entwicklerrolle werden die „Root“-Privilegien des Ökosystems zugewiesen. Standardmäßig kann diese Rolle auf alle Aktionen zugreifen. In einem neuen Ökosystem wird dem Erstellerkonto die Admin-Rolle zugewiesen, die Sie verwenden müssen, um größere Änderungen am Ökosystem vorzunehmen, z. B. das Erstellen neuer Anwendungen und Datenbanktabellen.")]),e._v(" "),t("p",[e._v("Melden Sie sich mit dem Erstellerkonto beim Ökosystem an.")]),e._v(" "),t("h3",{attrs:{id:"neue-bewerbung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#neue-bewerbung"}},[e._v("#")]),e._v(" Neue Bewerbung")]),e._v(" "),t("p",[e._v("Sobald Sie sich als Ersteller des Ökosystems angemeldet haben, können Sie eine neue Anwendung erstellen.")]),e._v(" "),t("p",[e._v("Erstellen Sie eine neue Anwendung:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Gehen Sie zur Registerkarte Entwickler;")])]),e._v(" "),t("li",[t("p",[e._v("Wählen Sie Anwendung im Menü auf der linken Seite;")])]),e._v(" "),t("li",[t("p",[e._v("Wählen Sie Neu auf der Anwendungsseite;")])]),e._v(" "),t("li",[t("p",[e._v("Geben Sie den Anwendungsnamen im Feld Name an;")])]),e._v(" "),t("li",[t("p",[e._v("Bedingungen auf "),t("code",[e._v("true")]),e._v(" setzen;")])])]),e._v(" "),t("p",[t("code",[e._v("true")]),e._v(" bedeutet, dass jeder Änderungen an der Anwendung vornehmen kann;")]),e._v(" "),t("p",[e._v("Eine weitere Option ist "),t("code",[e._v('ContractConditions("MainCondition")')]),e._v(", was bedeutet, dass niemand außer dem Ersteller Änderungen an der Anwendung vornehmen kann.")]),e._v(" "),t("ol",{attrs:{start:"6"}},[t("li",[e._v("Ihre Anwendung wird in der Anwendungsliste angezeigt, klicken Sie auf das Namensfeld einer bestimmten Anwendung, um sie zu aktivieren.")])]),e._v(" "),t("blockquote",[t("p",[e._v("Hinweis")])]),e._v(" "),t("blockquote",[t("p",[e._v("Sie können auf relevante Ressourcen zugreifen, indem Sie auf der Registerkarte „Entwickler“ auf eine Anwendung klicken, ohne Auswirkungen auf das Ökosystem. Egal für welche Sie sich entscheiden, alle Ökosystemanwendungen sind weiterhin verfügbar.")])]),e._v(" "),t("h3",{attrs:{id:"neue-datenbanktabelle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#neue-datenbanktabelle"}},[e._v("#")]),e._v(" Neue Datenbanktabelle")]),e._v(" "),t("p",[e._v("Erstellen Sie zum Speichern der Daten eine Datenbanktabelle für die Anwendung in Weaver.")]),e._v(" "),t("p",[e._v("Erstellen Sie eine Datentabelle:")]),e._v(" "),t("ol",[t("li",[e._v("Wählen Sie auf der Registerkarte „Entwickler“ Anwendung – Name > Datenbanktabelle;")])]),e._v(" "),t("p",[e._v("Hier werden alle Datenbanktabellen zur ausgewählten Anwendung angezeigt. Wenn die Liste leer ist, wurden noch keine Datenbanktabellen für Ihre Anwendung erstellt.")]),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[e._v("Klicken Sie auf Neu;")])]),e._v(" "),t("p",[e._v("Weaver zeigt Ihnen die Seite zum Erstellen einer neuen Datenbanktabelle.")]),e._v(" "),t("ol",{attrs:{start:"3"}},[t("li",[t("p",[e._v("Geben Sie den Namen im Feld Name an;\nIn diesem Tutorial lautet der Name der Datenbanktabelle "),t("code",[e._v("apptable")]),e._v(".")])]),e._v(" "),t("li",[t("p",[e._v("Fügen Sie die Spalte "),t("code",[e._v("message")]),e._v(" hinzu, legen Sie ihren Typ als "),t("code",[e._v("Text")]),e._v(" fest;")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Diese Tabelle muss zwei Spalten haben: `id` (vordefiniert) und `message`. Sie werden später weitere Spalten hinzufügen.\n")])])]),t("ol",{attrs:{start:"5"}},[t("li",[e._v("Setzen Sie in Bezug auf die Lese- und Schreibberechtigungen jedes Feld auf "),t("code",[e._v("true")]),e._v(";")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v('Dies ermöglicht es jedem, Einträge in die Datenbanktabelle einzufügen, zu aktualisieren, Spalten hinzuzufügen und Eintragsdaten zu lesen;\n\nOptional können Sie die Lese- und Schreibrechte für das Erstellerkonto reservieren. Setzen Sie in diesem Fall dieses Feld auf `ContractConditions("MainCondition")`.\n')])])]),t("h3",{attrs:{id:"neuer-vertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#neuer-vertrag"}},[e._v("#")]),e._v(" Neuer Vertrag")]),e._v(" "),t("h4",{attrs:{id:"vertragscode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertragscode"}},[e._v("#")]),e._v(" Vertragscode")]),e._v(" "),t("p",[e._v("Jeder Vertrag besteht aus drei Teilen. Weitere Einzelheiten finden Sie unter: "),t("RouterLink",{attrs:{to:"/de/topics/script.html#contract-structure"}},[e._v("Contract scructure")]),e._v("。")],1),e._v(" "),t("h4",{attrs:{id:"vertrag-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertrag-erstellen"}},[e._v("#")]),e._v(" Vertrag erstellen")]),e._v(" "),t("ol",[t("li",[e._v("Wählen Sie auf der Registerkarte „Entwickler“ Anwendung – Name > Vertrag;")])]),e._v(" "),t("p",[e._v("Hier werden alle Verträge im Zusammenhang mit der Bewerbung angezeigt. Bei Neuanmeldungen ist die Liste leer.")]),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[e._v("Klicken Sie auf Neu;")])]),e._v(" "),t("p",[e._v("Im Editor wird eine neue Vertragsvorlage angezeigt.")]),e._v(" "),t("p",[e._v("Eine leere Vertragsvorlage wird wie folgt angezeigt:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("contract ... {\n data {\n\n }\n conditions {\n\n }\n action {\n\n }\n}\n")])])]),t("h4",{attrs:{id:"vertragsname"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertragsname"}},[e._v("#")]),e._v(" Vertragsname")]),e._v(" "),t("p",[e._v("Bitte geben Sie zunächst den Vertragsnamen an.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" contract AppContract {\n\n }\n")])])]),t("h4",{attrs:{id:"daten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daten"}},[e._v("#")]),e._v(" Daten")]),e._v(" "),t("p",[e._v("Füllen Sie den Abschnitt "),t("code",[e._v("data")]),e._v(" aus.")]),e._v(" "),t("p",[e._v("Im folgenden Beispiel bezieht sich "),t("code",[e._v("message")]),e._v(" auf den Variablennamen, während "),t("code",[e._v("string")]),e._v(" auf den Variablentyp verweist.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" data {\n Message string\n }\n")])])]),t("h4",{attrs:{id:"bedingungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bedingungen"}},[e._v("#")]),e._v(" Bedingungen")]),e._v(" "),t("p",[e._v('Füllen Sie den Abschnitt "'),t("code",[e._v("condition")]),e._v('" aus. Eine einfache Überprüfungsbedingung besteht darin, leere Zeichenfolgen zu vermeiden. Wenn die Länge von '),t("code",[e._v("Message")]),e._v(" "),t("code",[e._v("0")]),e._v(" ist, wird eine vordefinierte Warnmeldung bei der Ausführung des Vertrags ausgelöst.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n}\n')])])]),t("h4",{attrs:{id:"handlung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#handlung"}},[e._v("#")]),e._v(" Handlung")]),e._v(" "),t("p",[e._v("Füllen Sie den Abschnitt "),t("code",[e._v("action")]),e._v(" aus. Eine einfache Aktion besteht darin, "),t("code",[e._v("Message")]),e._v(" in die Datentabelle zu schreiben.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' action {\n DBInsert("apptable", {message: $Message})\n }\n')])])]),t("h4",{attrs:{id:"vollstandiger-vertragscode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vollstandiger-vertragscode"}},[e._v("#")]),e._v(" Vollständiger Vertragscode")]),e._v(" "),t("p",[e._v("Der vollständige Vertragscode wird unten angezeigt.")]),e._v(" "),t("p",[e._v("Alle Verträge in IBAX werden so aufgebaut, einschließlich der Abschnitte "),t("code",[e._v("data")]),e._v(", "),t("code",[e._v("condition")]),e._v(" und "),t("code",[e._v("action")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('contract AppContract {\n data {\n Message string\n }\n conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n }\n action {\n DBInsert("apptable", {message: $Message})\n }\n}\n')])])]),t("h4",{attrs:{id:"speichern-und-ausfuhren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#speichern-und-ausfuhren"}},[e._v("#")]),e._v(" Speichern und ausführen")]),e._v(" "),t("p",[e._v("Jetzt bereiten wir uns darauf vor, den Vertrag zu testen:")]),e._v(" "),t("ol",[t("li",[e._v("Klicken Sie im Menü des Editors auf Speichern;")])]),e._v(" "),t("p",[e._v("Dadurch wird der Vertragscode aktualisiert und die aktualisierte Version steht allen Netzwerkknoten zur Verfügung.")]),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[e._v("Klicken Sie im Menü des Editors auf Ausführen;")])]),e._v(" "),t("p",[e._v("Dadurch wird die Seite Vertrag ausführen angezeigt.")]),e._v(" "),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Geben Sie auf der Seite Vertrag ausführen die Eingabeparameter des Vertrags ein;")])]),e._v(" "),t("p",[e._v("Da dieser Vertrag einen Parameter "),t("code",[e._v("Message")]),e._v(" hat, setzen Sie "),t("code",[e._v("Message")]),e._v(" im feld schlüssel und "),t("code",[e._v("Hello, World")]),e._v(" im feld wert.")]),e._v(" "),t("ol",{attrs:{start:"4"}},[t("li",[e._v("Click run.")])]),e._v(" "),t("p",[e._v("The result will be displayed at the right.")]),e._v(" "),t("p",[e._v("If successfully added some strings, then, the result will contain the block ID and result code to introduce the change of transactions.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{\n "block": "31",\n "result": null\n}\n')])])]),t("h2",{attrs:{id:"teil-3-seite"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#teil-3-seite"}},[e._v("#")]),e._v(" Teil 3: Seite")]),e._v(" "),t("p",[e._v("Wenn der Vertrag in Kraft tritt, ist es an der Zeit, ihn um etwas Sinnvolles zu erweitern. In diesem Teil implementieren Sie die Benutzeroberfläche und andere Funktionen.")]),e._v(" "),t("p",[e._v("Klasse")]),e._v(" "),t("p",[e._v("In dieser Anwendung werden Zeichenfolgen wie Einträge in einem Protokoll in einer Datenbanktabelle gespeichert. Jede Zeichenfolge hat einen Autor und einen Zeitstempel.")]),e._v(" "),t("p",[e._v("Benutzer können die Liste der auf der Anwendungsseite gespeicherten Zeichenfolgen anzeigen, die dann als einfaches Formular angezeigt wird.")]),e._v(" "),t("h3",{attrs:{id:"neues-feld"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#neues-feld"}},[e._v("#")]),e._v(" Neues Feld")]),e._v(" "),t("p",[e._v("Bearbeiten Sie wie zuvor die Datenbanktabelle auf der Registerkarte Entwickler > Anwendung - Name > Seite Datenbanktabelle;")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Fügen Sie die folgenden Felder in "),t("code",[e._v("apptable")]),e._v(" hinzu:")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("author")]),e._v(", Feldtyp "),t("code",[e._v("number")]),e._v(", setze Change auf "),t("code",[e._v("true")]),e._v(";")])]),e._v(" "),t("li",[t("p",[e._v("Dieses Feld speichert die Kennung des Autorenkontos.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("timestamp")]),e._v(" , Feldtyp "),t("code",[e._v("Date/Time")]),e._v(", setze Change auf "),t("code",[e._v("true")]),e._v(".")])])]),e._v(" "),t("h3",{attrs:{id:"aktualisieren-sie-den-vertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#aktualisieren-sie-den-vertrag"}},[e._v("#")]),e._v(" Aktualisieren Sie den Vertrag")]),e._v(" "),t("p",[e._v("Wir werden den Vertragscode aktualisieren, um die Autoren-ID und den Zeitstempel zu verarbeiten.")]),e._v(" "),t("p",[e._v("Die Autoren-ID ist die Konto-ID des Ökosystems. Der Zeitstempel ist das Datum und die Uhrzeit der Vertragsausführung im Unix-Zeitformat.")]),e._v(" "),t("p",[e._v("Da beide Werte von den "),t("RouterLink",{attrs:{to:"/de/topics/script.html#variables"}},[e._v("Predefined variables")]),e._v(" bereitgestellt werden und die vordefinierten Variablen nicht eingegeben oder überprüft werden müssen, können sie nur im Aktionsteil aktualisiert werden.")],1),e._v(" "),t("p",[e._v("Aktualisieren Sie den Vertrag, um die Autoren-ID und den Zeitstempel in die Datenbanktabelle zu schreiben, wenn Sie eine Nachricht hinzufügen, wobei die Autoren-ID durch "),t("code",[e._v("$key_id")]),e._v(" definiert wird, während der Zeitstempel durch "),t("code",[e._v("$time")]),e._v(" definiert wird.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('action {\n DBInsert("apptable", {message: $Message, author: $key_id, timestamp: $time})\n}\n')])])]),t("h3",{attrs:{id:"buchseite"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#buchseite"}},[e._v("#")]),e._v(" Buchseite")]),e._v(" "),t("p",[e._v("Bei der Anwendungsseite handelt es sich um eine einfache Seite, auf der die in der Datenbanktabelle gespeicherten Nachrichten angezeigt werden.")]),e._v(" "),t("p",[e._v("Wie alle anderen Ressourcen können Sie die UI-Seite in Weaver erstellen:")]),e._v(" "),t("ol",[t("li",[e._v("Navigieren Sie zur Registerkarte Entwickler, klicken Sie auf Anwendung – Name > Seite;")])]),e._v(" "),t("p",[e._v("2.Klicken Sie auf Neu;\nDer visuelle Designer wird in einem neuen Tab geöffnet.")]),e._v(" "),t("h4",{attrs:{id:"designeransichten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#designeransichten"}},[e._v("#")]),e._v(" Designeransichten")]),e._v(" "),t("p",[e._v("Die Standardseite ist leer. Sie können die vordefinierte Struktur verwenden, um die Seite schnell auszufüllen.")]),e._v(" "),t("p",[e._v("Erstellen Sie eine einfache Tabelle:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Klicken Sie in der Ansichtsauswahl rechts auf Designer;\nDie Ansicht wird auf den visuellen Designer umgeschaltet.")])]),e._v(" "),t("li",[t("p",[e._v("Wählen Sie im Menü links Tabelle mit Kopfzeile und ziehen Sie sie auf die Seite.\nAuf der Seite wird eine Tabelle mit mehreren Elementen angezeigt.")])])]),e._v(" "),t("h4",{attrs:{id:"entwickleransicht"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#entwickleransicht"}},[e._v("#")]),e._v(" Entwickleransicht")]),e._v(" "),t("p",[e._v("Da die Benutzerseite von IBAX mit einer "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html"}},[e._v("Template Language")]),e._v(" codiert ist, wechseln Sie bitte beim Schreiben des Seitencodes in die Entwickleransicht.")],1),e._v(" "),t("p",[e._v("Wechseln Sie in die Entwickleransicht.")]),e._v(" "),t("ol",[t("li",[e._v("Klicken Sie in der Ansichtsauswahl rechts auf Entwickler.")])]),e._v(" "),t("p",[e._v("Die Ansicht wird auf den Editor mit einem Reiter umgeschaltet, der den Seitencode enthält.")]),e._v(" "),t("h4",{attrs:{id:"daten-aus-der-datenbanktabelle-holen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daten-aus-der-datenbanktabelle-holen"}},[e._v("#")]),e._v(" Daten aus der Datenbanktabelle holen")]),e._v(" "),t("p",[e._v("Bisher nichts mit der Seitenvorlage gemacht. Als Nächstes werden wir den Code aktualisieren, damit die Seite Daten von "),t("code",[e._v("apptable")]),e._v(" anzeigen kann.")]),e._v(" "),t("ol",[t("li",[e._v("Anfordern von Daten aus der Datenbanktabelle mit der Funktion "),t("RouterLink",{attrs:{to:"/de/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(";")],1)]),e._v(" "),t("p",[e._v("Im folgenden Beispiel wird dieser Funktionsaufruf verwendet, um Daten aus "),t("code",[e._v("apptable")]),e._v(" abzurufen. Die Daten werden in die Quelle "),t("code",[e._v("src_table")]),e._v(" gestellt und nach dem Zeitstempelfeld sortiert. "),t("code",[e._v("src_table")]),e._v(" wird später als Datenquelle für die Seite in der Tabellenansicht verwendet.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n')])])]),t("ol",{attrs:{start:"2"}},[t("li",[e._v("Um die Daten aus "),t("code",[e._v("src_table")]),e._v(" anzuzeigen, geben Sie diese als Datenquelle und den Header in der "),t("code",[e._v("Table")]),e._v("-Funktion an.")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n')])])]),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Klicken Sie rechts in der Ansichtsauswahl auf Vorschau, um zu prüfen, ob die Daten korrekt angezeigt werden.")])]),e._v(" "),t("h4",{attrs:{id:"ganzseitiger-code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ganzseitiger-code"}},[e._v("#")]),e._v(" Ganzseitiger Code")]),e._v(" "),t("p",[e._v("Das Folgende ist der ganzseitige Code für diesen Teil. Diese Basisseite wird später erweitert.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n\nDiv(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n Button(Class: btn btn-primary, Contract: ContractName, Body: More)\n }\n}\n\n')])])]),t("h4",{attrs:{id:"seite-speichern"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#seite-speichern"}},[e._v("#")]),e._v(" Seite speichern")]),e._v(" "),t("p",[e._v("Klicken Sie auf Speichern, um die Seite zu speichern:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Geben Sie "),t("code",[e._v("AppPage")]),e._v(" oder einen anderen Namen für die Seite im Feld „Seitenname“ an;")])]),e._v(" "),t("li",[t("p",[e._v("Wählen Sie "),t("code",[e._v("default_menu")]),e._v(" im Menü;")])]),e._v(" "),t("li",[t("p",[e._v("Bedingungen auf "),t("code",[e._v("true")]),e._v(" setzen;")])]),e._v(" "),t("li",[t("p",[e._v("Klicken Sie auf OK.")])])]),e._v(" "),t("h2",{attrs:{id:"teil-4-bewerbung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#teil-4-bewerbung"}},[e._v("#")]),e._v(" Teil 4: Bewerbung")]),e._v(" "),t("p",[e._v("In den vorherigen Abschnitten haben Sie einen Vertrag, eine Tabelle zum Speichern von Daten und eine einfache UI-Seite zum Anzeigen dieser Daten erstellt.")]),e._v(" "),t("p",[e._v("In diesem Teil werden Sie die Anwendung fertigstellen, damit ihr Aussehen und ihre Aktionen denen einer tatsächlichen ähneln.")]),e._v(" "),t("h3",{attrs:{id:"speisekarte"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#speisekarte"}},[e._v("#")]),e._v(" Speisekarte")]),e._v(" "),t("p",[e._v("Die Seite muss mit einem Menü verknüpft sein, z. B. ist "),t("code",[e._v("default_page")]),e._v(", das auf der Registerkarte „Startseite“ angezeigt wird, mit dem standardmäßigen Ökosystemmenü "),t("code",[e._v("default_menu")]),e._v(" verknüpft.")]),e._v(" "),t("p",[e._v("Da dieses Anwendungs-Tutorial sehr einfach ist (nur eine Seite hat), muss dafür kein separates Menü erstellt werden. Der neue Menüpunkt im Standardmenü genügt.")]),e._v(" "),t("blockquote",[t("p",[e._v("Hinweis")])]),e._v(" "),t("blockquote",[t("p",[e._v("Sie können das Seitenmenü definieren, indem Sie die Seiteneigenschaften auf der Registerkarte Entwickler > Anwendung - Name > Seite bearbeiten. Wenn Ihre App beispielsweise mehrere Seiten hat, müssen Sie möglicherweise ein Menü erstellen, um zwischen diesen Seiten zu navigieren, und es allen Seiten der App zuweisen.")])]),e._v(" "),t("h4",{attrs:{id:"menupunkt-hinzufugen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menupunkt-hinzufugen"}},[e._v("#")]),e._v(" Menüpunkt hinzufügen")]),e._v(" "),t("p",[e._v("Wie alle anderen Ressourcen können Menüs in Weaver erstellt und bearbeitet werden:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Navigieren Sie zur Registerkarte Entwickler > Menü;")])]),e._v(" "),t("li",[t("p",[e._v("Klicken Sie auf den Namen des Eintrags "),t("code",[e._v("default_menu")]),e._v(";")])])]),e._v(" "),t("p",[e._v("Im Editor wird ein neuer Tab geöffnet.")]),e._v(" "),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Fügen Sie am Ende der Vorlage einen neuen Menüpunkt hinzu, der zum Öffnen der Anwendungsseite verlinkt wird und dessen Symbol aus dem Symbolsatz "),t("a",{attrs:{href:"https://fontawesome.com/icons",target:"_blank",rel:"noopener noreferrer"}},[e._v("FontAwesome"),t("OutboundLink")],1),e._v(" stammt.")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' MenuItem(Title:Messages, Page:AppPage, Icon:"fa fa-envelope")\n')])])]),t("ol",{attrs:{start:"4"}},[t("li",[e._v("Klicken Sie auf Speichern.")])]),e._v(" "),t("h4",{attrs:{id:"testen-sie-das-neue-menuelement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testen-sie-das-neue-menuelement"}},[e._v("#")]),e._v(" Testen Sie das neue Menüelement")]),e._v(" "),t("p",[e._v("Prüfen Sie, ob der neue Menüpunkt gültig ist:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Öffnen Sie die Registerkarte Startseite;")])]),e._v(" "),t("li",[t("p",[e._v("Klicken Sie im Menü auf Aktualisieren;")]),e._v(" "),t("p",[e._v("Ein Eintrag mit einer Kopfzeile von Nachrichten wird angezeigt;")])]),e._v(" "),t("li",[t("p",[e._v("Klicken Sie auf Nachrichten.")]),e._v(" "),t("p",[e._v("Die Bewerbungsseite wird geöffnet.")])])]),e._v(" "),t("h3",{attrs:{id:"eine-nachricht-schicken"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#eine-nachricht-schicken"}},[e._v("#")]),e._v(" Eine Nachricht schicken")]),e._v(" "),t("p",[e._v("Die Schaltflächen in Logicor können je nach Parameter zum Ausführen von Verträgen und Aufrufen von Seiten verwendet werden.\nDie Funktion "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#button"}},[e._v("Button")]),e._v(" hat zwei Vertragsparameter:")],1),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Contract")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Name des aktivierten Vertrags.\n")])])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("Eingabeparameter des Vertrags.")])])]),e._v(" "),t("h4",{attrs:{id:"form"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),t("p",[e._v("Um Daten an den Vertrag zu senden, fügen Sie auf der Antragsseite ein Formular hinzu, das über ein Eingabefeld für eine Nachricht und einen Button zur Aktivierung des Vertrags AppContract verfügen muss.")]),e._v(" "),t("p",[e._v("Im Folgenden finden Sie ein Beispiel für diese Art von Formular. Es ist in einem eigenen "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#div"}},[e._v("Div")]),e._v(" verschachtelt. Platzieren Sie es nach dem Div-Element, das die Formularansicht enthält, wodurch definiert wird, dass das Feld "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#input"}},[e._v("Input")]),e._v(" einen vordefinierten Namen "),t("code",[e._v("message_input")]),e._v(" hat. Die Schaltfläche verwendet diesen Namen, um den Wert von "),t("code",[e._v("message")]),e._v(" an den Vertrag zu senden. Schließlich wird die Funktion "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#calling-contracts"}},[e._v("Val")]),e._v(" verwendet, um den Wert des Eingabefelds zu erhalten.")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)")\n }\n}\n')])])]),t("p",[e._v("Möglicherweise stellen Sie fest, dass das Formular beim Testen dieser neuen Funktion durch Senden einer Nachricht nicht aktualisiert wird. Dies wird in "),t("a",{attrs:{href:"#page-refreshing"}},[e._v("Seitenaktualisierung")]),e._v(" eingeführt.")]),e._v(" "),t("h3",{attrs:{id:"formularnavigation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#formularnavigation"}},[e._v("#")]),e._v(" Formularnavigation")]),e._v(" "),t("p",[e._v("In der Standardansicht kann das Formular auf der Seite nur 25 Einträge auf der ersten Seite anzeigen. Daher können Sie einige einfache Schaltflächen hinzufügen, um Benutzer zu allen Formulareinträgen zu navigieren.")]),e._v(" "),t("h4",{attrs:{id:"navigationstasten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigationstasten"}},[e._v("#")]),e._v(" Navigationstasten")]),e._v(" "),t("p",[e._v("Es wird zwei Navigationsschaltflächen geben, und jede von ihnen könnte die Anwendungsseite neu laden und die Parameter an sie übergeben.")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Die Schaltfläche Zurück zeigt die ersten 25 Einträge an. Wenn keine weiteren Einträge vorhanden sind, wird die Schaltfläche nicht angezeigt;")])]),e._v(" "),t("li",[t("p",[e._v("Die Schaltfläche Weiter zeigt die nächsten 25 Einträge an. Wenn keine weiteren Einträge vorhanden sind, wird die Schaltfläche nicht angezeigt.")])])]),e._v(" "),t("h4",{attrs:{id:"variablen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#variablen"}},[e._v("#")]),e._v(" Variablen")]),e._v(" "),t("p",[e._v("Die Navigationsschaltflächen erfordern zwei Variablen zum Speichern der Tabellenansichtszustände:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("#table_view_offset#")])])]),e._v(" "),t("p",[e._v("Diese Variable speichert den Offset der aktuellen Tabellenansicht.")]),e._v(" "),t("p",[e._v("Die Navigationsschaltflächen übergeben es als Parameter, wenn die Seite neu geladen wird.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("#record_count#")])])]),e._v(" "),t("p",[e._v("Diese Variable speichert die Gesamtzahl der Einträge in der Tabelle.")]),e._v(" "),t("p",[e._v("Der Wert wird berechnet.")]),e._v(" "),t("h4",{attrs:{id:"anzahl-der-eintrage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anzahl-der-eintrage"}},[e._v("#")]),e._v(" Anzahl der Einträge")]),e._v(" "),t("p",[e._v("Um "),t("code",[e._v("#record_count#")]),e._v(" zu zählen, ändern Sie bitte den bestehenden Funktionsaufruf "),t("RouterLink",{attrs:{to:"/de/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(". Die im "),t("code",[e._v(".count()")]),e._v("-Aufruf angegebene Variable speichert die Eintragsanzahl.")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count)\n')])])]),t("h4",{attrs:{id:"tabellen-offset"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tabellen-offset"}},[e._v("#")]),e._v(" Tabellen-Offset")]),e._v(" "),t("p",[e._v("Der Offset der Tabellenansicht muss beim Öffnen der Seite an die Seite übergeben werden. Wenn "),t("code",[e._v("#table_view_offset#")]),e._v(" keinen Wert bekommt, setzen Sie ihn auf 0.")]),e._v(" "),t("p",[e._v("Fügen Sie oben auf der Seite den folgenden Code hinzu.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(GetVar(table_view_offset)){\n\n}.Else{\n SetVar(table_view_offset, 0)\n}\n")])])]),t("p",[e._v("Ändern Sie den Funktionsaufruf "),t("RouterLink",{attrs:{to:"/de/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" erneut. Dieses Mal muss es den neuen Offset der Tabellenansicht verwenden.")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n')])])]),t("h4",{attrs:{id:"tastencode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tastencode"}},[e._v("#")]),e._v(" Tastencode")]),e._v(" "),t("p",[e._v("Suchen Sie den Funktionsaufruf "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#div"}},[e._v("Div")]),e._v(", der die Fußzeile definiert: "),t("code",[e._v("Div(Class:panel-footer text-right)")]),e._v(". Fügen Sie den Schaltflächencode hinzu.")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(Class: panel-footer text-right) {\n}\n")])])]),t("p",[e._v("Die Schaltfläche "),t("em",[e._v("Zurück")]),e._v(" wird nur angezeigt, wenn mindestens ein Weiter zum Zurückkehren vorhanden ist. Beim Hinzufügen einer Schaltfläche wird der neue Tabellenansichts-Offset "),t("code",[e._v("offset_ previous")]),e._v(" der Seite berechnet. Die Parameter werden an "),t("code",[e._v("PageParams")]),e._v(" der erneut geöffneten Seite übergeben.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n}\n')])])]),t("p",[e._v("Die Schaltfläche Weiter wird nur angezeigt, wenn die Gesamtzahl der Datensätze größer ist als die auf der Seite angezeigte Zahl. Wenn eine Schaltfläche hinzugefügt wird, wird der neue Tabellenansichts-Offset "),t("code",[e._v("offset_next")]),e._v(" der Seite berechnet. Die Parameter werden an "),t("code",[e._v("PageParams")]),e._v(" der erneut geöffneten Seite übergeben.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n}\n')])])]),t("p",[e._v("Nachdem Sie diese Schaltflächen hinzugefügt haben, speichern Sie die Seite und testen Sie sie über das Menüelement Startseite > Nachrichten.")]),e._v(" "),t("h4",{attrs:{id:"seite-wird-aktualisiert"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#seite-wird-aktualisiert"}},[e._v("#")]),e._v(" Seite wird aktualisiert")]),e._v(" "),t("p",[e._v("Die letzte zu implementierende Funktion ist die automatische Aktualisierung der Tabelle auf der Seite. Wenn Benutzer eine neue Nachricht senden, muss diese in der Tabelle angezeigt werden.")]),e._v(" "),t("p",[e._v("Neben der Vertragsabwicklung können Sie auch über die Schaltfläche Senden die aktuelle Seite erneut öffnen, um dasselbe zu erreichen. "),t("code",[e._v("#table_view_offset#")]),e._v(" muss unverändert an die Seite übergeben werden.")]),e._v(" "),t("p",[e._v("Fügen Sie „Page“ und "),t("code",[e._v("PageParams")]),e._v(" zur Schaltfläche „Senden“ hinzu. Der Code lautet wie folgt:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n')])])]),t("h3",{attrs:{id:"vollstandiger-seitencode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vollstandiger-seitencode"}},[e._v("#")]),e._v(" Vollständiger Seitencode")]),e._v(" "),t("p",[e._v("Dieser Teil beschreibt viele Änderungen an der Anwendungsseite. Das Folgende ist der vollständige Code der Anwendungsseite.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('If(GetVar(table_view_offset)){\n}.Else{\n SetVar(table_view_offset, 0)\n}\nDBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n Div(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n }\n If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n }\n }\n }\n Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n }\n}\n')])])]),t("h2",{attrs:{id:"schlussfolgerungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#schlussfolgerungen"}},[e._v("#")]),e._v(" Schlussfolgerungen")]),e._v(" "),t("p",[e._v("Anstatt andere wichtige Themen für Anwendungsentwickler zu erläutern, wie z. B. Layoutstile, Verwaltung von Zugriffsberechtigungen und Interaktion zwischen Anwendungen und Ressourcen, führt dieses Tutorial ein, wie eine grundlegende Anwendung für ein Ökosystem erstellt wird. Weitere Informationen zu diesen fortgeschrittenen Themen finden Sie in anderen relevanten Dokumenten.")])])}),[],!1,null,null,null);n.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{409:function(e,n,t){"use strict";t.r(n);var a=t(51),i=Object(a.a)({},(function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"tutorial-fur-die-anwendungsentwicklung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tutorial-fur-die-anwendungsentwicklung"}},[e._v("#")]),e._v(" Tutorial für die Anwendungsentwicklung")]),e._v(" "),t("p",[e._v("In diesem Abschnitt zeigen wir Ihnen, wie Sie eine einfache Anwendung im IBAX-Netzwerk entwickeln.")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#the-goal"}},[e._v("Das Ziel")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#part-1-die-unwelt"}},[e._v("Teil 1: Die Umwelt")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#teil-2-vertrag"}},[e._v("Teil 2: Vertrag")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#creator-konto"}},[e._v("Creator-Konto")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#neuer-antrag"}},[e._v("Neuer Antrag")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#neue-datenbanktabelle"}},[e._v("Neue Datenbanktabelle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#neuer-Vertrag"}},[e._v("Neuer Vertrag")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#vertragscode"}},[e._v("Vertragscode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vertrag-erstellen"}},[e._v("Vertrag erstellen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vertragsname"}},[e._v("Vertragsname")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#daten"}},[e._v("Daten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#bedingungen"}},[e._v("Bedingungen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#aktion"}},[e._v("Aktion")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vollst%C3%A4ndiger-vertragscode"}},[e._v("Vollständiger Vertragscode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#speichern-und-ausf%C3%BChren"}},[e._v("Speichern und ausführen")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#teil-3-seite"}},[e._v("Teil 3: Seite")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#neues-Feld"}},[e._v("Neues Feld")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#vertrag-aktualisieren"}},[e._v("Vertrag aktualisieren")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Seite"}},[e._v("Seite")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#designer-ansichten"}},[e._v("Designer-Ansichten")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#entwickleransicht"}},[e._v("Entwickleransicht")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#daten-aus-der-datenbanktabelle-holen"}},[e._v("Daten aus der Datenbanktabelle holen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#seite-speichern"}},[e._v("Seite speichern")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#Teil-4-Bewerbung"}},[e._v("Teil 4: Bewerbung")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Men%C3%BC"}},[e._v("Menü")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#einen-men%C3%BCpunkt-hinzuf%C3%BCgen"}},[e._v("Einen Menüpunkt hinzufügen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#neues-men%C3%BClement-testen"}},[e._v("Neues Menüelement testen")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#nachrict-senden"}},[e._v("Nachricht senden")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#Formular"}},[e._v("Formular")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#formularnavigation"}},[e._v("Formularnavigation")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#navigationsschaltfl%C3%A4chen"}},[e._v("Navigationsschaltflächen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#variablen"}},[e._v("Variablen")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#anzahl-der-eintr%C3%A4ge"}},[e._v("Anzahl der Einträge")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#tabellenoffset"}},[e._v("Tabellenoffset")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#schaltfl%C3%A4chencode"}},[e._v("Schaltflächencode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#seitenaktualisierung"}},[e._v("Seitenaktualisierung")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#schlussfolgerungen"}},[e._v("Schlussfolgerungen")])])])])]),e._v(" "),t("h2",{attrs:{id:"das-ziel"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#das-ziel"}},[e._v("#")]),e._v(" Das Ziel")]),e._v(" "),t("p",[e._v("Die Anwendung beginnt mit einfachen Funktionen, wird aber im Laufe des Tutorials immer komplexer.")]),e._v(" "),t("p",[e._v("In der endgültigen Version der Anwendung werden einige einfache Nachrichten (Strings) in einer Datenbanktabelle gespeichert, die die Zeitstempel und Kontokennungen der Absender enthält. Benutzer können die Nachrichtenliste anzeigen und eine neue Nachricht von der Anwendungsseite hinzufügen, auf die über das Menü des Ökosystems zugegriffen werden kann.")]),e._v(" "),t("h2",{attrs:{id:"teil-1-die-umwelt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#teil-1-die-umwelt"}},[e._v("#")]),e._v(" Teil 1: Die Umwelt")]),e._v(" "),t("p",[t("strong",[e._v("Weber")])]),e._v(" "),t("p",[e._v("Als einziger Client von IBAX stellt Weaver Funktionen für alle Benutzer und Ökosystemrollen bereit. Damit können Anwendungsentwickler ihre Anwendungen entwickeln und testen, Ökosystemadministratoren können ihre Ökosysteme verwalten, während Benutzer mit den Ökosystemen interagieren können.")]),e._v(" "),t("p",[e._v("In diesem Tutorial codieren Sie Verträge, Seitenvorlagen und führen alle anderen Aktionen in Weaver aus. Weaver bietet auch eine Möglichkeit, Vertragscodes wiederherzustellen, zu speichern und auszuführen, Datenstrukturen (Datenbanktabellen) zu verwalten, Zugriffsberechtigungen zuzuweisen und Anwendungen zu erstellen.")]),e._v(" "),t("p",[e._v("Jeder Knoten hat seine eigene Weaver-Instanz.")]),e._v(" "),t("h2",{attrs:{id:"teil-2-vertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#teil-2-vertrag"}},[e._v("#")]),e._v(" Teil 2: Vertrag")]),e._v(" "),t("p",[e._v("Ihre erste einfache Anwendung ist „Hello, World!“.")]),e._v(" "),t("blockquote",[t("p",[e._v("Hinweis")])]),e._v(" "),t("blockquote",[t("p",[e._v("In dieser Anwendung werden Zeichenfolgen in einer Datenbanktabelle gespeichert, und es gibt keine Benutzerseite.")])]),e._v(" "),t("h3",{attrs:{id:"creator-konto"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creator-konto"}},[e._v("#")]),e._v(" Creator-Konto")]),e._v(" "),t("p",[e._v("Konten mit der Entwicklerrolle werden die „Root“-Privilegien des Ökosystems zugewiesen. Standardmäßig kann diese Rolle auf alle Aktionen zugreifen. In einem neuen Ökosystem wird dem Erstellerkonto die Admin-Rolle zugewiesen, die Sie verwenden müssen, um größere Änderungen am Ökosystem vorzunehmen, z. B. das Erstellen neuer Anwendungen und Datenbanktabellen.")]),e._v(" "),t("p",[e._v("Melden Sie sich mit dem Erstellerkonto beim Ökosystem an.")]),e._v(" "),t("h3",{attrs:{id:"neue-bewerbung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#neue-bewerbung"}},[e._v("#")]),e._v(" Neue Bewerbung")]),e._v(" "),t("p",[e._v("Sobald Sie sich als Ersteller des Ökosystems angemeldet haben, können Sie eine neue Anwendung erstellen.")]),e._v(" "),t("p",[e._v("Erstellen Sie eine neue Anwendung:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Gehen Sie zur Registerkarte Entwickler;")])]),e._v(" "),t("li",[t("p",[e._v("Wählen Sie Anwendung im Menü auf der linken Seite;")])]),e._v(" "),t("li",[t("p",[e._v("Wählen Sie Neu auf der Anwendungsseite;")])]),e._v(" "),t("li",[t("p",[e._v("Geben Sie den Anwendungsnamen im Feld Name an;")])]),e._v(" "),t("li",[t("p",[e._v("Bedingungen auf "),t("code",[e._v("true")]),e._v(" setzen;")])])]),e._v(" "),t("p",[t("code",[e._v("true")]),e._v(" bedeutet, dass jeder Änderungen an der Anwendung vornehmen kann;")]),e._v(" "),t("p",[e._v("Eine weitere Option ist "),t("code",[e._v('ContractConditions("MainCondition")')]),e._v(", was bedeutet, dass niemand außer dem Ersteller Änderungen an der Anwendung vornehmen kann.")]),e._v(" "),t("ol",{attrs:{start:"6"}},[t("li",[e._v("Ihre Anwendung wird in der Anwendungsliste angezeigt, klicken Sie auf das Namensfeld einer bestimmten Anwendung, um sie zu aktivieren.")])]),e._v(" "),t("blockquote",[t("p",[e._v("Hinweis")])]),e._v(" "),t("blockquote",[t("p",[e._v("Sie können auf relevante Ressourcen zugreifen, indem Sie auf der Registerkarte „Entwickler“ auf eine Anwendung klicken, ohne Auswirkungen auf das Ökosystem. Egal für welche Sie sich entscheiden, alle Ökosystemanwendungen sind weiterhin verfügbar.")])]),e._v(" "),t("h3",{attrs:{id:"neue-datenbanktabelle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#neue-datenbanktabelle"}},[e._v("#")]),e._v(" Neue Datenbanktabelle")]),e._v(" "),t("p",[e._v("Erstellen Sie zum Speichern der Daten eine Datenbanktabelle für die Anwendung in Weaver.")]),e._v(" "),t("p",[e._v("Erstellen Sie eine Datentabelle:")]),e._v(" "),t("ol",[t("li",[e._v("Wählen Sie auf der Registerkarte „Entwickler“ Anwendung – Name > Datenbanktabelle;")])]),e._v(" "),t("p",[e._v("Hier werden alle Datenbanktabellen zur ausgewählten Anwendung angezeigt. Wenn die Liste leer ist, wurden noch keine Datenbanktabellen für Ihre Anwendung erstellt.")]),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[e._v("Klicken Sie auf Neu;")])]),e._v(" "),t("p",[e._v("Weaver zeigt Ihnen die Seite zum Erstellen einer neuen Datenbanktabelle.")]),e._v(" "),t("ol",{attrs:{start:"3"}},[t("li",[t("p",[e._v("Geben Sie den Namen im Feld Name an;\nIn diesem Tutorial lautet der Name der Datenbanktabelle "),t("code",[e._v("apptable")]),e._v(".")])]),e._v(" "),t("li",[t("p",[e._v("Fügen Sie die Spalte "),t("code",[e._v("message")]),e._v(" hinzu, legen Sie ihren Typ als "),t("code",[e._v("Text")]),e._v(" fest;")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Diese Tabelle muss zwei Spalten haben: `id` (vordefiniert) und `message`. Sie werden später weitere Spalten hinzufügen.\n")])])]),t("ol",{attrs:{start:"5"}},[t("li",[e._v("Setzen Sie in Bezug auf die Lese- und Schreibberechtigungen jedes Feld auf "),t("code",[e._v("true")]),e._v(";")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v('Dies ermöglicht es jedem, Einträge in die Datenbanktabelle einzufügen, zu aktualisieren, Spalten hinzuzufügen und Eintragsdaten zu lesen;\n\nOptional können Sie die Lese- und Schreibrechte für das Erstellerkonto reservieren. Setzen Sie in diesem Fall dieses Feld auf `ContractConditions("MainCondition")`.\n')])])]),t("h3",{attrs:{id:"neuer-vertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#neuer-vertrag"}},[e._v("#")]),e._v(" Neuer Vertrag")]),e._v(" "),t("h4",{attrs:{id:"vertragscode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertragscode"}},[e._v("#")]),e._v(" Vertragscode")]),e._v(" "),t("p",[e._v("Jeder Vertrag besteht aus drei Teilen. Weitere Einzelheiten finden Sie unter: "),t("RouterLink",{attrs:{to:"/de/topics/script.html#contract-structure"}},[e._v("Contract scructure")]),e._v("。")],1),e._v(" "),t("h4",{attrs:{id:"vertrag-erstellen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertrag-erstellen"}},[e._v("#")]),e._v(" Vertrag erstellen")]),e._v(" "),t("ol",[t("li",[e._v("Wählen Sie auf der Registerkarte „Entwickler“ Anwendung – Name > Vertrag;")])]),e._v(" "),t("p",[e._v("Hier werden alle Verträge im Zusammenhang mit der Bewerbung angezeigt. Bei Neuanmeldungen ist die Liste leer.")]),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[e._v("Klicken Sie auf Neu;")])]),e._v(" "),t("p",[e._v("Im Editor wird eine neue Vertragsvorlage angezeigt.")]),e._v(" "),t("p",[e._v("Eine leere Vertragsvorlage wird wie folgt angezeigt:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("contract ... {\n data {\n\n }\n conditions {\n\n }\n action {\n\n }\n}\n")])])]),t("h4",{attrs:{id:"vertragsname"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vertragsname"}},[e._v("#")]),e._v(" Vertragsname")]),e._v(" "),t("p",[e._v("Bitte geben Sie zunächst den Vertragsnamen an.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" contract AppContract {\n\n }\n")])])]),t("h4",{attrs:{id:"daten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daten"}},[e._v("#")]),e._v(" Daten")]),e._v(" "),t("p",[e._v("Füllen Sie den Abschnitt "),t("code",[e._v("data")]),e._v(" aus.")]),e._v(" "),t("p",[e._v("Im folgenden Beispiel bezieht sich "),t("code",[e._v("message")]),e._v(" auf den Variablennamen, während "),t("code",[e._v("string")]),e._v(" auf den Variablentyp verweist.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" data {\n Message string\n }\n")])])]),t("h4",{attrs:{id:"bedingungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bedingungen"}},[e._v("#")]),e._v(" Bedingungen")]),e._v(" "),t("p",[e._v('Füllen Sie den Abschnitt "'),t("code",[e._v("condition")]),e._v('" aus. Eine einfache Überprüfungsbedingung besteht darin, leere Zeichenfolgen zu vermeiden. Wenn die Länge von '),t("code",[e._v("Message")]),e._v(" "),t("code",[e._v("0")]),e._v(" ist, wird eine vordefinierte Warnmeldung bei der Ausführung des Vertrags ausgelöst.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n}\n')])])]),t("h4",{attrs:{id:"handlung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#handlung"}},[e._v("#")]),e._v(" Handlung")]),e._v(" "),t("p",[e._v("Füllen Sie den Abschnitt "),t("code",[e._v("action")]),e._v(" aus. Eine einfache Aktion besteht darin, "),t("code",[e._v("Message")]),e._v(" in die Datentabelle zu schreiben.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' action {\n DBInsert("apptable", {message: $Message})\n }\n')])])]),t("h4",{attrs:{id:"vollstandiger-vertragscode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vollstandiger-vertragscode"}},[e._v("#")]),e._v(" Vollständiger Vertragscode")]),e._v(" "),t("p",[e._v("Der vollständige Vertragscode wird unten angezeigt.")]),e._v(" "),t("p",[e._v("Alle Verträge in IBAX werden so aufgebaut, einschließlich der Abschnitte "),t("code",[e._v("data")]),e._v(", "),t("code",[e._v("condition")]),e._v(" und "),t("code",[e._v("action")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('contract AppContract {\n data {\n Message string\n }\n conditions {\n // avoid writing empty strings\n if Size($Message) == 0 {\n error "Message is empty"\n }\n }\n action {\n DBInsert("apptable", {message: $Message})\n }\n}\n')])])]),t("h4",{attrs:{id:"speichern-und-ausfuhren"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#speichern-und-ausfuhren"}},[e._v("#")]),e._v(" Speichern und ausführen")]),e._v(" "),t("p",[e._v("Jetzt bereiten wir uns darauf vor, den Vertrag zu testen:")]),e._v(" "),t("ol",[t("li",[e._v("Klicken Sie im Menü des Editors auf Speichern;")])]),e._v(" "),t("p",[e._v("Dadurch wird der Vertragscode aktualisiert und die aktualisierte Version steht allen Netzwerkknoten zur Verfügung.")]),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[e._v("Klicken Sie im Menü des Editors auf Ausführen;")])]),e._v(" "),t("p",[e._v("Dadurch wird die Seite Vertrag ausführen angezeigt.")]),e._v(" "),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Geben Sie auf der Seite Vertrag ausführen die Eingabeparameter des Vertrags ein;")])]),e._v(" "),t("p",[e._v("Da dieser Vertrag einen Parameter "),t("code",[e._v("Message")]),e._v(" hat, setzen Sie "),t("code",[e._v("Message")]),e._v(" im feld schlüssel und "),t("code",[e._v("Hello, World")]),e._v(" im feld wert.")]),e._v(" "),t("ol",{attrs:{start:"4"}},[t("li",[e._v("Click run.")])]),e._v(" "),t("p",[e._v("The result will be displayed at the right.")]),e._v(" "),t("p",[e._v("If successfully added some strings, then, the result will contain the block ID and result code to introduce the change of transactions.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{\n "block": "31",\n "result": null\n}\n')])])]),t("h2",{attrs:{id:"teil-3-seite"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#teil-3-seite"}},[e._v("#")]),e._v(" Teil 3: Seite")]),e._v(" "),t("p",[e._v("Wenn der Vertrag in Kraft tritt, ist es an der Zeit, ihn um etwas Sinnvolles zu erweitern. In diesem Teil implementieren Sie die Benutzeroberfläche und andere Funktionen.")]),e._v(" "),t("p",[e._v("Klasse")]),e._v(" "),t("p",[e._v("In dieser Anwendung werden Zeichenfolgen wie Einträge in einem Protokoll in einer Datenbanktabelle gespeichert. Jede Zeichenfolge hat einen Autor und einen Zeitstempel.")]),e._v(" "),t("p",[e._v("Benutzer können die Liste der auf der Anwendungsseite gespeicherten Zeichenfolgen anzeigen, die dann als einfaches Formular angezeigt wird.")]),e._v(" "),t("h3",{attrs:{id:"neues-feld"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#neues-feld"}},[e._v("#")]),e._v(" Neues Feld")]),e._v(" "),t("p",[e._v("Bearbeiten Sie wie zuvor die Datenbanktabelle auf der Registerkarte Entwickler > Anwendung - Name > Seite Datenbanktabelle;")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Fügen Sie die folgenden Felder in "),t("code",[e._v("apptable")]),e._v(" hinzu:")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("author")]),e._v(", Feldtyp "),t("code",[e._v("number")]),e._v(", setze Change auf "),t("code",[e._v("true")]),e._v(";")])]),e._v(" "),t("li",[t("p",[e._v("Dieses Feld speichert die Kennung des Autorenkontos.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("timestamp")]),e._v(" , Feldtyp "),t("code",[e._v("Date/Time")]),e._v(", setze Change auf "),t("code",[e._v("true")]),e._v(".")])])]),e._v(" "),t("h3",{attrs:{id:"aktualisieren-sie-den-vertrag"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#aktualisieren-sie-den-vertrag"}},[e._v("#")]),e._v(" Aktualisieren Sie den Vertrag")]),e._v(" "),t("p",[e._v("Wir werden den Vertragscode aktualisieren, um die Autoren-ID und den Zeitstempel zu verarbeiten.")]),e._v(" "),t("p",[e._v("Die Autoren-ID ist die Konto-ID des Ökosystems. Der Zeitstempel ist das Datum und die Uhrzeit der Vertragsausführung im Unix-Zeitformat.")]),e._v(" "),t("p",[e._v("Da beide Werte von den "),t("RouterLink",{attrs:{to:"/de/topics/script.html#variables"}},[e._v("Predefined variables")]),e._v(" bereitgestellt werden und die vordefinierten Variablen nicht eingegeben oder überprüft werden müssen, können sie nur im Aktionsteil aktualisiert werden.")],1),e._v(" "),t("p",[e._v("Aktualisieren Sie den Vertrag, um die Autoren-ID und den Zeitstempel in die Datenbanktabelle zu schreiben, wenn Sie eine Nachricht hinzufügen, wobei die Autoren-ID durch "),t("code",[e._v("$key_id")]),e._v(" definiert wird, während der Zeitstempel durch "),t("code",[e._v("$time")]),e._v(" definiert wird.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('action {\n DBInsert("apptable", {message: $Message, author: $key_id, timestamp: $time})\n}\n')])])]),t("h3",{attrs:{id:"buchseite"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#buchseite"}},[e._v("#")]),e._v(" Buchseite")]),e._v(" "),t("p",[e._v("Bei der Anwendungsseite handelt es sich um eine einfache Seite, auf der die in der Datenbanktabelle gespeicherten Nachrichten angezeigt werden.")]),e._v(" "),t("p",[e._v("Wie alle anderen Ressourcen können Sie die UI-Seite in Weaver erstellen:")]),e._v(" "),t("ol",[t("li",[e._v("Navigieren Sie zur Registerkarte Entwickler, klicken Sie auf Anwendung – Name > Seite;")])]),e._v(" "),t("p",[e._v("2.Klicken Sie auf Neu;\nDer visuelle Designer wird in einem neuen Tab geöffnet.")]),e._v(" "),t("h4",{attrs:{id:"designeransichten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#designeransichten"}},[e._v("#")]),e._v(" Designeransichten")]),e._v(" "),t("p",[e._v("Die Standardseite ist leer. Sie können die vordefinierte Struktur verwenden, um die Seite schnell auszufüllen.")]),e._v(" "),t("p",[e._v("Erstellen Sie eine einfache Tabelle:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Klicken Sie in der Ansichtsauswahl rechts auf Designer;\nDie Ansicht wird auf den visuellen Designer umgeschaltet.")])]),e._v(" "),t("li",[t("p",[e._v("Wählen Sie im Menü links Tabelle mit Kopfzeile und ziehen Sie sie auf die Seite.\nAuf der Seite wird eine Tabelle mit mehreren Elementen angezeigt.")])])]),e._v(" "),t("h4",{attrs:{id:"entwickleransicht"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#entwickleransicht"}},[e._v("#")]),e._v(" Entwickleransicht")]),e._v(" "),t("p",[e._v("Da die Benutzerseite von IBAX mit einer "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html"}},[e._v("Template Language")]),e._v(" codiert ist, wechseln Sie bitte beim Schreiben des Seitencodes in die Entwickleransicht.")],1),e._v(" "),t("p",[e._v("Wechseln Sie in die Entwickleransicht.")]),e._v(" "),t("ol",[t("li",[e._v("Klicken Sie in der Ansichtsauswahl rechts auf Entwickler.")])]),e._v(" "),t("p",[e._v("Die Ansicht wird auf den Editor mit einem Reiter umgeschaltet, der den Seitencode enthält.")]),e._v(" "),t("h4",{attrs:{id:"daten-aus-der-datenbanktabelle-holen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daten-aus-der-datenbanktabelle-holen"}},[e._v("#")]),e._v(" Daten aus der Datenbanktabelle holen")]),e._v(" "),t("p",[e._v("Bisher nichts mit der Seitenvorlage gemacht. Als Nächstes werden wir den Code aktualisieren, damit die Seite Daten von "),t("code",[e._v("apptable")]),e._v(" anzeigen kann.")]),e._v(" "),t("ol",[t("li",[e._v("Anfordern von Daten aus der Datenbanktabelle mit der Funktion "),t("RouterLink",{attrs:{to:"/de/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(";")],1)]),e._v(" "),t("p",[e._v("Im folgenden Beispiel wird dieser Funktionsaufruf verwendet, um Daten aus "),t("code",[e._v("apptable")]),e._v(" abzurufen. Die Daten werden in die Quelle "),t("code",[e._v("src_table")]),e._v(" gestellt und nach dem Zeitstempelfeld sortiert. "),t("code",[e._v("src_table")]),e._v(" wird später als Datenquelle für die Seite in der Tabellenansicht verwendet.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n')])])]),t("ol",{attrs:{start:"2"}},[t("li",[e._v("Um die Daten aus "),t("code",[e._v("src_table")]),e._v(" anzuzeigen, geben Sie diese als Datenquelle und den Header in der "),t("code",[e._v("Table")]),e._v("-Funktion an.")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n')])])]),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Klicken Sie rechts in der Ansichtsauswahl auf Vorschau, um zu prüfen, ob die Daten korrekt angezeigt werden.")])]),e._v(" "),t("h4",{attrs:{id:"ganzseitiger-code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ganzseitiger-code"}},[e._v("#")]),e._v(" Ganzseitiger Code")]),e._v(" "),t("p",[e._v("Das Folgende ist der ganzseitige Code für diesen Teil. Diese Basisseite wird später erweitert.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp)\n\nDiv(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n Button(Class: btn btn-primary, Contract: ContractName, Body: More)\n }\n}\n\n')])])]),t("h4",{attrs:{id:"seite-speichern"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#seite-speichern"}},[e._v("#")]),e._v(" Seite speichern")]),e._v(" "),t("p",[e._v("Klicken Sie auf Speichern, um die Seite zu speichern:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Geben Sie "),t("code",[e._v("AppPage")]),e._v(" oder einen anderen Namen für die Seite im Feld „Seitenname“ an;")])]),e._v(" "),t("li",[t("p",[e._v("Wählen Sie "),t("code",[e._v("default_menu")]),e._v(" im Menü;")])]),e._v(" "),t("li",[t("p",[e._v("Bedingungen auf "),t("code",[e._v("true")]),e._v(" setzen;")])]),e._v(" "),t("li",[t("p",[e._v("Klicken Sie auf OK.")])])]),e._v(" "),t("h2",{attrs:{id:"teil-4-bewerbung"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#teil-4-bewerbung"}},[e._v("#")]),e._v(" Teil 4: Bewerbung")]),e._v(" "),t("p",[e._v("In den vorherigen Abschnitten haben Sie einen Vertrag, eine Tabelle zum Speichern von Daten und eine einfache UI-Seite zum Anzeigen dieser Daten erstellt.")]),e._v(" "),t("p",[e._v("In diesem Teil werden Sie die Anwendung fertigstellen, damit ihr Aussehen und ihre Aktionen denen einer tatsächlichen ähneln.")]),e._v(" "),t("h3",{attrs:{id:"speisekarte"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#speisekarte"}},[e._v("#")]),e._v(" Speisekarte")]),e._v(" "),t("p",[e._v("Die Seite muss mit einem Menü verknüpft sein, z. B. ist "),t("code",[e._v("default_page")]),e._v(", das auf der Registerkarte „Startseite“ angezeigt wird, mit dem standardmäßigen Ökosystemmenü "),t("code",[e._v("default_menu")]),e._v(" verknüpft.")]),e._v(" "),t("p",[e._v("Da dieses Anwendungs-Tutorial sehr einfach ist (nur eine Seite hat), muss dafür kein separates Menü erstellt werden. Der neue Menüpunkt im Standardmenü genügt.")]),e._v(" "),t("blockquote",[t("p",[e._v("Hinweis")])]),e._v(" "),t("blockquote",[t("p",[e._v("Sie können das Seitenmenü definieren, indem Sie die Seiteneigenschaften auf der Registerkarte Entwickler > Anwendung - Name > Seite bearbeiten. Wenn Ihre App beispielsweise mehrere Seiten hat, müssen Sie möglicherweise ein Menü erstellen, um zwischen diesen Seiten zu navigieren, und es allen Seiten der App zuweisen.")])]),e._v(" "),t("h4",{attrs:{id:"menupunkt-hinzufugen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menupunkt-hinzufugen"}},[e._v("#")]),e._v(" Menüpunkt hinzufügen")]),e._v(" "),t("p",[e._v("Wie alle anderen Ressourcen können Menüs in Weaver erstellt und bearbeitet werden:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Navigieren Sie zur Registerkarte Entwickler > Menü;")])]),e._v(" "),t("li",[t("p",[e._v("Klicken Sie auf den Namen des Eintrags "),t("code",[e._v("default_menu")]),e._v(";")])])]),e._v(" "),t("p",[e._v("Im Editor wird ein neuer Tab geöffnet.")]),e._v(" "),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Fügen Sie am Ende der Vorlage einen neuen Menüpunkt hinzu, der zum Öffnen der Anwendungsseite verlinkt wird und dessen Symbol aus dem Symbolsatz "),t("a",{attrs:{href:"https://fontawesome.com/icons",target:"_blank",rel:"noopener noreferrer"}},[e._v("FontAwesome"),t("OutboundLink")],1),e._v(" stammt.")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(' MenuItem(Title:Messages, Page:AppPage, Icon:"fa fa-envelope")\n')])])]),t("ol",{attrs:{start:"4"}},[t("li",[e._v("Klicken Sie auf Speichern.")])]),e._v(" "),t("h4",{attrs:{id:"testen-sie-das-neue-menuelement"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#testen-sie-das-neue-menuelement"}},[e._v("#")]),e._v(" Testen Sie das neue Menüelement")]),e._v(" "),t("p",[e._v("Prüfen Sie, ob der neue Menüpunkt gültig ist:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Öffnen Sie die Registerkarte Startseite;")])]),e._v(" "),t("li",[t("p",[e._v("Klicken Sie im Menü auf Aktualisieren;")]),e._v(" "),t("p",[e._v("Ein Eintrag mit einer Kopfzeile von Nachrichten wird angezeigt;")])]),e._v(" "),t("li",[t("p",[e._v("Klicken Sie auf Nachrichten.")]),e._v(" "),t("p",[e._v("Die Bewerbungsseite wird geöffnet.")])])]),e._v(" "),t("h3",{attrs:{id:"eine-nachricht-schicken"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#eine-nachricht-schicken"}},[e._v("#")]),e._v(" Eine Nachricht schicken")]),e._v(" "),t("p",[e._v("Die Schaltflächen in Logicor können je nach Parameter zum Ausführen von Verträgen und Aufrufen von Seiten verwendet werden.\nDie Funktion "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#button"}},[e._v("Button")]),e._v(" hat zwei Vertragsparameter:")],1),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Contract")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("Name des aktivierten Vertrags.\n")])])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("Eingabeparameter des Vertrags.")])])]),e._v(" "),t("h4",{attrs:{id:"form"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),t("p",[e._v("Um Daten an den Vertrag zu senden, fügen Sie auf der Antragsseite ein Formular hinzu, das über ein Eingabefeld für eine Nachricht und einen Button zur Aktivierung des Vertrags AppContract verfügen muss.")]),e._v(" "),t("p",[e._v("Im Folgenden finden Sie ein Beispiel für diese Art von Formular. Es ist in einem eigenen "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#div"}},[e._v("Div")]),e._v(" verschachtelt. Platzieren Sie es nach dem Div-Element, das die Formularansicht enthält, wodurch definiert wird, dass das Feld "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#input"}},[e._v("Input")]),e._v(" einen vordefinierten Namen "),t("code",[e._v("message_input")]),e._v(" hat. Die Schaltfläche verwendet diesen Namen, um den Wert von "),t("code",[e._v("message")]),e._v(" an den Vertrag zu senden. Schließlich wird die Funktion "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#calling-contracts"}},[e._v("Val")]),e._v(" verwendet, um den Wert des Eingabefelds zu erhalten.")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)")\n }\n}\n')])])]),t("p",[e._v("Möglicherweise stellen Sie fest, dass das Formular beim Testen dieser neuen Funktion durch Senden einer Nachricht nicht aktualisiert wird. Dies wird in "),t("a",{attrs:{href:"#page-refreshing"}},[e._v("Seitenaktualisierung")]),e._v(" eingeführt.")]),e._v(" "),t("h3",{attrs:{id:"formularnavigation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#formularnavigation"}},[e._v("#")]),e._v(" Formularnavigation")]),e._v(" "),t("p",[e._v("In der Standardansicht kann das Formular auf der Seite nur 25 Einträge auf der ersten Seite anzeigen. Daher können Sie einige einfache Schaltflächen hinzufügen, um Benutzer zu allen Formulareinträgen zu navigieren.")]),e._v(" "),t("h4",{attrs:{id:"navigationstasten"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigationstasten"}},[e._v("#")]),e._v(" Navigationstasten")]),e._v(" "),t("p",[e._v("Es wird zwei Navigationsschaltflächen geben, und jede von ihnen könnte die Anwendungsseite neu laden und die Parameter an sie übergeben.")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Die Schaltfläche Zurück zeigt die ersten 25 Einträge an. Wenn keine weiteren Einträge vorhanden sind, wird die Schaltfläche nicht angezeigt;")])]),e._v(" "),t("li",[t("p",[e._v("Die Schaltfläche Weiter zeigt die nächsten 25 Einträge an. Wenn keine weiteren Einträge vorhanden sind, wird die Schaltfläche nicht angezeigt.")])])]),e._v(" "),t("h4",{attrs:{id:"variablen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#variablen"}},[e._v("#")]),e._v(" Variablen")]),e._v(" "),t("p",[e._v("Die Navigationsschaltflächen erfordern zwei Variablen zum Speichern der Tabellenansichtszustände:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("#table_view_offset#")])])]),e._v(" "),t("p",[e._v("Diese Variable speichert den Offset der aktuellen Tabellenansicht.")]),e._v(" "),t("p",[e._v("Die Navigationsschaltflächen übergeben es als Parameter, wenn die Seite neu geladen wird.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("#record_count#")])])]),e._v(" "),t("p",[e._v("Diese Variable speichert die Gesamtzahl der Einträge in der Tabelle.")]),e._v(" "),t("p",[e._v("Der Wert wird berechnet.")]),e._v(" "),t("h4",{attrs:{id:"anzahl-der-eintrage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#anzahl-der-eintrage"}},[e._v("#")]),e._v(" Anzahl der Einträge")]),e._v(" "),t("p",[e._v("Um "),t("code",[e._v("#record_count#")]),e._v(" zu zählen, ändern Sie bitte den bestehenden Funktionsaufruf "),t("RouterLink",{attrs:{to:"/de/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(". Die im "),t("code",[e._v(".count()")]),e._v("-Aufruf angegebene Variable speichert die Eintragsanzahl.")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count)\n')])])]),t("h4",{attrs:{id:"tabellen-offset"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tabellen-offset"}},[e._v("#")]),e._v(" Tabellen-Offset")]),e._v(" "),t("p",[e._v("Der Offset der Tabellenansicht muss beim Öffnen der Seite an die Seite übergeben werden. Wenn "),t("code",[e._v("#table_view_offset#")]),e._v(" keinen Wert bekommt, setzen Sie ihn auf 0.")]),e._v(" "),t("p",[e._v("Fügen Sie oben auf der Seite den folgenden Code hinzu.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(GetVar(table_view_offset)){\n\n}.Else{\n SetVar(table_view_offset, 0)\n}\n")])])]),t("p",[e._v("Ändern Sie den Funktionsaufruf "),t("RouterLink",{attrs:{to:"/de/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" erneut. Dieses Mal muss es den neuen Offset der Tabellenansicht verwenden.")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n')])])]),t("h4",{attrs:{id:"tastencode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tastencode"}},[e._v("#")]),e._v(" Tastencode")]),e._v(" "),t("p",[e._v("Suchen Sie den Funktionsaufruf "),t("RouterLink",{attrs:{to:"/de/topics/templates2.html#div"}},[e._v("Div")]),e._v(", der die Fußzeile definiert: "),t("code",[e._v("Div(Class:panel-footer text-right)")]),e._v(". Fügen Sie den Schaltflächencode hinzu.")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(Class: panel-footer text-right) {\n}\n")])])]),t("p",[e._v("Die Schaltfläche "),t("em",[e._v("Zurück")]),e._v(" wird nur angezeigt, wenn mindestens ein Weiter zum Zurückkehren vorhanden ist. Beim Hinzufügen einer Schaltfläche wird der neue Tabellenansichts-Offset "),t("code",[e._v("offset_ previous")]),e._v(" der Seite berechnet. Die Parameter werden an "),t("code",[e._v("PageParams")]),e._v(" der erneut geöffneten Seite übergeben.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n}\n')])])]),t("p",[e._v("Die Schaltfläche Weiter wird nur angezeigt, wenn die Gesamtzahl der Datensätze größer ist als die auf der Seite angezeigte Zahl. Wenn eine Schaltfläche hinzugefügt wird, wird der neue Tabellenansichts-Offset "),t("code",[e._v("offset_next")]),e._v(" der Seite berechnet. Die Parameter werden an "),t("code",[e._v("PageParams")]),e._v(" der erneut geöffneten Seite übergeben.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n}\n')])])]),t("p",[e._v("Nachdem Sie diese Schaltflächen hinzugefügt haben, speichern Sie die Seite und testen Sie sie über das Menüelement Startseite > Nachrichten.")]),e._v(" "),t("h4",{attrs:{id:"seite-wird-aktualisiert"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#seite-wird-aktualisiert"}},[e._v("#")]),e._v(" Seite wird aktualisiert")]),e._v(" "),t("p",[e._v("Die letzte zu implementierende Funktion ist die automatische Aktualisierung der Tabelle auf der Seite. Wenn Benutzer eine neue Nachricht senden, muss diese in der Tabelle angezeigt werden.")]),e._v(" "),t("p",[e._v("Neben der Vertragsabwicklung können Sie auch über die Schaltfläche Senden die aktuelle Seite erneut öffnen, um dasselbe zu erreichen. "),t("code",[e._v("#table_view_offset#")]),e._v(" muss unverändert an die Seite übergeben werden.")]),e._v(" "),t("p",[e._v("Fügen Sie „Page“ und "),t("code",[e._v("PageParams")]),e._v(" zur Schaltfläche „Senden“ hinzu. Der Code lautet wie folgt:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n')])])]),t("h3",{attrs:{id:"vollstandiger-seitencode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#vollstandiger-seitencode"}},[e._v("#")]),e._v(" Vollständiger Seitencode")]),e._v(" "),t("p",[e._v("Dieser Teil beschreibt viele Änderungen an der Anwendungsseite. Das Folgende ist der vollständige Code der Anwendungsseite.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('If(GetVar(table_view_offset)){\n}.Else{\n SetVar(table_view_offset, 0)\n}\nDBFind(Name: apptable, Source: src_table).Columns(Columns: "author,timestamp,message").Order(timestamp).Count(record_count).Offset(#table_view_offset#)\n Div(Class: panel panel-primary) {\n Div(Class: panel-heading, Body: Table block)\n Table(Columns: "AUTHOR=author,TIME=timestamp,MESSAGE=message", Source: src_table)\n Div(Class: panel-footer text-right) {\n If(#table_view_offset# >= 25) {\n SetVar(offset_previous, Calculate(#table_view_offset# - 25))\n Button(Class: btn btn-primary, Body: Previous, Page: AppPage, PageParams:"table_view_offset=#offset_previous#")\n }\n If(#record_count# >= Calculate(#table_view_offset# + 25)) {\n SetVar(offset_next, Calculate(#table_view_offset# + 25))\n Button(Class: btn btn-primary, Body: Next, Page: AppPage, PageParams:"table_view_offset=#offset_next#")\n }\n }\n }\n Div(Class: panel panel-primary) {\n Form() {\n Input(Name: message_input, Class: form-control, Type: text, Placeholder: "Write a message...", )\n Button(Class: btn btn-primary, Body: Send, Contract: AppContract, Params: "Message=Val(message_input)", Page:AppPage, PageParams:"table_view_offset=#table_view_offset#")\n }\n}\n')])])]),t("h2",{attrs:{id:"schlussfolgerungen"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#schlussfolgerungen"}},[e._v("#")]),e._v(" Schlussfolgerungen")]),e._v(" "),t("p",[e._v("Anstatt andere wichtige Themen für Anwendungsentwickler zu erläutern, wie z. B. Layoutstile, Verwaltung von Zugriffsberechtigungen und Interaktion zwischen Anwendungen und Ressourcen, führt dieses Tutorial ein, wie eine grundlegende Anwendung für ein Ökosystem erstellt wird. Weitere Informationen zu diesen fortgeschrittenen Themen finden Sie in anderen relevanten Dokumenten.")])])}),[],!1,null,null,null);n.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/3.5bcf211a.js b/assets/js/3.8d28154b.js similarity index 62% rename from assets/js/3.5bcf211a.js rename to assets/js/3.8d28154b.js index c5d18e8..373804c 100644 --- a/assets/js/3.5bcf211a.js +++ b/assets/js/3.8d28154b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{352:function(t,e,n){},380:function(t,e,n){"use strict";n(352)},531:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,i=e.slots;return t("span",{class:["badge",n.type],style:{verticalAlign:n.vertical}},n.text||i().default)}},r=(n(380),n(51)),p=Object(r.a)(i,void 0,void 0,!1,null,"15b7b770",null);e.default=p.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{353:function(t,e,n){},381:function(t,e,n){"use strict";n(353)},531:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,i=e.slots;return t("span",{class:["badge",n.type],style:{verticalAlign:n.vertical}},n.text||i().default)}},r=(n(381),n(51)),p=Object(r.a)(i,void 0,void 0,!1,null,"15b7b770",null);e.default=p.exports}}]); \ No newline at end of file diff --git a/assets/js/30.94b3175d.js b/assets/js/30.ea0e974b.js similarity index 99% rename from assets/js/30.94b3175d.js rename to assets/js/30.ea0e974b.js index a623add..0ba4320 100644 --- a/assets/js/30.94b3175d.js +++ b/assets/js/30.ea0e974b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{415:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/de/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/de/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/de/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/de/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/de/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/de/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/de/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/de/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/de/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/de/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/de/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{410:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/de/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/de/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/de/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/de/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/de/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/de/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/de/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/de/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/de/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/de/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/de/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/de/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/de/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/31.4e810261.js b/assets/js/31.4b4c7d4b.js similarity index 97% rename from assets/js/31.4e810261.js rename to assets/js/31.4b4c7d4b.js index b20b280..ae1878e 100644 --- a/assets/js/31.4e810261.js +++ b/assets/js/31.4b4c7d4b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{409:function(t,e,r){"use strict";r.r(e);var a=r(51),o=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"ibax-documentacion"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#ibax-documentacion"}},[t._v("#")]),t._v(" IBAX Documentación")]),t._v(" "),r("h2",{attrs:{id:"concepto"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#concepto"}},[t._v("#")]),t._v(" Concepto")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html"}},[t._v("IBAX Overview")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/concepts/blockchain-layers.html"}},[t._v("The IBAX Network")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/concepts/consensus.html"}},[t._v("Proof-of-Authority Consensus")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/concepts/thesaurus.html"}},[t._v("Terms and Definitions")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/concepts/faq.html"}},[t._v("FAQ")])],1)]),t._v(" "),r("h2",{attrs:{id:"tutorial"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#tutorial"}},[t._v("#")]),t._v(" Tutorial")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/es/tutorials/app_tutorial.html"}},[t._v("Tutorial for application development")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),r("h2",{attrs:{id:"guia"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#guia"}},[t._v("#")]),t._v(" Guía")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/es/topics/script.html"}},[t._v("Smart Contracts")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/topics/templates2.html"}},[t._v("Template Language")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/topics/vm.html"}},[t._v("Compiler and Virtual Machine")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/topics/daemons.html"}},[t._v("Daemon")])],1)]),t._v(" "),r("h2",{attrs:{id:"referencia"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#referencia"}},[t._v("#")]),t._v(" Referencia")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/es/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/reference/platform-parameters.html"}},[t._v("Platform Parameters")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/reference/backend-config.html"}},[t._v("Server Configuration File")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/reference/desync_monitor.html"}},[t._v("Synchronized Monitoring Tool")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),r("h2",{attrs:{id:"despliegue"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#despliegue"}},[t._v("#")]),t._v(" Despliegue")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/es/howtos/deployment.html"}},[t._v("Deployment of A IBAX Network")])],1)])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{412:function(t,e,r){"use strict";r.r(e);var a=r(51),o=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"ibax-documentacion"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#ibax-documentacion"}},[t._v("#")]),t._v(" IBAX Documentación")]),t._v(" "),r("h2",{attrs:{id:"concepto"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#concepto"}},[t._v("#")]),t._v(" Concepto")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html"}},[t._v("IBAX Overview")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/concepts/blockchain-layers.html"}},[t._v("The IBAX Network")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/concepts/consensus.html"}},[t._v("Proof-of-Authority Consensus")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/concepts/thesaurus.html"}},[t._v("Terms and Definitions")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/concepts/faq.html"}},[t._v("FAQ")])],1)]),t._v(" "),r("h2",{attrs:{id:"tutorial"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#tutorial"}},[t._v("#")]),t._v(" Tutorial")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/es/tutorials/app_tutorial.html"}},[t._v("Tutorial for application development")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),r("h2",{attrs:{id:"guia"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#guia"}},[t._v("#")]),t._v(" Guía")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/es/topics/script.html"}},[t._v("Smart Contracts")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/topics/templates2.html"}},[t._v("Template Language")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/topics/vm.html"}},[t._v("Compiler and Virtual Machine")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/topics/daemons.html"}},[t._v("Daemon")])],1)]),t._v(" "),r("h2",{attrs:{id:"referencia"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#referencia"}},[t._v("#")]),t._v(" Referencia")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/es/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/reference/platform-parameters.html"}},[t._v("Platform Parameters")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/reference/backend-config.html"}},[t._v("Server Configuration File")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/reference/desync_monitor.html"}},[t._v("Synchronized Monitoring Tool")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/es/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),r("h2",{attrs:{id:"despliegue"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#despliegue"}},[t._v("#")]),t._v(" Despliegue")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/es/howtos/deployment.html"}},[t._v("Deployment of A IBAX Network")])],1)])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/32.ab295dfc.js b/assets/js/32.067561ac.js similarity index 99% rename from assets/js/32.ab295dfc.js rename to assets/js/32.067561ac.js index e42ad45..ea3e49a 100644 --- a/assets/js/32.ab295dfc.js +++ b/assets/js/32.067561ac.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{410:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ibax-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-overview"}},[e._v("#")]),e._v(" IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-overview"}},[e._v("IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#features"}},[e._v("Features")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#architecture"}},[e._v("Architecture")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#network"}},[e._v("Network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[e._v("Honor Node")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#transactions"}},[e._v("Transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#network-protocol"}},[e._v("Network protocol")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-and-transaction-verification"}},[e._v("Block and transaction verification")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#database"}},[e._v("Database")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[e._v("ECOLIB")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ide"}},[e._v("IDE")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#applications"}},[e._v("Applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables"}},[e._v("Tables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-parameters"}},[e._v("Ecosystem Parameters")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#access-rights-control-mechanism"}},[e._v("Access rights control mechanism")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#access-rights-management"}},[e._v("Access rights management")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exclusive-rights"}},[e._v("Exclusive rights")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecosystem"}},[e._v("Virtual private ecosystem")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#requests-to-web-resources"}},[e._v("Requests to web resources")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rights-to-read-data"}},[e._v("Rights to read data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-creation"}},[e._v("CLB creation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-usage"}},[e._v("CLB usage")])])])])])])]),e._v(" "),a("h2",{attrs:{id:"features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[e._v("#")]),e._v(" Features")]),e._v(" "),a("p",[e._v("The IBAX Network (IBAX) has an integrated application development environment (IDE). It is a multi-level access control system for data, user pages and smart contracts.")]),e._v(" "),a("p",[e._v("In terms of its structure and functions, IBAX is quite different from most existing blockchain platforms:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The development and use of IBAX applications are in an autonomous software environment called "),a("strong",[e._v("ecosystem")]),e._v(". Each ecosystem has its own membership rules that are initially established by the creator;")])]),e._v(" "),a("li",[a("p",[e._v("Ecosystem activities, such as the data involved in "),a("font",{attrs:{color:"Red"}},[e._v("database table")]),e._v(" records or updates, are based on "),a("strong",[e._v("registers")]),e._v(" created with "),a("strong",[e._v("smart contracts")]),e._v(". In most other blockchain platforms, activities are based on transaction exchange between accounts;")],1)]),e._v(" "),a("li",[a("p",[e._v("The access to "),a("strong",[e._v("registers")]),e._v(" and the control of relationships between ecosystem members are managed by a set of rules called "),a("strong",[e._v("smart laws")]),e._v(".")])])]),e._v(" "),a("h2",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("h3",{attrs:{id:"network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network"}},[e._v("#")]),e._v(" Network")]),e._v(" "),a("p",[e._v("IBAX is built on a peer-to-peer (P2P) network.")]),e._v(" "),a("p",[e._v("Guardian nodes in the network store the latest version of the blockchain database, which records the latest status of IBAX's blockchain.")]),e._v(" "),a("p",[e._v("Network users can receive data by sending requests from the guardian node database via "),a("strong",[e._v("Weaver")]),e._v(" or REST API commands. After signing by users, new requests are sent to the network as transactions in binary format. Essentially, these transactions are commands to modify relevant database records. Transactions are aggregated in blocks, and such blocks are sent to the blockchains of all network nodes. Each guardian node will process the transactions in the block, thereby updating the corresponding data in the database.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor Node")]),e._v(" "),a("p",[e._v("A guardian node which is privileged to generate new blocks in the network is called a honor node. The maximum number of honor nodes is defined by "),a("RouterLink",{attrs:{to:"/es/reference/platform-parameters.html#number-of-nodes"}},[e._v("number_of_nodes")]),e._v(" in the platform parameters table, showing that the number of honor nodes is limited.")],1),e._v(" "),a("p",[e._v("An Honor Node is one of the key components of IBAX Public Network. It executes and validates transactions, collects transaction information from other nodes, adds transactions to the queue, and verifies the correctness and validity of new blocks using the confirmation mechanism. Generally, it has two states: packaging and on-packaging.")]),e._v(" "),a("p",[e._v("An Honor Node in the packaging state delivers the highest performance. It obtains transaction requests to be executed from the transaction queue and verifies the ignature validity and correctness of transactions, e.g. transfer amount, permission for transaction operations, and accurate execution of transactions. All ransactional operations, correct or wrong (wrong transactions will be rolled back), will be written into the block. Wrong transactions will incur a punitive gas fee. Executed transactions are notified to other Honor Nodes along with the block through broadcasting.")]),e._v(" "),a("p",[e._v("An Honor Node in the non-packaging state is mainly responsible for block verification to ensure in-block transactions generated by a packaging node are executed orrectly. In case of an anomaly, it will trigger the exception handling mechanism and IBAX Network will roll back and re-verify the block.")]),e._v(" "),a("p",[e._v("In order to ensure transaction execution efficiency, Honor Nodes collect transaction information constantly.")]),e._v(" "),a("h3",{attrs:{id:"transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transactions"}},[e._v("#")]),e._v(" Transactions")]),e._v(" "),a("p",[e._v("Transactions, including data used to implement "),a("strong",[e._v("smart contracts")]),e._v(", are generated by Weaver.")]),e._v(" "),a("p",[e._v("Transactions are signed by users with a private key. The private key and Weaver's signature function can be stored in browsers, software clients, SIM cards or dedicated physical devices. In the current implementation, the private key is encrypted with the ECDSA algorithm and stored at the Weaver side. All transactions are signed with the ECDSA algorithm.")]),e._v(" "),a("p",[e._v("The structure of a transaction complies with the following format:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("ID - ID of the contract implemented;")])]),e._v(" "),a("li",[a("p",[e._v("Params - parameters sent to the contract;")])]),e._v(" "),a("li",[a("p",[e._v("KeyID - ID of the user sending the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("PublicKey - public key of the honor node;")])]),e._v(" "),a("li",[a("p",[e._v("Time - timestamp generated by the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("EcosystemID - ID of the ecosystem where the transaction is made;")])]),e._v(" "),a("li",[a("p",[e._v("ТokenEcosystem - ID of the ecosystem, 1 by default, and tokens within it are used to cover the transaction costs.")])])]),e._v(" "),a("h3",{attrs:{id:"network-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network-protocol"}},[e._v("#")]),e._v(" Network protocol")]),e._v(" "),a("p",[e._v("Transactions will be sent to honor nodes by users, where they are subject to basic verification to ensure the formats are correct and then are added to the queue. Transactions are also sent to other honor nodes on the network and added to the respective queue.")]),e._v(" "),a("p",[e._v("A honor node is privileged to generate new blocks within a specific time period which is determined by the platform parameter "),a("strong",[e._v("full_nodes")]),e._v(" and a special algorithm. Honor nodes retrieve transactions from queues and send them to the block generator. When generating a new block, transactions in such block will also be processed: each transaction is sent to a virtual machine, where the contract corresponding to the transaction parameters is implemented, thereby updating records in the database.")]),e._v(" "),a("p",[e._v("New blocks should be verified to ensure there are no errors before sending to other honor nodes on other networks.")]),e._v(" "),a("p",[e._v("A new block will be added to the block queue when received by other honor node and, after verification, to the blockchain of the honor node where it is located to process transactions in the block, and thereby updating records in the database.")]),e._v(" "),a("h3",{attrs:{id:"block-and-transaction-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-and-transaction-verification"}},[e._v("#")]),e._v(" Block and transaction verification")]),e._v(" "),a("p",[e._v("After generating or receiving a new block, it will be verified on all other honor nodes, which cover the following:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The first byte of the data received should be 0. If not, the data received will not be considered as a block;")])]),e._v(" "),a("li",[a("p",[e._v("The received block generation timestamp should be before the current timestamp;")])]),e._v(" "),a("li",[a("p",[e._v("The block generation timestamp should correspond to the time interval at which the honor node having privilege to generate new blocks;")])]),e._v(" "),a("li",[a("p",[e._v("The height of a new block should be greater than the height of the largest block on the existing blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the maximum expenses allowed for all transactions in the block;")])]),e._v(" "),a("li",[a("p",[e._v("The block must be properly signed with the secret key of the node which it is located. The signature data should contain:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The height of the block, the hash of the previous block, the timestamp of the block, the ID of the ecosystem where the block is located, and the account address of the honor node of the block;")])]),e._v(" "),a("li",[a("p",[e._v("The position of the honor node in the platform parameter full_nodes array, the Merkel Root (MrklRoot) of all transactions in the block, and the revert hash of the previous block.")])])])])]),e._v(" "),a("p",[e._v("To check the correctness of each transaction in the block with the following methods:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The hash of each transaction must be unique;")])]),e._v(" "),a("li",[a("p",[e._v("A key-signed transaction cannot exceed the limit ("),a("RouterLink",{attrs:{to:"/es/reference/platform-parameters.html#max-tx-block-per-user"}},[e._v("max_tx_block_per_user")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the limit of the maximum transaction size ("),a("RouterLink",{attrs:{to:"/es/reference/platform-parameters.html#max-tx-size"}},[e._v("max_tx_size")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("The transaction time can neither be greater than the block generation time nor be greater than the block generation time plus 600 seconds, and it can be no less than the block generation time minus 86400 seconds;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction must be signed properly;")])]),e._v(" "),a("li",[a("p",[e._v("The user who implements the contract must have sufficient tokens in his account to pay for the transaction cost.")])])]),e._v(" "),a("h3",{attrs:{id:"database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database"}},[e._v("#")]),e._v(" Database")]),e._v(" "),a("p",[e._v("The underlying data storage layer of IBAX Network is a "),a("code",[e._v("PGSQL")]),e._v(" database completely open to the public. Based on the permission design of the IBAX Operating System Platform, users do not need to worry about data security. With an object-oriented design philosophy, IBAX Network pre-compiles data through a relational PGSQL database and improves the data processing efficiency.")]),e._v(" "),a("p",[e._v("You may be interested in the following if you are a technical specialist, or just skip it if you are not.\n① All tables without a number prefix in their name belong to permission tables of IBAX Network Basic;\n② All tables with a number prefix in their name belong to permission tables of ecoLibs.")]),e._v(" "),a("h2",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[e._v("#")]),e._v(" ECOLIB")]),e._v(" "),a("p",[e._v("It is quite easy for users, even common users, to create an ecoLib of their own on the IBAX Network System Platform. We have integrated and developed an application where ecoLib creation takes just one click.")]),e._v(" "),a("p",[e._v("When creating an ecoLib, you can configure the ecosystem parameters and rules, and set the administrator account and charging model. Most importantly, to apply the DPoA consensus within ecoLibs better, creators can set it up by writing or importing their own contracts.")]),e._v(" "),a("p",[e._v("We support quick emission of ecoLib tokens by importing contract templates.")]),e._v(" "),a("p",[e._v("Due to the differences in consensus and management permissions, ecoLibs fall into decentralized and centralized ones. They have no specific advantage or disadvantage by type. You should choose the appropriate one against your service needs. What to do if it is OK for now but not for the future? You can change ecoLib parameters, even the consensus mechanism, token, and governance method, on the IBAX Network System Platform. You can leave it all to the self-governance mechanism maintained by the ecoLib administrator or members (depending on the ecoLib type).")]),e._v(" "),a("p",[e._v("On the IBAX Network System Platform, an ecoLib has complete data control permissions and permissions to design and access independent database tables and fields. In the data control permission design, we support triggering when a field satisfies a logical expression. This feature allows for imagination space in special services like monitoring, logic satisfaction, and triggering by time and specific conditions.")]),e._v(" "),a("p",[e._v("There may be multiple DApps in an ecoLib, and each of them can have independent parameters. An ecoLib is like a platform where you can implement anything you want.")]),e._v(" "),a("p",[e._v("In order to better support ecosystem developers, we provide the editing, management, and development tool Weaver. It will reduce the ecosystem development, maintenance, and management costs greatly.")]),e._v(" "),a("h3",{attrs:{id:"ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[e._v("#")]),e._v(" IDE")]),e._v(" "),a("p",[e._v("Weaver has a complete integrated development environment (IDE) for creating blockchain applications, which does not require software developers to have a deep understanding of the blockchain technology.")]),e._v(" "),a("p",[e._v("Weaver provides a table management tool, contract editor, page editor and other functions needed to create applications in the ecosystem, without the support of any software module.")]),e._v(" "),a("p",[e._v("The IDE mainly includes the following parts:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("list of ecosystem parameters;")])]),e._v(" "),a("li",[a("p",[e._v("contract editor;")])]),e._v(" "),a("li",[a("p",[e._v("table management tool;")])]),e._v(" "),a("li",[a("p",[e._v("page editor and visual page designer;")])]),e._v(" "),a("li",[a("p",[e._v("multi-language resources editor;")])]),e._v(" "),a("li",[a("p",[e._v("application import/export functions.")])])]),e._v(" "),a("h3",{attrs:{id:"applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#applications"}},[e._v("#")]),e._v(" Applications")]),e._v(" "),a("p",[e._v("An application is a collection of elements such as database tables, smart contracts, and user pages with access rights for configuration. The ecosystem to which the application element belongs is indicated by the prefix in the element name, such as "),a("code",[e._v("@1ElementName")]),e._v(", where the ecosystem ID is indicated by the number "),a("code",[e._v("1")]),e._v(" after the "),a("code",[e._v("@")]),e._v(" symbol. When using application elements in the current ecosystem, the prefix "),a("code",[e._v("@1")]),e._v(" can be omitted. These applications can perform useful functions or implement various services.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("In IBAX's database, each ecosystem can create an unlimited number of tables. Tables of a specific ecosystem can be identified by a prefix containing the ecosystem ID, which will not be displayed in Weaver.")]),e._v(" "),a("p",[e._v("A table is not bound in any way and belongs to a certain contract. It can be used by all applications within the scope of the table's access rights.")]),e._v(" "),a("p",[e._v("Each ecosystem can create a set of data tables for developing its applications or may, possibly, access data tables of other ecosystems by specifying the table name prefix.")]),e._v(" "),a("p",[e._v("By configuring access rights through smart laws, data are logged into tables. Smart laws are used for rights management.")]),e._v(" "),a("blockquote",[a("p",[e._v("Table table management tool")])]),e._v(" "),a("p",[e._v("You can find the table management tool in Weaver menu Table, which cover the following functions:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("View the list of tables and their entries;")])]),e._v(" "),a("li",[a("p",[e._v("Create new tables;")])]),e._v(" "),a("li",[a("p",[e._v("Add a table field and specify its data type, such as "),a("code",[e._v("Text, Date/Time, Varchar, Character, JSON, Number, Money, Double, Binary")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Manage privileges for insert, update data and change table structure.")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Table data manipulation")])]),e._v(" "),a("p",[e._v("For better database manipulation, both Needle and Logicor have the "),a("strong",[e._v("DBFind")]),e._v(" function, which is used to retrieve values and data arrays from tables.")]),e._v(" "),a("p",[e._v("The contract language "),a("strong",[e._v("DBInsert")]),e._v(" function is used to add entries to tables. The "),a("strong",[e._v("DBUpdate")]),e._v(" and "),a("strong",[e._v("DBUpdateExt")]),e._v(" functions are used to update the value of an existing entry. During updating, the corresponding data in tables will be updated, and the blockchain will add new transactions while retaining all historical transactions. Data in tables can only be modified and cannot be deleted.")]),e._v(" "),a("p",[e._v("In order to minimize the contract implementation time, the "),a("strong",[e._v("DBFind")]),e._v(" function cannot query multiple tables simultaneously, and JOIN is not supported. Therefore, we recommend not to normalize application tables, but to store all available information in entries or repeat the information available in other tables. This is not mandatory but necessary for a blockchain application. In this case, data should be stored fully, which cannot be updated even if the same data in other tables is updated, though it is updated synchronously in a relational database.")]),e._v(" "),a("h3",{attrs:{id:"ecosystem-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-parameters"}},[e._v("#")]),e._v(" Ecosystem Parameters")]),e._v(" "),a("p",[e._v("You may view and edit the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") in Weaver's menu. Ecosystem parameters can be divided into the following groups:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("General parameters: the account of the ecosystem creator (founder_account) and other information;")])]),e._v(" "),a("li",[a("p",[e._v("Access rights parameters: used to define access permissions for application elements")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("change the table structure (changing_tables);")])]),e._v(" "),a("li",[a("p",[e._v("change the contract (changing_contracts);")])]),e._v(" "),a("li",[a("p",[e._v("change the user page (changing_page);")])]),e._v(" "),a("li",[a("p",[e._v("change the menu (changing_menu);")])]),e._v(" "),a("li",[a("p",[e._v("change the multi-language resources (changing_language).")])])])]),e._v(" "),a("li",[a("p",[e._v("Technical parameters: used to define the user styles (stylesheet);")])]),e._v(" "),a("li",[a("p",[e._v("User parameters: used to define constants or lists (separated by commas) required for application operation.")])])]),e._v(" "),a("p",[e._v("You may specify the edit permission for parameters of each ecosystem.")]),e._v(" "),a("p",[e._v("You may use the EcosysParam function to retrieve the value of an ecosystem parameter by passing the ecosystem parameter title as a parameter to it.")]),e._v(" "),a("h2",{attrs:{id:"access-rights-control-mechanism"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-control-mechanism"}},[e._v("#")]),e._v(" Access rights control mechanism")]),e._v(" "),a("p",[e._v("IBAX has a multi-level access permission management system. By configuring access rights, you can create and change any application element, such as the contracts, tables, user pages, ecosystem parameters. You may also change the access rights through configuration.")]),e._v(" "),a("p",[e._v("By default, all rights in the IBAX ecosystem are managed by its creator, which is defined in the MainCondition contract of each ecosystem. But after creating smart laws, access control can be transferred to all or a group of ecosystem members.\nAccess rights control")]),e._v(" "),a("p",[e._v("The access rights are defined in contract tables ("),a("strong",[e._v("1_contracts")]),e._v(" ), data tables ("),a("strong",[e._v("1_tables")]),e._v(" ), user page tables ("),a("strong",[e._v("1_pages")]),e._v(" ), menu tables ("),a("strong",[e._v("1_menu")]),e._v(" ), and code block tables ("),a("strong",[e._v("1_blocks")]),e._v(" ). You can find the corresponding menus in Weaver.")]),e._v(" "),a("h3",{attrs:{id:"access-rights-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-management"}},[e._v("#")]),e._v(" Access rights management")]),e._v(" "),a("p",[e._v("The rules of access rights are configured by filling in the corresponding contract expressions "),a("strong",[e._v("ContractConditions(“@1MainCondition”)")]),e._v(", "),a("strong",[e._v("ContractAccess(“@1MainCondition”)")]),e._v(" or logical expressions in the permission field. If the result of the request expression passes (true ), then access is granted. Otherwise, access is denied and related operations are terminated.")]),e._v(" "),a("p",[e._v("The easy way to define rights is to enter a logical expression in the right field. For example, "),a("code",[e._v("$key_id == 8919730491904441614")]),e._v(", where "),a("strong",[e._v("$keyid")]),e._v(" represents the ID of an ecosystem member.")]),e._v(" "),a("p",[e._v("The most common and recommended way to define rights is to use the "),a("code",[e._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),e._v(" function. The contract name "),a("strong",[e._v("ContractsName")]),e._v(" is passed to the function as a parameter, and the contract result must be the result of a logical expression (true or false).")]),e._v(" "),a("p",[e._v("Another way to define rights is to use the "),a("code",[e._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),e._v(" function. The contract "),a("strong",[e._v("ContractsName")]),e._v(" qualified to implement the corresponding operation can be passed to the function as a parameter. For example, if the right field of the amount column is configured as "),a("code",[e._v('ContractAccess("@1TokenTransfer")')]),e._v(", then you can only implement the contract "),a("strong",[e._v("@1TokenTransfer")]),e._v(" if you want to change the value in the amount column. The right to access the contract itself can be managed in the conditions section, which are quite complex and may contain many other contracts.")]),e._v(" "),a("h3",{attrs:{id:"exclusive-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exclusive-rights"}},[e._v("#")]),e._v(" Exclusive rights")]),e._v(" "),a("p",[e._v("In case of emergencies or situations that are critical to the operation of an ecosystem, there are many special parameters in the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") (such as "),a("em",[e._v("changing_contracts")]),e._v(", "),a("em",[e._v("changing_pages")]),e._v(" ), etc., which defines rights to access all contracts, data tables, and pages of the current ecosystem. These rights are configured by key contracts.")]),e._v(" "),a("h2",{attrs:{id:"virtual-private-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecosystem"}},[e._v("#")]),e._v(" Virtual private ecosystem")]),e._v(" "),a("p",[e._v("In IBAX, you can create a virtual private ecosystem - "),a("strong",[e._v("Cross Ledgers Base (CLB)")]),e._v(". A CLB has the full functionality of the standard ecosystem, but operates outside the blockchain. In CLB, you can use and create contracts and template languages, tables, and use Weaver to create applications. You may call contracts on the blockchain ecosystem via API.")]),e._v(" "),a("h3",{attrs:{id:"requests-to-web-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requests-to-web-resources"}},[e._v("#")]),e._v(" Requests to web resources")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The main difference between a CLB and a standard ecosystem is that you can use contract functions ([HTTPRequest](../topics/script.md#httprequest)) and ([HTTPPostJSON](../topics/script.md#httppostjson)) to request any web resource within the contract via HTTP / HTTPS requests. Parameters passed to this function include: URLs, request methods (GET or POST), request headers and request parameters.\n")])])]),a("h3",{attrs:{id:"rights-to-read-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rights-to-read-data"}},[e._v("#")]),e._v(" Rights to read data")]),e._v(" "),a("p",[e._v("Though it is readable, data in CLB is not saved within the blockchain. You can choose to grant the read permission to database tables. You can set rights to read for individual columns, or for any row using a special contract.")]),e._v(" "),a("h3",{attrs:{id:"clb-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-creation"}},[e._v("#")]),e._v(" CLB creation")]),e._v(" "),a("p",[e._v("You may create a CLB node on the network. As predefined, the CLB node administrator is privileged to use the ecosystem list with the CLB functionality, and designate a user with ecosystem creator privileges to install applications, receive new members and configure the resources access permissions.")]),e._v(" "),a("h3",{attrs:{id:"clb-usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-usage"}},[e._v("#")]),e._v(" CLB usage")]),e._v(" "),a("p",[e._v("You may use a CLB to create registration forms, send verification information to users via email or phone, and store publicly accessible data. You can write and test applications, and then import them into the blockchain ecosystem. In a CLB, you may use scheduling contract tasks, create oracle machines to receive data from web resources and send such data to the blockchain ecosystem.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{411:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ibax-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-overview"}},[e._v("#")]),e._v(" IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-overview"}},[e._v("IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#features"}},[e._v("Features")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#architecture"}},[e._v("Architecture")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#network"}},[e._v("Network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[e._v("Honor Node")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#transactions"}},[e._v("Transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#network-protocol"}},[e._v("Network protocol")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-and-transaction-verification"}},[e._v("Block and transaction verification")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#database"}},[e._v("Database")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[e._v("ECOLIB")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ide"}},[e._v("IDE")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#applications"}},[e._v("Applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables"}},[e._v("Tables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-parameters"}},[e._v("Ecosystem Parameters")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#access-rights-control-mechanism"}},[e._v("Access rights control mechanism")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#access-rights-management"}},[e._v("Access rights management")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exclusive-rights"}},[e._v("Exclusive rights")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecosystem"}},[e._v("Virtual private ecosystem")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#requests-to-web-resources"}},[e._v("Requests to web resources")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rights-to-read-data"}},[e._v("Rights to read data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-creation"}},[e._v("CLB creation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-usage"}},[e._v("CLB usage")])])])])])])]),e._v(" "),a("h2",{attrs:{id:"features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[e._v("#")]),e._v(" Features")]),e._v(" "),a("p",[e._v("The IBAX Network (IBAX) has an integrated application development environment (IDE). It is a multi-level access control system for data, user pages and smart contracts.")]),e._v(" "),a("p",[e._v("In terms of its structure and functions, IBAX is quite different from most existing blockchain platforms:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The development and use of IBAX applications are in an autonomous software environment called "),a("strong",[e._v("ecosystem")]),e._v(". Each ecosystem has its own membership rules that are initially established by the creator;")])]),e._v(" "),a("li",[a("p",[e._v("Ecosystem activities, such as the data involved in "),a("font",{attrs:{color:"Red"}},[e._v("database table")]),e._v(" records or updates, are based on "),a("strong",[e._v("registers")]),e._v(" created with "),a("strong",[e._v("smart contracts")]),e._v(". In most other blockchain platforms, activities are based on transaction exchange between accounts;")],1)]),e._v(" "),a("li",[a("p",[e._v("The access to "),a("strong",[e._v("registers")]),e._v(" and the control of relationships between ecosystem members are managed by a set of rules called "),a("strong",[e._v("smart laws")]),e._v(".")])])]),e._v(" "),a("h2",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("h3",{attrs:{id:"network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network"}},[e._v("#")]),e._v(" Network")]),e._v(" "),a("p",[e._v("IBAX is built on a peer-to-peer (P2P) network.")]),e._v(" "),a("p",[e._v("Guardian nodes in the network store the latest version of the blockchain database, which records the latest status of IBAX's blockchain.")]),e._v(" "),a("p",[e._v("Network users can receive data by sending requests from the guardian node database via "),a("strong",[e._v("Weaver")]),e._v(" or REST API commands. After signing by users, new requests are sent to the network as transactions in binary format. Essentially, these transactions are commands to modify relevant database records. Transactions are aggregated in blocks, and such blocks are sent to the blockchains of all network nodes. Each guardian node will process the transactions in the block, thereby updating the corresponding data in the database.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor Node")]),e._v(" "),a("p",[e._v("A guardian node which is privileged to generate new blocks in the network is called a honor node. The maximum number of honor nodes is defined by "),a("RouterLink",{attrs:{to:"/es/reference/platform-parameters.html#number-of-nodes"}},[e._v("number_of_nodes")]),e._v(" in the platform parameters table, showing that the number of honor nodes is limited.")],1),e._v(" "),a("p",[e._v("An Honor Node is one of the key components of IBAX Public Network. It executes and validates transactions, collects transaction information from other nodes, adds transactions to the queue, and verifies the correctness and validity of new blocks using the confirmation mechanism. Generally, it has two states: packaging and on-packaging.")]),e._v(" "),a("p",[e._v("An Honor Node in the packaging state delivers the highest performance. It obtains transaction requests to be executed from the transaction queue and verifies the ignature validity and correctness of transactions, e.g. transfer amount, permission for transaction operations, and accurate execution of transactions. All ransactional operations, correct or wrong (wrong transactions will be rolled back), will be written into the block. Wrong transactions will incur a punitive gas fee. Executed transactions are notified to other Honor Nodes along with the block through broadcasting.")]),e._v(" "),a("p",[e._v("An Honor Node in the non-packaging state is mainly responsible for block verification to ensure in-block transactions generated by a packaging node are executed orrectly. In case of an anomaly, it will trigger the exception handling mechanism and IBAX Network will roll back and re-verify the block.")]),e._v(" "),a("p",[e._v("In order to ensure transaction execution efficiency, Honor Nodes collect transaction information constantly.")]),e._v(" "),a("h3",{attrs:{id:"transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transactions"}},[e._v("#")]),e._v(" Transactions")]),e._v(" "),a("p",[e._v("Transactions, including data used to implement "),a("strong",[e._v("smart contracts")]),e._v(", are generated by Weaver.")]),e._v(" "),a("p",[e._v("Transactions are signed by users with a private key. The private key and Weaver's signature function can be stored in browsers, software clients, SIM cards or dedicated physical devices. In the current implementation, the private key is encrypted with the ECDSA algorithm and stored at the Weaver side. All transactions are signed with the ECDSA algorithm.")]),e._v(" "),a("p",[e._v("The structure of a transaction complies with the following format:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("ID - ID of the contract implemented;")])]),e._v(" "),a("li",[a("p",[e._v("Params - parameters sent to the contract;")])]),e._v(" "),a("li",[a("p",[e._v("KeyID - ID of the user sending the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("PublicKey - public key of the honor node;")])]),e._v(" "),a("li",[a("p",[e._v("Time - timestamp generated by the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("EcosystemID - ID of the ecosystem where the transaction is made;")])]),e._v(" "),a("li",[a("p",[e._v("ТokenEcosystem - ID of the ecosystem, 1 by default, and tokens within it are used to cover the transaction costs.")])])]),e._v(" "),a("h3",{attrs:{id:"network-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network-protocol"}},[e._v("#")]),e._v(" Network protocol")]),e._v(" "),a("p",[e._v("Transactions will be sent to honor nodes by users, where they are subject to basic verification to ensure the formats are correct and then are added to the queue. Transactions are also sent to other honor nodes on the network and added to the respective queue.")]),e._v(" "),a("p",[e._v("A honor node is privileged to generate new blocks within a specific time period which is determined by the platform parameter "),a("strong",[e._v("full_nodes")]),e._v(" and a special algorithm. Honor nodes retrieve transactions from queues and send them to the block generator. When generating a new block, transactions in such block will also be processed: each transaction is sent to a virtual machine, where the contract corresponding to the transaction parameters is implemented, thereby updating records in the database.")]),e._v(" "),a("p",[e._v("New blocks should be verified to ensure there are no errors before sending to other honor nodes on other networks.")]),e._v(" "),a("p",[e._v("A new block will be added to the block queue when received by other honor node and, after verification, to the blockchain of the honor node where it is located to process transactions in the block, and thereby updating records in the database.")]),e._v(" "),a("h3",{attrs:{id:"block-and-transaction-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-and-transaction-verification"}},[e._v("#")]),e._v(" Block and transaction verification")]),e._v(" "),a("p",[e._v("After generating or receiving a new block, it will be verified on all other honor nodes, which cover the following:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The first byte of the data received should be 0. If not, the data received will not be considered as a block;")])]),e._v(" "),a("li",[a("p",[e._v("The received block generation timestamp should be before the current timestamp;")])]),e._v(" "),a("li",[a("p",[e._v("The block generation timestamp should correspond to the time interval at which the honor node having privilege to generate new blocks;")])]),e._v(" "),a("li",[a("p",[e._v("The height of a new block should be greater than the height of the largest block on the existing blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the maximum expenses allowed for all transactions in the block;")])]),e._v(" "),a("li",[a("p",[e._v("The block must be properly signed with the secret key of the node which it is located. The signature data should contain:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The height of the block, the hash of the previous block, the timestamp of the block, the ID of the ecosystem where the block is located, and the account address of the honor node of the block;")])]),e._v(" "),a("li",[a("p",[e._v("The position of the honor node in the platform parameter full_nodes array, the Merkel Root (MrklRoot) of all transactions in the block, and the revert hash of the previous block.")])])])])]),e._v(" "),a("p",[e._v("To check the correctness of each transaction in the block with the following methods:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The hash of each transaction must be unique;")])]),e._v(" "),a("li",[a("p",[e._v("A key-signed transaction cannot exceed the limit ("),a("RouterLink",{attrs:{to:"/es/reference/platform-parameters.html#max-tx-block-per-user"}},[e._v("max_tx_block_per_user")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the limit of the maximum transaction size ("),a("RouterLink",{attrs:{to:"/es/reference/platform-parameters.html#max-tx-size"}},[e._v("max_tx_size")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("The transaction time can neither be greater than the block generation time nor be greater than the block generation time plus 600 seconds, and it can be no less than the block generation time minus 86400 seconds;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction must be signed properly;")])]),e._v(" "),a("li",[a("p",[e._v("The user who implements the contract must have sufficient tokens in his account to pay for the transaction cost.")])])]),e._v(" "),a("h3",{attrs:{id:"database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database"}},[e._v("#")]),e._v(" Database")]),e._v(" "),a("p",[e._v("The underlying data storage layer of IBAX Network is a "),a("code",[e._v("PGSQL")]),e._v(" database completely open to the public. Based on the permission design of the IBAX Operating System Platform, users do not need to worry about data security. With an object-oriented design philosophy, IBAX Network pre-compiles data through a relational PGSQL database and improves the data processing efficiency.")]),e._v(" "),a("p",[e._v("You may be interested in the following if you are a technical specialist, or just skip it if you are not.\n① All tables without a number prefix in their name belong to permission tables of IBAX Network Basic;\n② All tables with a number prefix in their name belong to permission tables of ecoLibs.")]),e._v(" "),a("h2",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[e._v("#")]),e._v(" ECOLIB")]),e._v(" "),a("p",[e._v("It is quite easy for users, even common users, to create an ecoLib of their own on the IBAX Network System Platform. We have integrated and developed an application where ecoLib creation takes just one click.")]),e._v(" "),a("p",[e._v("When creating an ecoLib, you can configure the ecosystem parameters and rules, and set the administrator account and charging model. Most importantly, to apply the DPoA consensus within ecoLibs better, creators can set it up by writing or importing their own contracts.")]),e._v(" "),a("p",[e._v("We support quick emission of ecoLib tokens by importing contract templates.")]),e._v(" "),a("p",[e._v("Due to the differences in consensus and management permissions, ecoLibs fall into decentralized and centralized ones. They have no specific advantage or disadvantage by type. You should choose the appropriate one against your service needs. What to do if it is OK for now but not for the future? You can change ecoLib parameters, even the consensus mechanism, token, and governance method, on the IBAX Network System Platform. You can leave it all to the self-governance mechanism maintained by the ecoLib administrator or members (depending on the ecoLib type).")]),e._v(" "),a("p",[e._v("On the IBAX Network System Platform, an ecoLib has complete data control permissions and permissions to design and access independent database tables and fields. In the data control permission design, we support triggering when a field satisfies a logical expression. This feature allows for imagination space in special services like monitoring, logic satisfaction, and triggering by time and specific conditions.")]),e._v(" "),a("p",[e._v("There may be multiple DApps in an ecoLib, and each of them can have independent parameters. An ecoLib is like a platform where you can implement anything you want.")]),e._v(" "),a("p",[e._v("In order to better support ecosystem developers, we provide the editing, management, and development tool Weaver. It will reduce the ecosystem development, maintenance, and management costs greatly.")]),e._v(" "),a("h3",{attrs:{id:"ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[e._v("#")]),e._v(" IDE")]),e._v(" "),a("p",[e._v("Weaver has a complete integrated development environment (IDE) for creating blockchain applications, which does not require software developers to have a deep understanding of the blockchain technology.")]),e._v(" "),a("p",[e._v("Weaver provides a table management tool, contract editor, page editor and other functions needed to create applications in the ecosystem, without the support of any software module.")]),e._v(" "),a("p",[e._v("The IDE mainly includes the following parts:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("list of ecosystem parameters;")])]),e._v(" "),a("li",[a("p",[e._v("contract editor;")])]),e._v(" "),a("li",[a("p",[e._v("table management tool;")])]),e._v(" "),a("li",[a("p",[e._v("page editor and visual page designer;")])]),e._v(" "),a("li",[a("p",[e._v("multi-language resources editor;")])]),e._v(" "),a("li",[a("p",[e._v("application import/export functions.")])])]),e._v(" "),a("h3",{attrs:{id:"applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#applications"}},[e._v("#")]),e._v(" Applications")]),e._v(" "),a("p",[e._v("An application is a collection of elements such as database tables, smart contracts, and user pages with access rights for configuration. The ecosystem to which the application element belongs is indicated by the prefix in the element name, such as "),a("code",[e._v("@1ElementName")]),e._v(", where the ecosystem ID is indicated by the number "),a("code",[e._v("1")]),e._v(" after the "),a("code",[e._v("@")]),e._v(" symbol. When using application elements in the current ecosystem, the prefix "),a("code",[e._v("@1")]),e._v(" can be omitted. These applications can perform useful functions or implement various services.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("In IBAX's database, each ecosystem can create an unlimited number of tables. Tables of a specific ecosystem can be identified by a prefix containing the ecosystem ID, which will not be displayed in Weaver.")]),e._v(" "),a("p",[e._v("A table is not bound in any way and belongs to a certain contract. It can be used by all applications within the scope of the table's access rights.")]),e._v(" "),a("p",[e._v("Each ecosystem can create a set of data tables for developing its applications or may, possibly, access data tables of other ecosystems by specifying the table name prefix.")]),e._v(" "),a("p",[e._v("By configuring access rights through smart laws, data are logged into tables. Smart laws are used for rights management.")]),e._v(" "),a("blockquote",[a("p",[e._v("Table table management tool")])]),e._v(" "),a("p",[e._v("You can find the table management tool in Weaver menu Table, which cover the following functions:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("View the list of tables and their entries;")])]),e._v(" "),a("li",[a("p",[e._v("Create new tables;")])]),e._v(" "),a("li",[a("p",[e._v("Add a table field and specify its data type, such as "),a("code",[e._v("Text, Date/Time, Varchar, Character, JSON, Number, Money, Double, Binary")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Manage privileges for insert, update data and change table structure.")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Table data manipulation")])]),e._v(" "),a("p",[e._v("For better database manipulation, both Needle and Logicor have the "),a("strong",[e._v("DBFind")]),e._v(" function, which is used to retrieve values and data arrays from tables.")]),e._v(" "),a("p",[e._v("The contract language "),a("strong",[e._v("DBInsert")]),e._v(" function is used to add entries to tables. The "),a("strong",[e._v("DBUpdate")]),e._v(" and "),a("strong",[e._v("DBUpdateExt")]),e._v(" functions are used to update the value of an existing entry. During updating, the corresponding data in tables will be updated, and the blockchain will add new transactions while retaining all historical transactions. Data in tables can only be modified and cannot be deleted.")]),e._v(" "),a("p",[e._v("In order to minimize the contract implementation time, the "),a("strong",[e._v("DBFind")]),e._v(" function cannot query multiple tables simultaneously, and JOIN is not supported. Therefore, we recommend not to normalize application tables, but to store all available information in entries or repeat the information available in other tables. This is not mandatory but necessary for a blockchain application. In this case, data should be stored fully, which cannot be updated even if the same data in other tables is updated, though it is updated synchronously in a relational database.")]),e._v(" "),a("h3",{attrs:{id:"ecosystem-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-parameters"}},[e._v("#")]),e._v(" Ecosystem Parameters")]),e._v(" "),a("p",[e._v("You may view and edit the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") in Weaver's menu. Ecosystem parameters can be divided into the following groups:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("General parameters: the account of the ecosystem creator (founder_account) and other information;")])]),e._v(" "),a("li",[a("p",[e._v("Access rights parameters: used to define access permissions for application elements")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("change the table structure (changing_tables);")])]),e._v(" "),a("li",[a("p",[e._v("change the contract (changing_contracts);")])]),e._v(" "),a("li",[a("p",[e._v("change the user page (changing_page);")])]),e._v(" "),a("li",[a("p",[e._v("change the menu (changing_menu);")])]),e._v(" "),a("li",[a("p",[e._v("change the multi-language resources (changing_language).")])])])]),e._v(" "),a("li",[a("p",[e._v("Technical parameters: used to define the user styles (stylesheet);")])]),e._v(" "),a("li",[a("p",[e._v("User parameters: used to define constants or lists (separated by commas) required for application operation.")])])]),e._v(" "),a("p",[e._v("You may specify the edit permission for parameters of each ecosystem.")]),e._v(" "),a("p",[e._v("You may use the EcosysParam function to retrieve the value of an ecosystem parameter by passing the ecosystem parameter title as a parameter to it.")]),e._v(" "),a("h2",{attrs:{id:"access-rights-control-mechanism"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-control-mechanism"}},[e._v("#")]),e._v(" Access rights control mechanism")]),e._v(" "),a("p",[e._v("IBAX has a multi-level access permission management system. By configuring access rights, you can create and change any application element, such as the contracts, tables, user pages, ecosystem parameters. You may also change the access rights through configuration.")]),e._v(" "),a("p",[e._v("By default, all rights in the IBAX ecosystem are managed by its creator, which is defined in the MainCondition contract of each ecosystem. But after creating smart laws, access control can be transferred to all or a group of ecosystem members.\nAccess rights control")]),e._v(" "),a("p",[e._v("The access rights are defined in contract tables ("),a("strong",[e._v("1_contracts")]),e._v(" ), data tables ("),a("strong",[e._v("1_tables")]),e._v(" ), user page tables ("),a("strong",[e._v("1_pages")]),e._v(" ), menu tables ("),a("strong",[e._v("1_menu")]),e._v(" ), and code block tables ("),a("strong",[e._v("1_blocks")]),e._v(" ). You can find the corresponding menus in Weaver.")]),e._v(" "),a("h3",{attrs:{id:"access-rights-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-management"}},[e._v("#")]),e._v(" Access rights management")]),e._v(" "),a("p",[e._v("The rules of access rights are configured by filling in the corresponding contract expressions "),a("strong",[e._v("ContractConditions(“@1MainCondition”)")]),e._v(", "),a("strong",[e._v("ContractAccess(“@1MainCondition”)")]),e._v(" or logical expressions in the permission field. If the result of the request expression passes (true ), then access is granted. Otherwise, access is denied and related operations are terminated.")]),e._v(" "),a("p",[e._v("The easy way to define rights is to enter a logical expression in the right field. For example, "),a("code",[e._v("$key_id == 8919730491904441614")]),e._v(", where "),a("strong",[e._v("$keyid")]),e._v(" represents the ID of an ecosystem member.")]),e._v(" "),a("p",[e._v("The most common and recommended way to define rights is to use the "),a("code",[e._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),e._v(" function. The contract name "),a("strong",[e._v("ContractsName")]),e._v(" is passed to the function as a parameter, and the contract result must be the result of a logical expression (true or false).")]),e._v(" "),a("p",[e._v("Another way to define rights is to use the "),a("code",[e._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),e._v(" function. The contract "),a("strong",[e._v("ContractsName")]),e._v(" qualified to implement the corresponding operation can be passed to the function as a parameter. For example, if the right field of the amount column is configured as "),a("code",[e._v('ContractAccess("@1TokenTransfer")')]),e._v(", then you can only implement the contract "),a("strong",[e._v("@1TokenTransfer")]),e._v(" if you want to change the value in the amount column. The right to access the contract itself can be managed in the conditions section, which are quite complex and may contain many other contracts.")]),e._v(" "),a("h3",{attrs:{id:"exclusive-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exclusive-rights"}},[e._v("#")]),e._v(" Exclusive rights")]),e._v(" "),a("p",[e._v("In case of emergencies or situations that are critical to the operation of an ecosystem, there are many special parameters in the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") (such as "),a("em",[e._v("changing_contracts")]),e._v(", "),a("em",[e._v("changing_pages")]),e._v(" ), etc., which defines rights to access all contracts, data tables, and pages of the current ecosystem. These rights are configured by key contracts.")]),e._v(" "),a("h2",{attrs:{id:"virtual-private-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecosystem"}},[e._v("#")]),e._v(" Virtual private ecosystem")]),e._v(" "),a("p",[e._v("In IBAX, you can create a virtual private ecosystem - "),a("strong",[e._v("Cross Ledgers Base (CLB)")]),e._v(". A CLB has the full functionality of the standard ecosystem, but operates outside the blockchain. In CLB, you can use and create contracts and template languages, tables, and use Weaver to create applications. You may call contracts on the blockchain ecosystem via API.")]),e._v(" "),a("h3",{attrs:{id:"requests-to-web-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requests-to-web-resources"}},[e._v("#")]),e._v(" Requests to web resources")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The main difference between a CLB and a standard ecosystem is that you can use contract functions ([HTTPRequest](../topics/script.md#httprequest)) and ([HTTPPostJSON](../topics/script.md#httppostjson)) to request any web resource within the contract via HTTP / HTTPS requests. Parameters passed to this function include: URLs, request methods (GET or POST), request headers and request parameters.\n")])])]),a("h3",{attrs:{id:"rights-to-read-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rights-to-read-data"}},[e._v("#")]),e._v(" Rights to read data")]),e._v(" "),a("p",[e._v("Though it is readable, data in CLB is not saved within the blockchain. You can choose to grant the read permission to database tables. You can set rights to read for individual columns, or for any row using a special contract.")]),e._v(" "),a("h3",{attrs:{id:"clb-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-creation"}},[e._v("#")]),e._v(" CLB creation")]),e._v(" "),a("p",[e._v("You may create a CLB node on the network. As predefined, the CLB node administrator is privileged to use the ecosystem list with the CLB functionality, and designate a user with ecosystem creator privileges to install applications, receive new members and configure the resources access permissions.")]),e._v(" "),a("h3",{attrs:{id:"clb-usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-usage"}},[e._v("#")]),e._v(" CLB usage")]),e._v(" "),a("p",[e._v("You may use a CLB to create registration forms, send verification information to users via email or phone, and store publicly accessible data. You can write and test applications, and then import them into the blockchain ecosystem. In a CLB, you may use scheduling contract tasks, create oracle machines to receive data from web resources and send such data to the blockchain ecosystem.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/33.720c5bbd.js b/assets/js/33.29e9d8fb.js similarity index 99% rename from assets/js/33.720c5bbd.js rename to assets/js/33.29e9d8fb.js index ef8d7f4..f680c34 100644 --- a/assets/js/33.720c5bbd.js +++ b/assets/js/33.29e9d8fb.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{411:function(e,t,a){"use strict";a.r(t);var i=a(51),o=Object(i.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"the-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[e._v("#")]),e._v(" The IBAX Network")]),e._v(" "),a("p",[e._v("In this section, we will brief you how to use IBAX.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-ibax-network"}},[e._v("The IBAX Network")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#application-developers"}},[e._v("Application developers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[e._v("ECOLIB members")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("ECOLIB applications and platform applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#underlying-model"}},[e._v("Underlying model")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#implementation"}},[e._v("Implementation")])])])])]),e._v(" "),a("p",[e._v("If you are interested in the development, use or management of applications in IBAX, then you may not need to understand it at all.")]),e._v(" "),a("p",[e._v("In IBAX, the blockchain and the blockchain network are hidden from ECOLIB members, administrators, and application developers. IBAX offers "),a("RouterLink",{attrs:{to:"/es/reference/api2.html"}},[e._v("RESTful API")]),e._v(" for all user groups, which provide a tamper-proof and distributed access to the "),a("strong",[e._v("global state")]),e._v(" of the blockchain.")],1),e._v(" "),a("h2",{attrs:{id:"application-developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-developers"}},[e._v("#")]),e._v(" Application developers")]),e._v(" "),a("p",[e._v("In technical terms, the "),a("strong",[e._v("global state")]),e._v(" is a set of data, which is implemented via IBAX's database. From the perspective of application developers, an application interacts with the database by querying, inserting and updating tables.")]),e._v(" "),a("p",[e._v("In IBAX, transactions are written into the blockchain by implementing various contracts. These transactions will call contract codes implemented by blockchain network nodes, which will update the global state (database) accordingly.")]),e._v(" "),a("p",[e._v("For application developers, a contract is a function that data will be written to the database when it is implemented. Pages are like scripts and the page code is a set of page "),a("RouterLink",{attrs:{to:"/es/topics/templates2.html"}},[e._v("template")]),e._v(" functions, some of these functions display page elements, while other data comes from the database. Application developers do not need to understand what are transactions, block generation and consensus algorithms, just use it.")],1),e._v(" "),a("h2",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[e._v("#")]),e._v(" ECOLIB members")]),e._v(" "),a("p",[e._v("Applications written by developers run in an environment called "),a("RouterLink",{attrs:{to:"/es/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(". An application usually serves a specific purpose and complete various tasks together with several other applications.")],1),e._v(" "),a("p",[e._v("A user must become a member of an ECOLIB if wants to access applications in it, and it can be a member of multiple different ECOLIBs at the same time.")]),e._v(" "),a("p",[e._v("ECOLIB members can view and modify the database from application pages, just like filling out forms, clicking buttons and navigating pages in a common web application.")]),e._v(" "),a("h2",{attrs:{id:"ecolib-applications-and-platform-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("#")]),e._v(" ECOLIB applications and platform applications")]),e._v(" "),a("p",[e._v("Applications may fall into "),a("strong",[e._v("ECOLIB applications")]),e._v(" and "),a("strong",[e._v("platform applications")]),e._v(".")]),e._v(" "),a("p",[e._v("ECOLIB applications")]),e._v(" "),a("p",[e._v("An ECOLIB application implements certain unique functions or business processes of an ECOLIB, but it is only available in that ECOLIB.\nPlatform applications")]),e._v(" "),a("p",[e._v("A platform application is applicable to all ECOLIBs. Any application could be developed as a platform application. IBAX developers would provide platform applications that support the core functions for ECOLIB governance, such as voting, notification, and ECOLIB member role management.")]),e._v(" "),a("h2",{attrs:{id:"underlying-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#underlying-model"}},[e._v("#")]),e._v(" Underlying model")]),e._v(" "),a("p",[e._v("Definition of layers")]),e._v(" "),a("p",[e._v("IBAX consists of several layers:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("User interaction layer")]),e._v(" "),a("p",[e._v("ECOLIB members interact with the application through pages and page elements.")])]),e._v(" "),a("li",[a("p",[e._v("Application layer")]),e._v(" "),a("p",[e._v("Application developers interact with the global state (data tables) through contract codes and page codes.")])]),e._v(" "),a("li",[a("p",[e._v("Global state layer")]),e._v(" "),a("p",[e._v("Update and synchronize the global state (database) based on operations written to the distributed ledger (blockchain)")])]),e._v(" "),a("li",[a("p",[e._v("Blockchain layer")]),e._v(" "),a("p",[e._v("Update the distributed ledger with new blocks. Operations (transactions) saved in new blocks must be performed on the global state.")])]),e._v(" "),a("li",[a("p",[e._v("Node network layer")]),e._v(" "),a("p",[e._v("It implemented the IBAX Network protocol, which distributes, verifies transactions and generates new blocks on the node network. Similarly, new blocks are distributed and verified by the node network.")]),e._v(" "),a("p",[e._v("The distributed ledger of all nodes is kept in sync. If having conflicts in a node, the node will identify which blockchains are considered valid and invalid blockchains will be rolled back accordingly.")])]),e._v(" "),a("li",[a("p",[e._v("Transaction layer")]),e._v(" "),a("p",[e._v("Transactions are the basis for generating blocks and blockchain protocols, and transactions themselves are the results of operations performed at the user interaction layer. Transactions are generated by Weaver.")]),e._v(" "),a("p",[e._v("When a user or developer performs an operation such as clicking a button on a page or implement a contract from the code editor, Weaver will convert this operation into a transaction and send it to the network node connected to it.")])])]),e._v(" "),a("p",[e._v("Therefore, the flow of transactions is as follows:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("A user operation in a user page will become a transaction;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction is contained in a block;")])]),e._v(" "),a("li",[a("p",[e._v("The block is included in the blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("The change of operation will cause the global state of the blockchain to change, and such operation will be applied to the database;")])]),e._v(" "),a("li",[a("p",[e._v("Any database change will be reflected in the application.")])])]),e._v(" "),a("h2",{attrs:{id:"implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),a("p",[e._v("IBAX has two major components, i.e. server "),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),a("OutboundLink")],1),e._v(" and Weaver "),a("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source code"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Weaver:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Providing the user pages;")])]),e._v(" "),a("li",[a("p",[e._v("Providing the IDE for application development;")])]),e._v(" "),a("li",[a("p",[e._v("Storing public keys of user accounts and perform authorization;")])]),e._v(" "),a("li",[a("p",[e._v("Requesting database data from application pages and display application pages to users;")])]),e._v(" "),a("li",[a("p",[e._v("Sending transactions to the server through "),a("RouterLink",{attrs:{to:"/es/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),a("p",[e._v("In order to automatically create transactions against user operations, Weaver will convert such operations into transactions when application developers implement a contract from the IDE.")])])]),e._v(" "),a("p",[e._v("Server:")]),e._v(" "),a("ul",[a("li",[e._v("Keeping the global state (database) of the node;")]),e._v(" "),a("li",[e._v("Implementation of the blockchain protocol;")]),e._v(" "),a("li",[e._v("Implementation of contract codes in the IBAX "),a("RouterLink",{attrs:{to:"/es/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of page codes in the "),a("RouterLink",{attrs:{to:"/es/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of "),a("RouterLink",{attrs:{to:"/es/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{415:function(e,t,a){"use strict";a.r(t);var i=a(51),o=Object(i.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"the-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[e._v("#")]),e._v(" The IBAX Network")]),e._v(" "),a("p",[e._v("In this section, we will brief you how to use IBAX.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-ibax-network"}},[e._v("The IBAX Network")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#application-developers"}},[e._v("Application developers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[e._v("ECOLIB members")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("ECOLIB applications and platform applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#underlying-model"}},[e._v("Underlying model")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#implementation"}},[e._v("Implementation")])])])])]),e._v(" "),a("p",[e._v("If you are interested in the development, use or management of applications in IBAX, then you may not need to understand it at all.")]),e._v(" "),a("p",[e._v("In IBAX, the blockchain and the blockchain network are hidden from ECOLIB members, administrators, and application developers. IBAX offers "),a("RouterLink",{attrs:{to:"/es/reference/api2.html"}},[e._v("RESTful API")]),e._v(" for all user groups, which provide a tamper-proof and distributed access to the "),a("strong",[e._v("global state")]),e._v(" of the blockchain.")],1),e._v(" "),a("h2",{attrs:{id:"application-developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-developers"}},[e._v("#")]),e._v(" Application developers")]),e._v(" "),a("p",[e._v("In technical terms, the "),a("strong",[e._v("global state")]),e._v(" is a set of data, which is implemented via IBAX's database. From the perspective of application developers, an application interacts with the database by querying, inserting and updating tables.")]),e._v(" "),a("p",[e._v("In IBAX, transactions are written into the blockchain by implementing various contracts. These transactions will call contract codes implemented by blockchain network nodes, which will update the global state (database) accordingly.")]),e._v(" "),a("p",[e._v("For application developers, a contract is a function that data will be written to the database when it is implemented. Pages are like scripts and the page code is a set of page "),a("RouterLink",{attrs:{to:"/es/topics/templates2.html"}},[e._v("template")]),e._v(" functions, some of these functions display page elements, while other data comes from the database. Application developers do not need to understand what are transactions, block generation and consensus algorithms, just use it.")],1),e._v(" "),a("h2",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[e._v("#")]),e._v(" ECOLIB members")]),e._v(" "),a("p",[e._v("Applications written by developers run in an environment called "),a("RouterLink",{attrs:{to:"/es/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(". An application usually serves a specific purpose and complete various tasks together with several other applications.")],1),e._v(" "),a("p",[e._v("A user must become a member of an ECOLIB if wants to access applications in it, and it can be a member of multiple different ECOLIBs at the same time.")]),e._v(" "),a("p",[e._v("ECOLIB members can view and modify the database from application pages, just like filling out forms, clicking buttons and navigating pages in a common web application.")]),e._v(" "),a("h2",{attrs:{id:"ecolib-applications-and-platform-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("#")]),e._v(" ECOLIB applications and platform applications")]),e._v(" "),a("p",[e._v("Applications may fall into "),a("strong",[e._v("ECOLIB applications")]),e._v(" and "),a("strong",[e._v("platform applications")]),e._v(".")]),e._v(" "),a("p",[e._v("ECOLIB applications")]),e._v(" "),a("p",[e._v("An ECOLIB application implements certain unique functions or business processes of an ECOLIB, but it is only available in that ECOLIB.\nPlatform applications")]),e._v(" "),a("p",[e._v("A platform application is applicable to all ECOLIBs. Any application could be developed as a platform application. IBAX developers would provide platform applications that support the core functions for ECOLIB governance, such as voting, notification, and ECOLIB member role management.")]),e._v(" "),a("h2",{attrs:{id:"underlying-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#underlying-model"}},[e._v("#")]),e._v(" Underlying model")]),e._v(" "),a("p",[e._v("Definition of layers")]),e._v(" "),a("p",[e._v("IBAX consists of several layers:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("User interaction layer")]),e._v(" "),a("p",[e._v("ECOLIB members interact with the application through pages and page elements.")])]),e._v(" "),a("li",[a("p",[e._v("Application layer")]),e._v(" "),a("p",[e._v("Application developers interact with the global state (data tables) through contract codes and page codes.")])]),e._v(" "),a("li",[a("p",[e._v("Global state layer")]),e._v(" "),a("p",[e._v("Update and synchronize the global state (database) based on operations written to the distributed ledger (blockchain)")])]),e._v(" "),a("li",[a("p",[e._v("Blockchain layer")]),e._v(" "),a("p",[e._v("Update the distributed ledger with new blocks. Operations (transactions) saved in new blocks must be performed on the global state.")])]),e._v(" "),a("li",[a("p",[e._v("Node network layer")]),e._v(" "),a("p",[e._v("It implemented the IBAX Network protocol, which distributes, verifies transactions and generates new blocks on the node network. Similarly, new blocks are distributed and verified by the node network.")]),e._v(" "),a("p",[e._v("The distributed ledger of all nodes is kept in sync. If having conflicts in a node, the node will identify which blockchains are considered valid and invalid blockchains will be rolled back accordingly.")])]),e._v(" "),a("li",[a("p",[e._v("Transaction layer")]),e._v(" "),a("p",[e._v("Transactions are the basis for generating blocks and blockchain protocols, and transactions themselves are the results of operations performed at the user interaction layer. Transactions are generated by Weaver.")]),e._v(" "),a("p",[e._v("When a user or developer performs an operation such as clicking a button on a page or implement a contract from the code editor, Weaver will convert this operation into a transaction and send it to the network node connected to it.")])])]),e._v(" "),a("p",[e._v("Therefore, the flow of transactions is as follows:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("A user operation in a user page will become a transaction;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction is contained in a block;")])]),e._v(" "),a("li",[a("p",[e._v("The block is included in the blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("The change of operation will cause the global state of the blockchain to change, and such operation will be applied to the database;")])]),e._v(" "),a("li",[a("p",[e._v("Any database change will be reflected in the application.")])])]),e._v(" "),a("h2",{attrs:{id:"implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),a("p",[e._v("IBAX has two major components, i.e. server "),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),a("OutboundLink")],1),e._v(" and Weaver "),a("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source code"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Weaver:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Providing the user pages;")])]),e._v(" "),a("li",[a("p",[e._v("Providing the IDE for application development;")])]),e._v(" "),a("li",[a("p",[e._v("Storing public keys of user accounts and perform authorization;")])]),e._v(" "),a("li",[a("p",[e._v("Requesting database data from application pages and display application pages to users;")])]),e._v(" "),a("li",[a("p",[e._v("Sending transactions to the server through "),a("RouterLink",{attrs:{to:"/es/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),a("p",[e._v("In order to automatically create transactions against user operations, Weaver will convert such operations into transactions when application developers implement a contract from the IDE.")])])]),e._v(" "),a("p",[e._v("Server:")]),e._v(" "),a("ul",[a("li",[e._v("Keeping the global state (database) of the node;")]),e._v(" "),a("li",[e._v("Implementation of the blockchain protocol;")]),e._v(" "),a("li",[e._v("Implementation of contract codes in the IBAX "),a("RouterLink",{attrs:{to:"/es/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of page codes in the "),a("RouterLink",{attrs:{to:"/es/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of "),a("RouterLink",{attrs:{to:"/es/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/75.15c05bc2.js b/assets/js/38.d62d2f87.js similarity index 99% rename from assets/js/75.15c05bc2.js rename to assets/js/38.d62d2f87.js index 9c5997c..5d88ca9 100644 --- a/assets/js/75.15c05bc2.js +++ b/assets/js/38.d62d2f87.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{457:function(e,t,a){"use strict";a.r(t);var s=a(51),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[e._v("#")]),e._v(" RESTful API v2")]),e._v(" "),a("p",[e._v("Weaver\nAll functions provided, including authentication, ecosystem data reception, error handling, database table manipulation, page and contract execution are available through\nIBAX Blockchain Platform's REST API is available.")]),e._v(" "),a("p",[e._v("By using the REST API, developers can access any of the platform's features without using Weaver.")]),e._v(" "),a("p",[e._v("API command calls are executed by addressing "),a("code",[e._v("/api/v2/command/[param]")]),e._v(", where "),a("code",[e._v("command")]),e._v("\nis the command name and "),a("code",[e._v("param")]),e._v(" is the additional parameter. The request parameters must be specified using the\n"),a("code",[e._v("Content-Type: x-www-form-urlencoded")]),e._v("\nThe format is sent. The server response result is in JSON format.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-response-handling"}},[e._v("Error response handling")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-list"}},[e._v("Error list")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#request-type"}},[e._v("Request Type")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#authentication-interface"}},[e._v("Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[e._v("getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#login"}},[e._v("login")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#server-side-command-interface"}},[e._v("Server Side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#version"}},[e._v("version")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-request-function-interface"}},[e._v("Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#balance"}},[e._v("balance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blocks"}},[e._v("blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#keyinfo"}},[e._v("keyinfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#wallethistory"}},[e._v("walletHistory")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#get-metrics-interface"}},[e._v("Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-honornodes"}},[e._v("metrics/honornodes")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-interface"}},[e._v("Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ecosystemname"}},[e._v("ecosystemname")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[e._v("appparams/{appID}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparams"}},[e._v("ecosystemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-name"}},[e._v("table/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-column-id"}},[e._v("row/{name}/{column}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#systemparams"}},[e._v("systemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-function-interface"}},[e._v("Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sendtx"}},[e._v("sendTX")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[e._v("txstatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[e._v("txinfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content"}},[e._v("content")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[e._v("maxblockid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[e._v("block/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[e._v("updnotificator")])])])])]),e._v(" "),a("h2",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Return status in case of successful request execution\n"),a("code",[e._v("200")]),e._v(". If an error occurs, in addition to the error status, a JSON object with the following fields will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("error")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error identifier.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("msg")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error text message.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")])]),e._v(" "),a("blockquote",[a("p",[e._v("An array of additional parameters that can be placed in the error message.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('400 (Bad request)\nContent-Type: application/json\n{\n "err": "E_INVALIDWALLET",\n "msg": "Wallet 1234-5678-9012-3444-3488 is not valid",\n "params": ["1234-5678-9012-3444-3488"]\n}\n')])])]),a("h3",{attrs:{id:"error-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-list"}},[e._v("#")]),e._v(" Error list")]),e._v(" "),a("blockquote",[a("p",[e._v("E_CONTRACT")])]),e._v(" "),a("p",[e._v("No "),a("code",[e._v("%s")]),e._v(" contract exists")]),e._v(" "),a("blockquote",[a("p",[e._v("E_DBNIL")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database is empty\n")])])]),a("blockquote",[a("p",[e._v("E_DELETEDKEY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address is frozen\n")])])]),a("blockquote",[a("p",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Ecosystem `%d` does not exist\n")])])]),a("blockquote",[a("p",[e._v("E_EMPTYPUBLIC")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Invalid account public key\n")])])]),a("blockquote",[a("p",[e._v("E_KEYNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address not found\n")])])]),a("blockquote",[a("p",[e._v("E_HASHWRONG")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect hash\n")])])]),a("blockquote",[a("p",[e._v("E_HASHNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Hash not found\n")])])]),a("blockquote",[a("p",[e._v("E_HEAVYPAGE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Too much page loading\n")])])]),a("blockquote",[a("p",[e._v("E_INVALIDWALLET")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Wallet address `%s` Invalid\n")])])]),a("blockquote",[a("p",[e._v("E_LIMITTXSIZE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The transaction size has exceeded the limit\n")])])]),a("blockquote",[a("p",[e._v("E_NOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Page or menu content not found\n")])])]),a("blockquote",[a("p",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Parameters not found\n")])])]),a("blockquote",[a("p",[e._v("E_PERMISSION")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("No permission\n")])])]),a("blockquote",[a("p",[e._v("E_QUERY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database query error\n")])])]),a("blockquote",[a("p",[e._v("E_RECOVERED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("API panic error occurs.\n\nIf a panic error occurs, an error is returned.\n\nThis error means that you have encountered a bug that needs to be found and fixed.\n")])])]),a("blockquote",[a("p",[e._v("E_SERVER")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Server error.\n\nReturn if there is an error in the golang library function. The \\*msg\\* field contains the error text message.\n\n**E_SERVER** may appear in response to any command Error. \nIf it occurs due to an incorrect input parameter, it can be changed to a related error. In another case, this error reports an invalid operation or incorrect system configuration, which requires a more detailed investigation report.\n")])])]),a("blockquote",[a("p",[e._v("E_SIGNATURE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect signature\n")])])]),a("blockquote",[a("p",[e._v("E_STATELOGIN")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("`%s` is not a member of the ecosystem `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Data sheet `%s` not found\n")])])]),a("blockquote",[a("p",[e._v("E_TOKENEXPIRED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The session has expired `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_UNAUTHORIZED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unauthorized.\n\nIn case no login is performed or the session expires, \nexcept for `getuid, login` Any command other than **E_UNAUTHORIZED** returns an error.\n")])])]),a("blockquote",[a("p",[e._v("E_UNKNOWNUID")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unknown UID\n")])])]),a("blockquote",[a("p",[e._v("E_UPDATING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Nodes are updating the blockchain\n")])])]),a("blockquote",[a("p",[e._v("E_STOPPING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Node is stopped\n")])])]),a("blockquote",[a("p",[e._v("E_NOTIMPLEMENTED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Not yet achieved\n")])])]),a("blockquote",[a("p",[e._v("E_BANNED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("This account address is prohibited in `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_CHECKROLE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Access denied\n\nCLB Unavailable Interface\n")])])]),a("hr"),e._v(" "),a("blockquote",[a("p",[e._v("Interface requests for which the CLB node is not available.")])]),e._v(" "),a("ul",[a("li",[e._v("metrics")]),e._v(" "),a("li",[e._v("txinfo")]),e._v(" "),a("li",[e._v("txinfoMultiple")]),e._v(" "),a("li",[e._v("appparam")]),e._v(" "),a("li",[e._v("appparams")]),e._v(" "),a("li",[e._v("appcontent")]),e._v(" "),a("li",[e._v("history")]),e._v(" "),a("li",[e._v("balance")]),e._v(" "),a("li",[e._v("block")]),e._v(" "),a("li",[e._v("maxblockid")]),e._v(" "),a("li",[e._v("blocks")]),e._v(" "),a("li",[e._v("detailed_blocks")]),e._v(" "),a("li",[e._v("ecosystemparams")]),e._v(" "),a("li",[e._v("systemparams")]),e._v(" "),a("li",[e._v("ecosystems")]),e._v(" "),a("li",[e._v("ecosystemparam")]),e._v(" "),a("li",[e._v("ecosystemname")]),e._v(" "),a("li",[e._v("walletHistory")]),e._v(" "),a("li",[e._v("tx_record")])]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request Type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("application/x-www-form-urlencoded")])]),e._v(" "),a("h2",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://jwt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("JWT token"),a("OutboundLink")],1),e._v("\nUsed for authentication. The JWT token must be placed in each request header after it is received: "),a("code",[e._v("Authorization: Bearer TOKEN_HERE")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[e._v("#")]),e._v(" getuid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ returns a unique value, signs it with the private key, and then uses\nThe "),a("a",{attrs:{href:"#login"}},[e._v("login")]),e._v(" command sends it back to the server.")]),e._v(" "),a("p",[e._v("Generate a temporary JWT token that needs to be passed to "),a("strong",[e._v("Authorization")]),e._v(" when calling "),a("strong",[e._v("login")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/getuid\n")])])]),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("uid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Signature number.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("The temporary token passed during login.")]),e._v(" "),a("p",[e._v("The life cycle of a temporary token is 5 seconds.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("cryptoer")])]),e._v(" "),a("blockquote",[a("p",[e._v("Elliptic curve algorithm.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hasher")])]),e._v(" "),a("blockquote",[a("p",[e._v("hash algorithm.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-1"}},[e._v("#")]),e._v(" Response Example 1")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "uid": "4999317241855959593",\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....... .I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"\n "network_id": "4717243765193692211"\n}\n')])])]),a("p",[e._v("In the case that no authorization is required (the request contains "),a("strong",[e._v("Authorization")]),e._v("), the following message will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("expire")])]),e._v(" "),a("blockquote",[a("p",[e._v("Expiration time.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-2"}},[e._v("#")]),e._v(" Response Example 2")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "expire": "2159h59m49.4310543s",\n "ecosystem_id": "1",\n "key_id": "-654321",\n "address": "1196-...... -3496",\n "network_id": "1"\n}\n')])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[e._v("#")]),e._v(" login")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/ User authentication.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("getuid")]),e._v(" should be called first\ncommand in order to receive the unique value and sign it. getuid's temporary JWT token needs to be passed in the request header.")]),e._v(" "),a("p",[e._v("If the request is successful, the token received in the response is contained in "),a("strong",[e._v("Authorization")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/login\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")]),e._v(" "),a("p",[e._v("If not specified, defaults to the first ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[expire]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Lifecycle of the JWT token, in seconds, default is 28800.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[pubkey]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal account public key.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[key_id]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("signature")])]),e._v(" "),a("blockquote",[a("p",[e._v("The uid signature received via getuid.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("JWT token.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account Address ID")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("account")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("notify_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Notification ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isnode")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isowner")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the creator of the ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("clb")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the logged-in ecosystem is CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role list: "),a("code",[e._v("[{Role ID,Role Name}]")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-3"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.....30l665h3v7lH85rs5jgk0",\n "ecosystem_id": "1",\n "key_id": "-54321",\n "account": "1285-... -7743-4282",\n "notify_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..... _JTFfheD0K4CfMbvVNpOJVMNDPx25zIDGir9g3ZZM0w",\n "timestamp": "1451309883",\n "roles": [\n {\n "role_id": 1,\n "role_name": "Developer"\n }\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")])]),e._v(" "),a("h2",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" Server Side command interface")]),e._v(" "),a("h3",{attrs:{id:"version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[e._v("#")]),e._v(" version")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current server version.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/version\n")])])]),a("h4",{attrs:{id:"response-example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-4"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n"1.3.0 branch.main commit.790..757 time.2021-08-23-08:20:19(UTC)"\n')])])]),a("h2",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[e._v("#")]),e._v(" balance")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Requests the balance of the account address in the current ecosystem.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/balance/{wallet}\n")])])]),a("ul",[a("li",[a("p",[e._v("*wallet")]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(". Look up the address in the ecosystem where the user is currently logged in.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default eco1")]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem id.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("amount")])]),e._v(" "),a("blockquote",[a("p",[e._v("The minimum unit of contract account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("money")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("utxo")])]),e._v(" "),a("blockquote",[a("p",[e._v("UTXO account balance.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-5"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "amount": "877450000000000",\n "money": "877.45",\n "total": "877450000000000",\n "utxo": "0"\n} \n')])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[e._v("#")]),e._v(" blocks")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing additional information related to the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-5"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET \n/api/v2/blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information for each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("contract_name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("params")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of contract parameters.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("For the first block, it is the account address of the first block that signed the transaction.")])]),e._v(" "),a("blockquote",[a("p",[e._v("For all other blocks, is the address of the account that signed the transaction.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-6"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "1":\n [{"hash": "O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"detailed-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detailed-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-6"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/detailed_blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("blockhead")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block header contains the following fields.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("block_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block height.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for the block.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("node_position")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("The location of the node that generated the block in the honor node list.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("version")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block structure version.")])])])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block Hashing.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("node_position")])])]),e._v(" "),a("p",[e._v("the location of the node that generated the block in the honor node list.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("time")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("tx_count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of transactions within the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("size")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block size.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("rollback_hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("merkle_root")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block deals with the Merkle tree.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bin_data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("trading")])])]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information about each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trading hash.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("contract_name")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract name.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("params")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract parameters.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for this transaction.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("type")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction type.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("size")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trade Size.")])])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-7"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"1":\n {"header":\n {"block_id":1,\n "time":1551069320,\n "ecosystem_id":0,\n "key_id":-118432674655542910,\n "node_position":0,\n "version":1},\n "hash":"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI=",\n "ecosystem_id":0,\n "node_position":0,\n "key_id":-118432674655542910,\n "time":1551069320,\n "tx_count":1,\n "size": "1.69KiB",\n "rollbacks_hash":"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k=",\n "mrkl_root":"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg==",\n "bin_data":null,\n "sys_update":false,\n "gen_block":false,\n "stop_count":0,\n "transactions":[\n {\n "hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":0,\n "time":0,\n "type":0,\n "size": "300.00B"\n }\n ]}\n}\n')])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystems with roles registered to the specified address.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-7"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{key_id}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("The request is queried in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-6"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of roles with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-8"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"data-id-data-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-id-data-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matching the data in the binary watch, field, and records, this request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-8"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{id}/data/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-7"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-9"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\n{\n "name": "NFT Miner",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "data": [\n {\n "Type": "contracts",\n "Name": "NewNFTMiner",\n },\n ...\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matches the data in the specified table, field, and records, the request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-9"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{table}/id/{column}/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("table")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name, only one")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-8"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-10"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\nContent-Disposition: attachment\n\nSetVar(this_page, @1voting_list).(this_table, @1votings)\nInclude(@1pager_header)\n\nSetTitle("$@1voting_list$")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: "$@1votings_list_desc$"))\nAddToolButton(Title: $@1templates_list$, Page: @1voting_templates_list, Icon: icon-pin)\nAddToolButton(Title: $@1create$, Page: @1voting_create, Icon: icon-plus).Popup(60, $@1new_voting$)\n\n')])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo-2"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to a list of ecosystems, which contains the role of registered the specified address.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-10"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{address}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, you can specify "),a("code",[e._v("int64, uint64, xxxx -...-xxxx")]),e._v(".")]),e._v(" "),a("p",[e._v("This request is query in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-9"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecological system name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("Activities with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-11"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"wallethistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallethistory"}},[e._v("#")]),e._v(" walletHistory")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the current account transaction history record, find it according to the ID of the ID")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-11"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("searchType")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find Type (Income: Turn into Outcom: Turn out all: All, default).")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[page]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find the number of pages, the first page default, min: 1")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 20 articles. min: 1, MAX: 500")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/walletHistory?searchType=all&page=1&limit=10\n")])])]),a("h4",{attrs:{id:"response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-10"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("page")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of current page.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("limit")])]),e._v(" "),a("blockquote",[a("p",[e._v("Currently find the number of bars.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("sender_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Send key_id")])])]),e._v(" "),a("li",[a("em",[e._v("sender_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Send the account address")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept key_id")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept the account address")])])]),e._v(" "),a("li",[a("em",[e._v("amount")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])]),e._v(" "),a("li",[a("em",[e._v("comment")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading remarks")])])]),e._v(" "),a("li",[a("em",[e._v("block_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Block height")])])]),e._v(" "),a("li",[a("em",[e._v("tx_hash")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading hash")])])]),e._v(" "),a("li",[a("em",[e._v("created_at")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction creation time, millisecond time stamp")])])]),e._v(" "),a("li",[a("em",[e._v("money")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-12"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "page": 1,\n "limit": 10,\n "total": 617,\n "list": [\n {\n "id": 650,\n "sender_id": 666081971617879...,\n "sender_add": "0666-0819-7161-xxxx-5186",\n "recipient_id": 666081971617879...,\n "recipient_add": "0666-0819-7161-xxxx-5186",\n "amount": "242250000",\n "comment": "taxes for execution of @1Export contract",\n "block_id": 209,\n "tx_hash": "a213bc767d710a223856d83515d53518075b56fb9e9c063bce8a256c20ff0775",\n "created_at": 1666001092090,\n "money": "0.00024225"\n }\n ...\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"listwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#listwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-12"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/listWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-11"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-13"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"nodelistwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nodelistwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the specified data table. You can specify columns to be returned. The type in the data table is "),a("strong",[e._v("BYTEA")]),e._v(" Do hexadecimal encoding processing")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-13"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/nodelistWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-12"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-14"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("h3",{attrs:{id:"metrics-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-keys"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystem 1 account addresses.")]),e._v(" "),a("h4",{attrs:{id:"request-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-14"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/keys\n")])])]),a("h4",{attrs:{id:"response-example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-15"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of blocks.")]),e._v(" "),a("h4",{attrs:{id:"request-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-15"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/blocks\n")])])]),a("h4",{attrs:{id:"response-example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-16"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-transactions"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the total number of transactions.")]),e._v(" "),a("h4",{attrs:{id:"request-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-16"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/transactions\n")])])]),a("h4",{attrs:{id:"response-example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-17"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-ecosystems"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystems.")]),e._v(" "),a("h4",{attrs:{id:"request-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-17"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/ecosystems\n")])])]),a("h4",{attrs:{id:"response-example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-18"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-honornodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-honornodes"}},[e._v("#")]),e._v(" metrics/honornodes")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of honor nodes.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/honornodes\n")])])]),a("h4",{attrs:{id:"response-example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-19"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h2",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("h3",{attrs:{id:"ecosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[e._v("#")]),e._v(" ecosystemname")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the name of the ecosystem by its identifier.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemname?id=1\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-20"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "ecosystem_name": "platform_ecosystem"\n}\n')])])]),a("h4",{attrs:{id:"error-response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-13"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparams-appid"}},[e._v("appparams/{appid}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of application parameters in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-18"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparams/{appid}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[appid]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID; if not specified, the current ecosystem parameter will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of received parameters.")]),e._v(" "),a("p",[e._v("You can specify a comma-separated list of parameter names, for example:"),a("code",[e._v("/api/v2/appparams/1?names=name,mypar")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-13"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")]),e._v(", the name of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("value")]),e._v(", the value of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("conditions")]),e._v(", change the permissions of the parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-21"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "mypar",\n "value": "My value",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-14"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the parameter "),a("strong",[e._v("{appid}")]),e._v(" of the application "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem\nThe information related to the")]),e._v(" "),a("h4",{attrs:{id:"request-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-19"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparam/{appid}/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("appid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID (optional parameter).")]),e._v(" "),a("p",[e._v("Returns the current ecosystem by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-14"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-22"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "10",\n "name": "par",\n "value": "My value",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-15"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM, E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[e._v("#")]),e._v(" ecosystemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystem parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-20"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparams/[?ecosystem=... &names=...]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID. if not specified, the current ecosystem ID will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("List of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example: "),a("code",[e._v("/api/v2/ecosystemparams/?names=name,currency,logo")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-15"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter value.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change permissions for parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-23"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "currency",\n "value": "MY",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-16"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the parameter "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-21"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparam/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The default is to return the current ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-16"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-24"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "name": "currency",\n "value": "MYCUR",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-17"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of data tables for the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-22"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 100, maximum 1000.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/tables?limit=... &offset=...\n")])])]),a("h4",{attrs:{id:"response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-17"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("The total number of entries in the data table.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name without prefix.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of entries in the data table.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-25"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "100"\n "list": [{ \n "name": "accounts",\n "count": "10",\n }, \n { \n "name": "citizens",\n "count": "5",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"table-name"}},[e._v("table/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the current ecosystem request data table.")]),e._v(" "),a("h4",{attrs:{id:"request-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-23"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[name]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/table/{table_name}\n")])])]),a("p",[e._v("Returns the following field information.")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("insert")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to add new entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("new_column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Add field permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("update")])]),e._v(" "),a("blockquote",[a("p",[e._v("Change entry permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("columns")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of field-related information.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("type")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field data type.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("perm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permissions for the field value.")])])])])])]),e._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/\nReturns a list of the specified data table entries in the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-24"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/list/mytable?columns=name\n")])])]),a("h4",{attrs:{id:"response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-18"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-26"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "John",\n }, \n { \n "id": "2",\n "name": "Mark",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the "),a("em",[e._v("sections")]),e._v(" of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("h4",{attrs:{id:"request-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-25"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[lang]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("This field specifies the multilingual resource code or localization, e.g., "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g., "),a("em",[e._v("en-US")]),e._v(", then the multilingual resource group in\nSearch in "),a("em",[e._v("en")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/sections\n")])])]),a("h4",{attrs:{id:"response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-19"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("sections")]),e._v(" Total number of table entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains information about all columns in the actions table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-27"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "2"\n "list": [{\n "id": "1",\n "title": "Development",\n "urlpage": "develop",\n ...\n },\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-18"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-id-columns-span"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns-span"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]< /span>")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the entry for the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-26"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/row/mytable/10?columns=name\n")])])]),a("h4",{attrs:{id:"response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-20"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of received column values")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-28"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "values": {\n "id": "10",\n "name": "John",\n }\n} \n')])])]),a("h4",{attrs:{id:"error-response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-19"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-column-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-column-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-colorn-id"}},[e._v("row/{name}/{column}/{id} ")])]),e._v(" "),a("p",[e._v("[Authorization] (#Authorization)")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-27"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Name *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[e._v("*colorn *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data list name.")])])]),e._v(" "),a("li",[a("p",[e._v("*ID *")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[e._v("\\ [columns ] * [omitempty] (#omitempty)")]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request lists is separated by commas. If it is not specified, all columns will be returned. In all cases, the ID column will be returned.")])])])])])]),e._v(" "),a("p",[a("code",[e._v("`default GET /API/V2/ROW/MyTable/name/John? Columns = name")]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-21"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Value *")]),e._v(" "),a("blockquote",[a("p",[e._v("Array of receiving column values\nForecast")]),e._v(" "),a("ul",[a("li",[e._v("*ID *")])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Strip ID.")])])]),e._v(" "),a("ul",[a("li",[e._v("-The sequence of the request column.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-29"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("p",[a("code",[e._v('`default 200 (OK) Content-type: Application/JSON {{ "Values": { "ID": "10", "name": "John", } }')]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"error-response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-20"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[e._v("#")]),e._v(" systemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of platform parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-28"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/systemparams/[?names=...]\n")])])]),a("ul",[a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("*\\[names\\]* [Omitempty](#omitempty)\n\nA list of request parameters, separated by commas. For example\n `/api/v2/systemparams/?names=max_columns,max_indexes`.\n")])])]),a("h4",{attrs:{id:"response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-22"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter values.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-30"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "max_columns",\n "value": "100",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n { \n "name": "max_indexes",\n "value": "1",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-21"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the change record for the entry in the specified data table in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-29"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/history?name=contracts&id=5\n")])])]),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("p",[e._v("Data Table Name.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("h4",{attrs:{id:"response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-23"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("list")])])]),e._v(" "),a("p",[e._v("Each element of the array contains a change record for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"response-example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-31"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [\n {\n "name": "default_page",\n "value": "P(class, Default Ecosystem Page)"\n },\n {\n "menu": "default_menu"\n }\n ]\n}\n')])])]),a("h3",{attrs:{id:"interface-page-menu-snippet-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current ecosystem in the specified data table (pages, menu or snippet) "),a("em",[e._v("name")]),e._v("\nThe entry for the field.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/interface/page/default_page\n/api/v2/interface/menu/default_menu\n/api/v2/interface/snippet/welcome\n")])])]),a("h4",{attrs:{id:"request-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-30"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the name of the entry in the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-24"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("other")])]),e._v(" "),a("blockquote",[a("p",[e._v("Other columns of the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-32"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "1",\n "name": "default_page",\n "value": "P(Page content)",\n "default_menu": "default_menu",\n "validate_count": 1\n} \n')])])]),a("h4",{attrs:{id:"error-response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-22"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_QUERY")]),e._v(", "),a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of contracts in the current ecosystem, with the ability to set offsets and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-31"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contracts\n")])])]),a("h4",{attrs:{id:"response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-25"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract contents.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("wallet_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The account address to which the contract is tied.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("address")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("ecosystem_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("app_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The application ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the contract.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("token_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ID of the ecosystem where the pass is used to pay the contract fee.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-33"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "MainCondition",\n "token_id": "1", \n "wallet_id": "0", \n "value": "contract MainCondition {\nconditions {\n if(EcosysParam(`founder_account`)! =$key_id)\n {\n warning `Sorry, you dont have access to this action.`\n }\n }\n}",\n"address": "0000-0000-0000-0000-0000-0000",\n"conditions": "ContractConditions(`MainCondition`)" \n }, \n...\n ]\n} \n')])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified contract. The default is to query the contract in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-32"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contract/mycontract\n")])])]),a("h4",{attrs:{id:"response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-26"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID in VM.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("state")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the contract.")])])]),e._v(" "),a("li",[a("p",[e._v("*walletid")]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account to which the contract is tied.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tokenid")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the pass that is used to pay for the contract.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tableid")])]),e._v(" "),a("p",[e._v("ID of the entry in the > "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("fields")])])]),e._v(" "),a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("> The array contains structural information for each parameter of the contract **data** section.\n>\n> > - *name*\n> >\n> > > Parameter name.\n> >\n> > - \n> >\n> > *type*\n> >\n> > Parameter type.\n> >\n> > - *optional*\n> >\n> > > Parameter options, \\`true\\` means optional parameters, \\`false\\` means mandatory parameters.\n")])])]),a("h4",{attrs:{id:"response-example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-34"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "fields" : [\n {"name": "amount", "type": "int", "optional": false},\n {"name": "name", "type": "string", "optional": true}\n ],\n "id": 150,\n "name":"@1mycontract",\n "tableid" : 10,\n} \n')])])]),a("h4",{attrs:{id:"error-response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-23"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_CONTRACT")])]),e._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[e._v("#")]),e._v(" sendTX")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReceives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an Error Response.")]),e._v(" "),a("h4",{attrs:{id:"request-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-33"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tx_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction content, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/sendTx\n\nHeaders:\nContent-Type: multipart/form-data\n\nParameters:\ntx1 - Transaction 1\ntxN - Trading N\n")])])]),a("h4",{attrs:{id:"response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-27"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hashes")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash arrays.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("tx1")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading 1 hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("txN")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading N's hash.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-35"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hashes": {\n "tx1": "67afbc435634..... ",\n "txN": "89ce4498eaf7..... ",\n}\n')])])]),a("h4",{attrs:{id:"error-response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-24"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_LIMITTXSIZE")]),e._v(","),a("em",[e._v("E_BANNED")])]),e._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[e._v("#")]),e._v(" txstatus")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReturns the block ID and error message for the specified transaction hash. If the return values for the block ID and error text message are null, then the transaction is not yet contained in the block.")]),e._v(" "),a("h4",{attrs:{id:"request-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-34"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON list of transaction hashes.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/txstatus/\n")])])]),a("h4",{attrs:{id:"response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-28"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("blockid")])])]),e._v(" "),a("p",[e._v("If the transaction execution succeeds, the block ID is returned; if the transaction execution fails, the")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")]),e._v(" for [0]{.title-ref}.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("result")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("errmsg")])])]),e._v(" "),a("p",[e._v("Returns an error text message if the execution of the transaction fails.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-36"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n {\n "hash1": {\n "blockid": "3123",\n "result": "",\n },\n "hash2": {\n "blockid": "3124",\n "result": "",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-25"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG, E_HASHNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. Also returns the contract name and its associated parameters, if optional parameters are specified.")]),e._v(" "),a("h4",{attrs:{id:"request-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-35"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1\n")])])]),a("h4",{attrs:{id:"response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-29"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("blockid")])]),e._v(" "),a("blockquote",[a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("confirm")])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("data")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-37"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "blockid": "9",\n "confirm": 11,\n "data": {\n "block": "9",\n "contract": "@1NewContract",\n "params": {\n "ApplicationId": 1,\n "Conditions": "true",\n "Value": "contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t\\t}"\n }\n }\n}\n')])])]),a("h4",{attrs:{id:"error-response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-26"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[e._v("#")]),e._v(" txinfoMultiple")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns the transaction-related information for the specified hash.")]),e._v(" "),a("h4",{attrs:{id:"request-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-36"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hashes")])])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of transaction hashes.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('data: {"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfoMultiple\n")])])]),a("h4",{attrs:{id:"response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-30"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")])])])]),e._v(" "),a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[a("em",[e._v("confirm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-38"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n { \n "hash1": {\n "blockid": "3123",\n "confirm": "5",\n },\n "hash2": {\n "blockid": "3124",\n "confirm": "3",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-27"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"request-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-37"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, then search in the first ecosystem page by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/page/validators_count/@2page_name\n")])])]),a("h4",{attrs:{id:"response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-31"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("validate_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the number of nodes to be validated for the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-39"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-28"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a tree of code JSON objects for the specified page or menu name, which is the result of processing by the template engine.")]),e._v(" "),a("h4",{attrs:{id:"request-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-38"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name or menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current ecosystem page or menu by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/page/default\n")])])]),a("h4",{attrs:{id:"response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-32"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("menu")]),e._v(" || "),a("em",[e._v("title")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The name of the menu to which the page belongs when requesting it.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("menutree")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The page's menu JSON object tree when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("title")]),e._v("--head for the menu "),a("em",[e._v("content/menu/...")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/menu/...")]),e._v(" Menu title when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page or menu JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-40"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-29"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v('Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.\nRequest """""""')]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current eco-page by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-33"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/source/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree of the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-41"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-30"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page cannot be found.")]),e._v(" "),a("p",[e._v("This request does not require login authorization. To receive the correct hash when making requests to other nodes, you must also pass\n"),a("em",[e._v("ecosystem,keyID,roleID,isMobile")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-39"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/hash/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the page with the ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("keyID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roleID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isMobile")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter identification of the mobile platform.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-34"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-42"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n} \n')])])]),a("h4",{attrs:{id:"error-response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-31"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")])]),e._v(" "),a("h3",{attrs:{id:"content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content"}},[e._v("#")]),e._v(" content")]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" is specified as\n"),a("code",[e._v("true or 1")]),e._v(", then this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-40"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("template")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page code.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[source]")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("true or 1")]),e._v(" is specified, the JSON object tree does not perform any functions and receives data.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content\n")])])]),a("h4",{attrs:{id:"response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-35"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-43"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-32"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[e._v("#")]),e._v(" maxblockid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the highest block ID on the current node.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-41"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/maxblockid\n")])])]),a("h4",{attrs:{id:"response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-36"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("max_block_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The highest block ID on the current node.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-44"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "max_block_id" : 341,\n}\n')])])]),a("h4",{attrs:{id:"error-response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-33"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"block-id"}},[e._v("block/{id}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified block ID.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-42"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/block/32\n")])])]),a("h4",{attrs:{id:"response-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-37"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("time")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tx_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of transactions in the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("rollbacks_hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("node_position")])]),e._v(" "),a("blockquote",[a("p",[e._v("The position of the block in the honor node list.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-45"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek=",\n "key_id": -118432674655542910,\n "time": 1551145365,\n "tx_count": 3,\n "rollbacks_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",\n "node_position": 0,\n} \n')])])]),a("h4",{attrs:{id:"error-response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-34"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the avatar of the user in the "),a("em",[e._v("member")]),e._v(" table (available without login).")]),e._v(" "),a("h4",{attrs:{id:"request-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-43"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("member")])]),e._v(" "),a("blockquote",[a("p",[e._v("The user's account address. (xxxx-... -xxxx)")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/avatar/1/1234-2134-... -4321\n")])])]),a("h4",{attrs:{id:"response-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-38"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The request header "),a("em",[e._v("Content-Type")]),e._v(" is the image type and the image data is returned in the response body.")]),e._v(" "),a("h4",{attrs:{id:"response-example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-46"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("200 (OK)\nContent-Type: image/png \n")])])]),a("h4",{attrs:{id:"error-response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-35"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")]),e._v(" "),a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the host address and port of centrifugo.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-44"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/config/centrifugo\n")])])]),a("h4",{attrs:{id:"response-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-39"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Response result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-36"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[e._v("#")]),e._v(" updnotificator")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/")]),e._v(" "),a("p",[e._v("(Discarded)")]),e._v(" "),a("p",[e._v("Sends all messages that have not yet been sent to the centrifugo notification service. Sends only messages for the specified ecosystem and members.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-45"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Member's account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/updnotificator\n")])])]),a("h4",{attrs:{id:"response-example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-47"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "result": true\n} \n')])])]),a("h3",{attrs:{id:"special-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-instructions"}},[e._v("#")]),e._v(" Special instructions")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("If the field has an omitempty attribute, it means that the field is an optional parameter")]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("If the interface with Authorization tag, that this interface requires login authorization, add Authorization to the request header, example.")]),e._v(" "),a("p",[e._v('key = Authorization\nvalue = "Bearer + '),a("a",{attrs:{href:"#login"}},[e._v("login token")]),e._v('"')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Authorization Bearer eyJhbGciOiJI..... kBZgGIlPhfXNZJ73RiZtM\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{419:function(e,t,a){"use strict";a.r(t);var s=a(51),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[e._v("#")]),e._v(" RESTful API v2")]),e._v(" "),a("p",[e._v("Weaver\nAll functions provided, including authentication, ecosystem data reception, error handling, database table manipulation, page and contract execution are available through\nIBAX Blockchain Platform's REST API is available.")]),e._v(" "),a("p",[e._v("By using the REST API, developers can access any of the platform's features without using Weaver.")]),e._v(" "),a("p",[e._v("API command calls are executed by addressing "),a("code",[e._v("/api/v2/command/[param]")]),e._v(", where "),a("code",[e._v("command")]),e._v("\nis the command name and "),a("code",[e._v("param")]),e._v(" is the additional parameter. The request parameters must be specified using the\n"),a("code",[e._v("Content-Type: x-www-form-urlencoded")]),e._v("\nThe format is sent. The server response result is in JSON format.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-response-handling"}},[e._v("Error response handling")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-list"}},[e._v("Error list")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#request-type"}},[e._v("Request Type")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#authentication-interface"}},[e._v("Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[e._v("getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#login"}},[e._v("login")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#server-side-command-interface"}},[e._v("Server Side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#version"}},[e._v("version")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-request-function-interface"}},[e._v("Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#balance"}},[e._v("balance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blocks"}},[e._v("blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#keyinfo"}},[e._v("keyinfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#wallethistory"}},[e._v("walletHistory")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#get-metrics-interface"}},[e._v("Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-honornodes"}},[e._v("metrics/honornodes")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-interface"}},[e._v("Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ecosystemname"}},[e._v("ecosystemname")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[e._v("appparams/{appID}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparams"}},[e._v("ecosystemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-name"}},[e._v("table/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-column-id"}},[e._v("row/{name}/{column}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#systemparams"}},[e._v("systemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-function-interface"}},[e._v("Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sendtx"}},[e._v("sendTX")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[e._v("txstatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[e._v("txinfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content"}},[e._v("content")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[e._v("maxblockid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[e._v("block/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[e._v("updnotificator")])])])])]),e._v(" "),a("h2",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Return status in case of successful request execution\n"),a("code",[e._v("200")]),e._v(". If an error occurs, in addition to the error status, a JSON object with the following fields will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("error")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error identifier.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("msg")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error text message.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")])]),e._v(" "),a("blockquote",[a("p",[e._v("An array of additional parameters that can be placed in the error message.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('400 (Bad request)\nContent-Type: application/json\n{\n "err": "E_INVALIDWALLET",\n "msg": "Wallet 1234-5678-9012-3444-3488 is not valid",\n "params": ["1234-5678-9012-3444-3488"]\n}\n')])])]),a("h3",{attrs:{id:"error-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-list"}},[e._v("#")]),e._v(" Error list")]),e._v(" "),a("blockquote",[a("p",[e._v("E_CONTRACT")])]),e._v(" "),a("p",[e._v("No "),a("code",[e._v("%s")]),e._v(" contract exists")]),e._v(" "),a("blockquote",[a("p",[e._v("E_DBNIL")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database is empty\n")])])]),a("blockquote",[a("p",[e._v("E_DELETEDKEY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address is frozen\n")])])]),a("blockquote",[a("p",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Ecosystem `%d` does not exist\n")])])]),a("blockquote",[a("p",[e._v("E_EMPTYPUBLIC")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Invalid account public key\n")])])]),a("blockquote",[a("p",[e._v("E_KEYNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address not found\n")])])]),a("blockquote",[a("p",[e._v("E_HASHWRONG")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect hash\n")])])]),a("blockquote",[a("p",[e._v("E_HASHNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Hash not found\n")])])]),a("blockquote",[a("p",[e._v("E_HEAVYPAGE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Too much page loading\n")])])]),a("blockquote",[a("p",[e._v("E_INVALIDWALLET")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Wallet address `%s` Invalid\n")])])]),a("blockquote",[a("p",[e._v("E_LIMITTXSIZE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The transaction size has exceeded the limit\n")])])]),a("blockquote",[a("p",[e._v("E_NOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Page or menu content not found\n")])])]),a("blockquote",[a("p",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Parameters not found\n")])])]),a("blockquote",[a("p",[e._v("E_PERMISSION")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("No permission\n")])])]),a("blockquote",[a("p",[e._v("E_QUERY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database query error\n")])])]),a("blockquote",[a("p",[e._v("E_RECOVERED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("API panic error occurs.\n\nIf a panic error occurs, an error is returned.\n\nThis error means that you have encountered a bug that needs to be found and fixed.\n")])])]),a("blockquote",[a("p",[e._v("E_SERVER")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Server error.\n\nReturn if there is an error in the golang library function. The \\*msg\\* field contains the error text message.\n\n**E_SERVER** may appear in response to any command Error. \nIf it occurs due to an incorrect input parameter, it can be changed to a related error. In another case, this error reports an invalid operation or incorrect system configuration, which requires a more detailed investigation report.\n")])])]),a("blockquote",[a("p",[e._v("E_SIGNATURE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect signature\n")])])]),a("blockquote",[a("p",[e._v("E_STATELOGIN")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("`%s` is not a member of the ecosystem `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Data sheet `%s` not found\n")])])]),a("blockquote",[a("p",[e._v("E_TOKENEXPIRED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The session has expired `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_UNAUTHORIZED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unauthorized.\n\nIn case no login is performed or the session expires, \nexcept for `getuid, login` Any command other than **E_UNAUTHORIZED** returns an error.\n")])])]),a("blockquote",[a("p",[e._v("E_UNKNOWNUID")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unknown UID\n")])])]),a("blockquote",[a("p",[e._v("E_UPDATING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Nodes are updating the blockchain\n")])])]),a("blockquote",[a("p",[e._v("E_STOPPING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Node is stopped\n")])])]),a("blockquote",[a("p",[e._v("E_NOTIMPLEMENTED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Not yet achieved\n")])])]),a("blockquote",[a("p",[e._v("E_BANNED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("This account address is prohibited in `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_CHECKROLE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Access denied\n\nCLB Unavailable Interface\n")])])]),a("hr"),e._v(" "),a("blockquote",[a("p",[e._v("Interface requests for which the CLB node is not available.")])]),e._v(" "),a("ul",[a("li",[e._v("metrics")]),e._v(" "),a("li",[e._v("txinfo")]),e._v(" "),a("li",[e._v("txinfoMultiple")]),e._v(" "),a("li",[e._v("appparam")]),e._v(" "),a("li",[e._v("appparams")]),e._v(" "),a("li",[e._v("appcontent")]),e._v(" "),a("li",[e._v("history")]),e._v(" "),a("li",[e._v("balance")]),e._v(" "),a("li",[e._v("block")]),e._v(" "),a("li",[e._v("maxblockid")]),e._v(" "),a("li",[e._v("blocks")]),e._v(" "),a("li",[e._v("detailed_blocks")]),e._v(" "),a("li",[e._v("ecosystemparams")]),e._v(" "),a("li",[e._v("systemparams")]),e._v(" "),a("li",[e._v("ecosystems")]),e._v(" "),a("li",[e._v("ecosystemparam")]),e._v(" "),a("li",[e._v("ecosystemname")]),e._v(" "),a("li",[e._v("walletHistory")]),e._v(" "),a("li",[e._v("tx_record")])]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request Type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("application/x-www-form-urlencoded")])]),e._v(" "),a("h2",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://jwt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("JWT token"),a("OutboundLink")],1),e._v("\nUsed for authentication. The JWT token must be placed in each request header after it is received: "),a("code",[e._v("Authorization: Bearer TOKEN_HERE")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[e._v("#")]),e._v(" getuid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ returns a unique value, signs it with the private key, and then uses\nThe "),a("a",{attrs:{href:"#login"}},[e._v("login")]),e._v(" command sends it back to the server.")]),e._v(" "),a("p",[e._v("Generate a temporary JWT token that needs to be passed to "),a("strong",[e._v("Authorization")]),e._v(" when calling "),a("strong",[e._v("login")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/getuid\n")])])]),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("uid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Signature number.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("The temporary token passed during login.")]),e._v(" "),a("p",[e._v("The life cycle of a temporary token is 5 seconds.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("cryptoer")])]),e._v(" "),a("blockquote",[a("p",[e._v("Elliptic curve algorithm.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hasher")])]),e._v(" "),a("blockquote",[a("p",[e._v("hash algorithm.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-1"}},[e._v("#")]),e._v(" Response Example 1")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "uid": "4999317241855959593",\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....... .I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"\n "network_id": "4717243765193692211"\n}\n')])])]),a("p",[e._v("In the case that no authorization is required (the request contains "),a("strong",[e._v("Authorization")]),e._v("), the following message will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("expire")])]),e._v(" "),a("blockquote",[a("p",[e._v("Expiration time.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-2"}},[e._v("#")]),e._v(" Response Example 2")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "expire": "2159h59m49.4310543s",\n "ecosystem_id": "1",\n "key_id": "-654321",\n "address": "1196-...... -3496",\n "network_id": "1"\n}\n')])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[e._v("#")]),e._v(" login")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/ User authentication.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("getuid")]),e._v(" should be called first\ncommand in order to receive the unique value and sign it. getuid's temporary JWT token needs to be passed in the request header.")]),e._v(" "),a("p",[e._v("If the request is successful, the token received in the response is contained in "),a("strong",[e._v("Authorization")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/login\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")]),e._v(" "),a("p",[e._v("If not specified, defaults to the first ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[expire]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Lifecycle of the JWT token, in seconds, default is 28800.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[pubkey]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal account public key.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[key_id]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("signature")])]),e._v(" "),a("blockquote",[a("p",[e._v("The uid signature received via getuid.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("JWT token.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account Address ID")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("account")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("notify_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Notification ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isnode")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isowner")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the creator of the ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("clb")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the logged-in ecosystem is CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role list: "),a("code",[e._v("[{Role ID,Role Name}]")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-3"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.....30l665h3v7lH85rs5jgk0",\n "ecosystem_id": "1",\n "key_id": "-54321",\n "account": "1285-... -7743-4282",\n "notify_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..... _JTFfheD0K4CfMbvVNpOJVMNDPx25zIDGir9g3ZZM0w",\n "timestamp": "1451309883",\n "roles": [\n {\n "role_id": 1,\n "role_name": "Developer"\n }\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")])]),e._v(" "),a("h2",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" Server Side command interface")]),e._v(" "),a("h3",{attrs:{id:"version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[e._v("#")]),e._v(" version")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current server version.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/version\n")])])]),a("h4",{attrs:{id:"response-example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-4"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n"1.3.0 branch.main commit.790..757 time.2021-08-23-08:20:19(UTC)"\n')])])]),a("h2",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[e._v("#")]),e._v(" balance")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Requests the balance of the account address in the current ecosystem.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/balance/{wallet}\n")])])]),a("ul",[a("li",[a("p",[e._v("*wallet")]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(". Look up the address in the ecosystem where the user is currently logged in.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default eco1")]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem id.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("amount")])]),e._v(" "),a("blockquote",[a("p",[e._v("The minimum unit of contract account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("money")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("utxo")])]),e._v(" "),a("blockquote",[a("p",[e._v("UTXO account balance.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-5"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "amount": "877450000000000",\n "money": "877.45",\n "total": "877450000000000",\n "utxo": "0"\n} \n')])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[e._v("#")]),e._v(" blocks")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing additional information related to the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-5"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET \n/api/v2/blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information for each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("contract_name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("params")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of contract parameters.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("For the first block, it is the account address of the first block that signed the transaction.")])]),e._v(" "),a("blockquote",[a("p",[e._v("For all other blocks, is the address of the account that signed the transaction.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-6"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "1":\n [{"hash": "O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"detailed-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detailed-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-6"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/detailed_blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("blockhead")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block header contains the following fields.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("block_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block height.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for the block.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("node_position")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("The location of the node that generated the block in the honor node list.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("version")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block structure version.")])])])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block Hashing.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("node_position")])])]),e._v(" "),a("p",[e._v("the location of the node that generated the block in the honor node list.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("time")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("tx_count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of transactions within the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("size")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block size.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("rollback_hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("merkle_root")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block deals with the Merkle tree.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bin_data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("trading")])])]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information about each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trading hash.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("contract_name")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract name.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("params")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract parameters.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for this transaction.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("type")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction type.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("size")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trade Size.")])])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-7"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"1":\n {"header":\n {"block_id":1,\n "time":1551069320,\n "ecosystem_id":0,\n "key_id":-118432674655542910,\n "node_position":0,\n "version":1},\n "hash":"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI=",\n "ecosystem_id":0,\n "node_position":0,\n "key_id":-118432674655542910,\n "time":1551069320,\n "tx_count":1,\n "size": "1.69KiB",\n "rollbacks_hash":"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k=",\n "mrkl_root":"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg==",\n "bin_data":null,\n "sys_update":false,\n "gen_block":false,\n "stop_count":0,\n "transactions":[\n {\n "hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":0,\n "time":0,\n "type":0,\n "size": "300.00B"\n }\n ]}\n}\n')])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystems with roles registered to the specified address.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-7"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{key_id}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("The request is queried in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-6"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of roles with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-8"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"data-id-data-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-id-data-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matching the data in the binary watch, field, and records, this request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-8"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{id}/data/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-7"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-9"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\n{\n "name": "NFT Miner",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "data": [\n {\n "Type": "contracts",\n "Name": "NewNFTMiner",\n },\n ...\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matches the data in the specified table, field, and records, the request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-9"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{table}/id/{column}/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("table")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name, only one")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-8"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-10"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\nContent-Disposition: attachment\n\nSetVar(this_page, @1voting_list).(this_table, @1votings)\nInclude(@1pager_header)\n\nSetTitle("$@1voting_list$")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: "$@1votings_list_desc$"))\nAddToolButton(Title: $@1templates_list$, Page: @1voting_templates_list, Icon: icon-pin)\nAddToolButton(Title: $@1create$, Page: @1voting_create, Icon: icon-plus).Popup(60, $@1new_voting$)\n\n')])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo-2"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to a list of ecosystems, which contains the role of registered the specified address.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-10"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{address}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, you can specify "),a("code",[e._v("int64, uint64, xxxx -...-xxxx")]),e._v(".")]),e._v(" "),a("p",[e._v("This request is query in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-9"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecological system name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("Activities with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-11"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"wallethistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallethistory"}},[e._v("#")]),e._v(" walletHistory")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the current account transaction history record, find it according to the ID of the ID")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-11"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("searchType")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find Type (Income: Turn into Outcom: Turn out all: All, default).")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[page]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find the number of pages, the first page default, min: 1")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 20 articles. min: 1, MAX: 500")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/walletHistory?searchType=all&page=1&limit=10\n")])])]),a("h4",{attrs:{id:"response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-10"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("page")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of current page.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("limit")])]),e._v(" "),a("blockquote",[a("p",[e._v("Currently find the number of bars.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("sender_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Send key_id")])])]),e._v(" "),a("li",[a("em",[e._v("sender_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Send the account address")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept key_id")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept the account address")])])]),e._v(" "),a("li",[a("em",[e._v("amount")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])]),e._v(" "),a("li",[a("em",[e._v("comment")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading remarks")])])]),e._v(" "),a("li",[a("em",[e._v("block_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Block height")])])]),e._v(" "),a("li",[a("em",[e._v("tx_hash")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading hash")])])]),e._v(" "),a("li",[a("em",[e._v("created_at")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction creation time, millisecond time stamp")])])]),e._v(" "),a("li",[a("em",[e._v("money")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-12"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "page": 1,\n "limit": 10,\n "total": 617,\n "list": [\n {\n "id": 650,\n "sender_id": 666081971617879...,\n "sender_add": "0666-0819-7161-xxxx-5186",\n "recipient_id": 666081971617879...,\n "recipient_add": "0666-0819-7161-xxxx-5186",\n "amount": "242250000",\n "comment": "taxes for execution of @1Export contract",\n "block_id": 209,\n "tx_hash": "a213bc767d710a223856d83515d53518075b56fb9e9c063bce8a256c20ff0775",\n "created_at": 1666001092090,\n "money": "0.00024225"\n }\n ...\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"listwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#listwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-12"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/listWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-11"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-13"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"nodelistwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nodelistwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the specified data table. You can specify columns to be returned. The type in the data table is "),a("strong",[e._v("BYTEA")]),e._v(" Do hexadecimal encoding processing")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-13"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/nodelistWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-12"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-14"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("h3",{attrs:{id:"metrics-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-keys"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystem 1 account addresses.")]),e._v(" "),a("h4",{attrs:{id:"request-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-14"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/keys\n")])])]),a("h4",{attrs:{id:"response-example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-15"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of blocks.")]),e._v(" "),a("h4",{attrs:{id:"request-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-15"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/blocks\n")])])]),a("h4",{attrs:{id:"response-example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-16"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-transactions"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the total number of transactions.")]),e._v(" "),a("h4",{attrs:{id:"request-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-16"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/transactions\n")])])]),a("h4",{attrs:{id:"response-example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-17"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-ecosystems"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystems.")]),e._v(" "),a("h4",{attrs:{id:"request-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-17"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/ecosystems\n")])])]),a("h4",{attrs:{id:"response-example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-18"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-honornodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-honornodes"}},[e._v("#")]),e._v(" metrics/honornodes")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of honor nodes.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/honornodes\n")])])]),a("h4",{attrs:{id:"response-example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-19"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h2",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("h3",{attrs:{id:"ecosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[e._v("#")]),e._v(" ecosystemname")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the name of the ecosystem by its identifier.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemname?id=1\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-20"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "ecosystem_name": "platform_ecosystem"\n}\n')])])]),a("h4",{attrs:{id:"error-response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-13"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparams-appid"}},[e._v("appparams/{appid}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of application parameters in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-18"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparams/{appid}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[appid]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID; if not specified, the current ecosystem parameter will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of received parameters.")]),e._v(" "),a("p",[e._v("You can specify a comma-separated list of parameter names, for example:"),a("code",[e._v("/api/v2/appparams/1?names=name,mypar")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-13"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")]),e._v(", the name of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("value")]),e._v(", the value of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("conditions")]),e._v(", change the permissions of the parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-21"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "mypar",\n "value": "My value",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-14"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the parameter "),a("strong",[e._v("{appid}")]),e._v(" of the application "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem\nThe information related to the")]),e._v(" "),a("h4",{attrs:{id:"request-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-19"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparam/{appid}/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("appid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID (optional parameter).")]),e._v(" "),a("p",[e._v("Returns the current ecosystem by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-14"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-22"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "10",\n "name": "par",\n "value": "My value",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-15"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM, E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[e._v("#")]),e._v(" ecosystemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystem parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-20"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparams/[?ecosystem=... &names=...]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID. if not specified, the current ecosystem ID will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("List of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example: "),a("code",[e._v("/api/v2/ecosystemparams/?names=name,currency,logo")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-15"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter value.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change permissions for parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-23"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "currency",\n "value": "MY",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-16"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the parameter "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-21"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparam/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The default is to return the current ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-16"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-24"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "name": "currency",\n "value": "MYCUR",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-17"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of data tables for the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-22"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 100, maximum 1000.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/tables?limit=... &offset=...\n")])])]),a("h4",{attrs:{id:"response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-17"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("The total number of entries in the data table.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name without prefix.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of entries in the data table.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-25"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "100"\n "list": [{ \n "name": "accounts",\n "count": "10",\n }, \n { \n "name": "citizens",\n "count": "5",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"table-name"}},[e._v("table/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the current ecosystem request data table.")]),e._v(" "),a("h4",{attrs:{id:"request-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-23"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[name]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/table/{table_name}\n")])])]),a("p",[e._v("Returns the following field information.")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("insert")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to add new entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("new_column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Add field permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("update")])]),e._v(" "),a("blockquote",[a("p",[e._v("Change entry permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("columns")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of field-related information.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("type")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field data type.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("perm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permissions for the field value.")])])])])])]),e._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/\nReturns a list of the specified data table entries in the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-24"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/list/mytable?columns=name\n")])])]),a("h4",{attrs:{id:"response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-18"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-26"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "John",\n }, \n { \n "id": "2",\n "name": "Mark",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the "),a("em",[e._v("sections")]),e._v(" of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("h4",{attrs:{id:"request-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-25"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[lang]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("This field specifies the multilingual resource code or localization, e.g., "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g., "),a("em",[e._v("en-US")]),e._v(", then the multilingual resource group in\nSearch in "),a("em",[e._v("en")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/sections\n")])])]),a("h4",{attrs:{id:"response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-19"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("sections")]),e._v(" Total number of table entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains information about all columns in the actions table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-27"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "2"\n "list": [{\n "id": "1",\n "title": "Development",\n "urlpage": "develop",\n ...\n },\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-18"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-id-columns-span"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns-span"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]< /span>")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the entry for the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-26"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/row/mytable/10?columns=name\n")])])]),a("h4",{attrs:{id:"response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-20"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of received column values")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-28"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "values": {\n "id": "10",\n "name": "John",\n }\n} \n')])])]),a("h4",{attrs:{id:"error-response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-19"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-column-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-column-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-colorn-id"}},[e._v("row/{name}/{column}/{id} ")])]),e._v(" "),a("p",[e._v("[Authorization] (#Authorization)")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-27"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Name *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[e._v("*colorn *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data list name.")])])]),e._v(" "),a("li",[a("p",[e._v("*ID *")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[e._v("\\ [columns ] * [omitempty] (#omitempty)")]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request lists is separated by commas. If it is not specified, all columns will be returned. In all cases, the ID column will be returned.")])])])])])]),e._v(" "),a("p",[a("code",[e._v("`default GET /API/V2/ROW/MyTable/name/John? Columns = name")]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-21"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Value *")]),e._v(" "),a("blockquote",[a("p",[e._v("Array of receiving column values\nForecast")]),e._v(" "),a("ul",[a("li",[e._v("*ID *")])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Strip ID.")])])]),e._v(" "),a("ul",[a("li",[e._v("-The sequence of the request column.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-29"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("p",[a("code",[e._v('`default 200 (OK) Content-type: Application/JSON {{ "Values": { "ID": "10", "name": "John", } }')]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"error-response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-20"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[e._v("#")]),e._v(" systemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of platform parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-28"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/systemparams/[?names=...]\n")])])]),a("ul",[a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("*\\[names\\]* [Omitempty](#omitempty)\n\nA list of request parameters, separated by commas. For example\n `/api/v2/systemparams/?names=max_columns,max_indexes`.\n")])])]),a("h4",{attrs:{id:"response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-22"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter values.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-30"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "max_columns",\n "value": "100",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n { \n "name": "max_indexes",\n "value": "1",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-21"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the change record for the entry in the specified data table in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-29"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/history?name=contracts&id=5\n")])])]),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("p",[e._v("Data Table Name.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("h4",{attrs:{id:"response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-23"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("list")])])]),e._v(" "),a("p",[e._v("Each element of the array contains a change record for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"response-example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-31"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [\n {\n "name": "default_page",\n "value": "P(class, Default Ecosystem Page)"\n },\n {\n "menu": "default_menu"\n }\n ]\n}\n')])])]),a("h3",{attrs:{id:"interface-page-menu-snippet-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current ecosystem in the specified data table (pages, menu or snippet) "),a("em",[e._v("name")]),e._v("\nThe entry for the field.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/interface/page/default_page\n/api/v2/interface/menu/default_menu\n/api/v2/interface/snippet/welcome\n")])])]),a("h4",{attrs:{id:"request-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-30"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the name of the entry in the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-24"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("other")])]),e._v(" "),a("blockquote",[a("p",[e._v("Other columns of the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-32"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "1",\n "name": "default_page",\n "value": "P(Page content)",\n "default_menu": "default_menu",\n "validate_count": 1\n} \n')])])]),a("h4",{attrs:{id:"error-response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-22"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_QUERY")]),e._v(", "),a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of contracts in the current ecosystem, with the ability to set offsets and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-31"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contracts\n")])])]),a("h4",{attrs:{id:"response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-25"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract contents.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("wallet_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The account address to which the contract is tied.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("address")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("ecosystem_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("app_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The application ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the contract.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("token_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ID of the ecosystem where the pass is used to pay the contract fee.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-33"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "MainCondition",\n "token_id": "1", \n "wallet_id": "0", \n "value": "contract MainCondition {\nconditions {\n if(EcosysParam(`founder_account`)! =$key_id)\n {\n warning `Sorry, you dont have access to this action.`\n }\n }\n}",\n"address": "0000-0000-0000-0000-0000-0000",\n"conditions": "ContractConditions(`MainCondition`)" \n }, \n...\n ]\n} \n')])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified contract. The default is to query the contract in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-32"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contract/mycontract\n")])])]),a("h4",{attrs:{id:"response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-26"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID in VM.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("state")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the contract.")])])]),e._v(" "),a("li",[a("p",[e._v("*walletid")]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account to which the contract is tied.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tokenid")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the pass that is used to pay for the contract.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tableid")])]),e._v(" "),a("p",[e._v("ID of the entry in the > "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("fields")])])]),e._v(" "),a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("> The array contains structural information for each parameter of the contract **data** section.\n>\n> > - *name*\n> >\n> > > Parameter name.\n> >\n> > - \n> >\n> > *type*\n> >\n> > Parameter type.\n> >\n> > - *optional*\n> >\n> > > Parameter options, \\`true\\` means optional parameters, \\`false\\` means mandatory parameters.\n")])])]),a("h4",{attrs:{id:"response-example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-34"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "fields" : [\n {"name": "amount", "type": "int", "optional": false},\n {"name": "name", "type": "string", "optional": true}\n ],\n "id": 150,\n "name":"@1mycontract",\n "tableid" : 10,\n} \n')])])]),a("h4",{attrs:{id:"error-response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-23"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_CONTRACT")])]),e._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[e._v("#")]),e._v(" sendTX")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReceives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an Error Response.")]),e._v(" "),a("h4",{attrs:{id:"request-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-33"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tx_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction content, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/sendTx\n\nHeaders:\nContent-Type: multipart/form-data\n\nParameters:\ntx1 - Transaction 1\ntxN - Trading N\n")])])]),a("h4",{attrs:{id:"response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-27"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hashes")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash arrays.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("tx1")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading 1 hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("txN")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading N's hash.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-35"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hashes": {\n "tx1": "67afbc435634..... ",\n "txN": "89ce4498eaf7..... ",\n}\n')])])]),a("h4",{attrs:{id:"error-response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-24"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_LIMITTXSIZE")]),e._v(","),a("em",[e._v("E_BANNED")])]),e._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[e._v("#")]),e._v(" txstatus")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReturns the block ID and error message for the specified transaction hash. If the return values for the block ID and error text message are null, then the transaction is not yet contained in the block.")]),e._v(" "),a("h4",{attrs:{id:"request-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-34"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON list of transaction hashes.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/txstatus/\n")])])]),a("h4",{attrs:{id:"response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-28"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("blockid")])])]),e._v(" "),a("p",[e._v("If the transaction execution succeeds, the block ID is returned; if the transaction execution fails, the")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")]),e._v(" for [0]{.title-ref}.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("result")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("errmsg")])])]),e._v(" "),a("p",[e._v("Returns an error text message if the execution of the transaction fails.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-36"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n {\n "hash1": {\n "blockid": "3123",\n "result": "",\n },\n "hash2": {\n "blockid": "3124",\n "result": "",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-25"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG, E_HASHNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. Also returns the contract name and its associated parameters, if optional parameters are specified.")]),e._v(" "),a("h4",{attrs:{id:"request-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-35"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1\n")])])]),a("h4",{attrs:{id:"response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-29"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("blockid")])]),e._v(" "),a("blockquote",[a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("confirm")])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("data")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-37"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "blockid": "9",\n "confirm": 11,\n "data": {\n "block": "9",\n "contract": "@1NewContract",\n "params": {\n "ApplicationId": 1,\n "Conditions": "true",\n "Value": "contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t\\t}"\n }\n }\n}\n')])])]),a("h4",{attrs:{id:"error-response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-26"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[e._v("#")]),e._v(" txinfoMultiple")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns the transaction-related information for the specified hash.")]),e._v(" "),a("h4",{attrs:{id:"request-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-36"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hashes")])])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of transaction hashes.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('data: {"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfoMultiple\n")])])]),a("h4",{attrs:{id:"response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-30"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")])])])]),e._v(" "),a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[a("em",[e._v("confirm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-38"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n { \n "hash1": {\n "blockid": "3123",\n "confirm": "5",\n },\n "hash2": {\n "blockid": "3124",\n "confirm": "3",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-27"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"request-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-37"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, then search in the first ecosystem page by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/page/validators_count/@2page_name\n")])])]),a("h4",{attrs:{id:"response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-31"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("validate_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the number of nodes to be validated for the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-39"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-28"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a tree of code JSON objects for the specified page or menu name, which is the result of processing by the template engine.")]),e._v(" "),a("h4",{attrs:{id:"request-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-38"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name or menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current ecosystem page or menu by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/page/default\n")])])]),a("h4",{attrs:{id:"response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-32"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("menu")]),e._v(" || "),a("em",[e._v("title")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The name of the menu to which the page belongs when requesting it.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("menutree")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The page's menu JSON object tree when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("title")]),e._v("--head for the menu "),a("em",[e._v("content/menu/...")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/menu/...")]),e._v(" Menu title when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page or menu JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-40"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-29"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v('Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.\nRequest """""""')]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current eco-page by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-33"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/source/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree of the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-41"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-30"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page cannot be found.")]),e._v(" "),a("p",[e._v("This request does not require login authorization. To receive the correct hash when making requests to other nodes, you must also pass\n"),a("em",[e._v("ecosystem,keyID,roleID,isMobile")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-39"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/hash/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the page with the ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("keyID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roleID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isMobile")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter identification of the mobile platform.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-34"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-42"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n} \n')])])]),a("h4",{attrs:{id:"error-response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-31"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")])]),e._v(" "),a("h3",{attrs:{id:"content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content"}},[e._v("#")]),e._v(" content")]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" is specified as\n"),a("code",[e._v("true or 1")]),e._v(", then this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-40"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("template")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page code.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[source]")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("true or 1")]),e._v(" is specified, the JSON object tree does not perform any functions and receives data.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content\n")])])]),a("h4",{attrs:{id:"response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-35"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-43"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-32"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[e._v("#")]),e._v(" maxblockid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the highest block ID on the current node.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-41"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/maxblockid\n")])])]),a("h4",{attrs:{id:"response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-36"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("max_block_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The highest block ID on the current node.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-44"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "max_block_id" : 341,\n}\n')])])]),a("h4",{attrs:{id:"error-response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-33"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"block-id"}},[e._v("block/{id}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified block ID.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-42"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/block/32\n")])])]),a("h4",{attrs:{id:"response-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-37"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("time")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tx_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of transactions in the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("rollbacks_hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("node_position")])]),e._v(" "),a("blockquote",[a("p",[e._v("The position of the block in the honor node list.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-45"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek=",\n "key_id": -118432674655542910,\n "time": 1551145365,\n "tx_count": 3,\n "rollbacks_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",\n "node_position": 0,\n} \n')])])]),a("h4",{attrs:{id:"error-response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-34"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the avatar of the user in the "),a("em",[e._v("member")]),e._v(" table (available without login).")]),e._v(" "),a("h4",{attrs:{id:"request-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-43"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("member")])]),e._v(" "),a("blockquote",[a("p",[e._v("The user's account address. (xxxx-... -xxxx)")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/avatar/1/1234-2134-... -4321\n")])])]),a("h4",{attrs:{id:"response-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-38"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The request header "),a("em",[e._v("Content-Type")]),e._v(" is the image type and the image data is returned in the response body.")]),e._v(" "),a("h4",{attrs:{id:"response-example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-46"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("200 (OK)\nContent-Type: image/png \n")])])]),a("h4",{attrs:{id:"error-response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-35"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")]),e._v(" "),a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the host address and port of centrifugo.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-44"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/config/centrifugo\n")])])]),a("h4",{attrs:{id:"response-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-39"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Response result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-36"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[e._v("#")]),e._v(" updnotificator")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/")]),e._v(" "),a("p",[e._v("(Discarded)")]),e._v(" "),a("p",[e._v("Sends all messages that have not yet been sent to the centrifugo notification service. Sends only messages for the specified ecosystem and members.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-45"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Member's account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/updnotificator\n")])])]),a("h4",{attrs:{id:"response-example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-47"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "result": true\n} \n')])])]),a("h3",{attrs:{id:"special-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-instructions"}},[e._v("#")]),e._v(" Special instructions")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("If the field has an omitempty attribute, it means that the field is an optional parameter")]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("If the interface with Authorization tag, that this interface requires login authorization, add Authorization to the request header, example.")]),e._v(" "),a("p",[e._v('key = Authorization\nvalue = "Bearer + '),a("a",{attrs:{href:"#login"}},[e._v("login token")]),e._v('"')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Authorization Bearer eyJhbGciOiJI..... kBZgGIlPhfXNZJ73RiZtM\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/39.0b03c921.js b/assets/js/39.d32d57ec.js similarity index 98% rename from assets/js/39.0b03c921.js rename to assets/js/39.d32d57ec.js index 475d515..e3232de 100644 --- a/assets/js/39.0b03c921.js +++ b/assets/js/39.d32d57ec.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{419:function(e,t,n){"use strict";n.r(t);var o=n(51),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration-file"}},[e._v("#")]),e._v(" Server Configuration File")]),e._v(" "),n("p",[e._v("In this section, we will introduce parameters in the server configuration file.")]),e._v(" "),n("h2",{attrs:{id:"introduction-to-the-server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#introduction-to-the-server-configuration-file"}},[e._v("#")]),e._v(" Introduction to the server configuration file")]),e._v(" "),n("p",[e._v("The server configuration file defines the node configuration of IBAX.")]),e._v(" "),n("h2",{attrs:{id:"location"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),n("p",[e._v("This file is located in the working directory of the server and is named "),n("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"sections"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sections"}},[e._v("#")]),e._v(" Sections")]),e._v(" "),n("p",[e._v("The configuration file consists the following sections:")]),e._v(" "),n("blockquote",[n("p",[e._v("general section")])]),e._v(" "),n("p",[e._v("It defines the working directory DataDir, the first block directory FirstBlockPath and other parameters.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TCPServer]")])]),e._v(" "),n("p",[e._v("It defines the TCP service parameters.")]),e._v(" "),n("p",[e._v("TCPServer is used for the network interaction between nodes.")]),e._v(" "),n("blockquote",[n("p",[e._v("[HTTP]")])]),e._v(" "),n("p",[e._v("It defines the HTTP service parameters.")]),e._v(" "),n("p",[e._v("HTTPServer provides RESTful APIs.")]),e._v(" "),n("blockquote",[n("p",[e._v("[DB]")])]),e._v(" "),n("p",[e._v("It defines parameters of the PostgreSQL node database.")]),e._v(" "),n("blockquote",[n("p",[e._v("[StatsD]")])]),e._v(" "),n("p",[e._v("It defines parameters of the node operation indicator collector StatsD.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Centrifugo]")])]),e._v(" "),n("p",[e._v("It defines parameters of the notification service Centrifugo.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Log]")])]),e._v(" "),n("p",[e._v("It defines parameters of the log service Log.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TokenMovement]")])]),e._v(" "),n("p",[e._v("It defines parameters of the token circulation service TokenMovement.")]),e._v(" "),n("h2",{attrs:{id:"an-example-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#an-example-configuration-file"}},[e._v("#")]),e._v(" An example configuration file")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{418:function(e,t,n){"use strict";n.r(t);var o=n(51),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration-file"}},[e._v("#")]),e._v(" Server Configuration File")]),e._v(" "),n("p",[e._v("In this section, we will introduce parameters in the server configuration file.")]),e._v(" "),n("h2",{attrs:{id:"introduction-to-the-server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#introduction-to-the-server-configuration-file"}},[e._v("#")]),e._v(" Introduction to the server configuration file")]),e._v(" "),n("p",[e._v("The server configuration file defines the node configuration of IBAX.")]),e._v(" "),n("h2",{attrs:{id:"location"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),n("p",[e._v("This file is located in the working directory of the server and is named "),n("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"sections"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sections"}},[e._v("#")]),e._v(" Sections")]),e._v(" "),n("p",[e._v("The configuration file consists the following sections:")]),e._v(" "),n("blockquote",[n("p",[e._v("general section")])]),e._v(" "),n("p",[e._v("It defines the working directory DataDir, the first block directory FirstBlockPath and other parameters.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TCPServer]")])]),e._v(" "),n("p",[e._v("It defines the TCP service parameters.")]),e._v(" "),n("p",[e._v("TCPServer is used for the network interaction between nodes.")]),e._v(" "),n("blockquote",[n("p",[e._v("[HTTP]")])]),e._v(" "),n("p",[e._v("It defines the HTTP service parameters.")]),e._v(" "),n("p",[e._v("HTTPServer provides RESTful APIs.")]),e._v(" "),n("blockquote",[n("p",[e._v("[DB]")])]),e._v(" "),n("p",[e._v("It defines parameters of the PostgreSQL node database.")]),e._v(" "),n("blockquote",[n("p",[e._v("[StatsD]")])]),e._v(" "),n("p",[e._v("It defines parameters of the node operation indicator collector StatsD.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Centrifugo]")])]),e._v(" "),n("p",[e._v("It defines parameters of the notification service Centrifugo.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Log]")])]),e._v(" "),n("p",[e._v("It defines parameters of the log service Log.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TokenMovement]")])]),e._v(" "),n("p",[e._v("It defines parameters of the token circulation service TokenMovement.")]),e._v(" "),n("h2",{attrs:{id:"an-example-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#an-example-configuration-file"}},[e._v("#")]),e._v(" An example configuration file")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/4.1e8ca44e.js b/assets/js/4.79290685.js similarity index 67% rename from assets/js/4.1e8ca44e.js rename to assets/js/4.79290685.js index 13ccf8e..de64f3a 100644 --- a/assets/js/4.1e8ca44e.js +++ b/assets/js/4.79290685.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{353:function(t,e,a){},381:function(t,e,a){"use strict";a(353)},385:function(t,e,a){"use strict";a.r(e);var n={name:"CodeBlock",props:{title:{type:String,required:!0},active:{type:Boolean,default:!1}},mounted:function(){this.$parent&&this.$parent.loadTabs&&this.$parent.loadTabs()}},i=(a(381),a(51)),s=Object(i.a)(n,(function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"theme-code-block",class:{"theme-code-block__active":this.active}},[this._t("default")],2)}),[],!1,null,"759a7d02",null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{352:function(t,e,a){},380:function(t,e,a){"use strict";a(352)},385:function(t,e,a){"use strict";a.r(e);var n={name:"CodeBlock",props:{title:{type:String,required:!0},active:{type:Boolean,default:!1}},mounted:function(){this.$parent&&this.$parent.loadTabs&&this.$parent.loadTabs()}},i=(a(380),a(51)),s=Object(i.a)(n,(function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"theme-code-block",class:{"theme-code-block__active":this.active}},[this._t("default")],2)}),[],!1,null,"759a7d02",null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/44.94776414.js b/assets/js/44.b0f6b8e9.js similarity index 99% rename from assets/js/44.94776414.js rename to assets/js/44.b0f6b8e9.js index 5695363..ca534ce 100644 --- a/assets/js/44.94776414.js +++ b/assets/js/44.b0f6b8e9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{425:function(t,a,e){"use strict";e.r(a);var s=e(51),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"smart-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smart-contracts"}},[t._v("#")]),t._v(" Smart Contracts")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#contract-structure"}},[t._v("Contract Structure")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#data-section"}},[t._v("Data section")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#conditions-section"}},[t._v("Conditions section")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#action-section"}},[t._v("Action section")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#variables"}},[t._v("Variables")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#nested-contracts"}},[t._v("Nested Contracts")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#file-upload"}},[t._v("File upload")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#queries-in-json-format"}},[t._v("Queries in JSON format")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#queries-with-date-and-time-operations"}},[t._v("Queries with date and time operations")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#needle-contract-language"}},[t._v("Needle contract language")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#basic-elements-and-structure"}},[t._v("Basic elements and structure")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#data-types-and-variables"}},[t._v("Data types and variables")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#array"}},[t._v("Array")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#if-and-while-statements"}},[t._v("If and While statements")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#functions"}},[t._v("Functions")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#function-declaration"}},[t._v("Function declaration")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#variable-length-parameters"}},[t._v("Variable-length parameters")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#optional-parameters"}},[t._v("Optional parameters")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#needle-functions-classification"}},[t._v("Needle functions classification")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#needle-functions-reference"}},[t._v("Needle functions reference")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#appparam"}},[t._v("AppParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbrow"}},[t._v("DBRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbselectmetrics"}},[t._v("DBSelectMetrics")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecosysparam"}},[t._v("EcosysParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#gethistory"}},[t._v("GetHistory")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#gethistoryrow"}},[t._v("GetHistoryRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getcolumntype"}},[t._v("GetColumnType")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getdatafromxlsx"}},[t._v("GetDataFromXLSX")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getrowscountxlsx"}},[t._v("GetRowsCountXLSX")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#langres"}},[t._v("LangRes")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getblock"}},[t._v("GetBlock")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbinsert"}},[t._v("DBInsert")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbupdate"}},[t._v("DBUpdate")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbupdateext"}},[t._v("DBUpdateExt")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delcolumn"}},[t._v("DelColumn")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#deltable"}},[t._v("DelTable")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#append"}},[t._v("Append")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#join"}},[t._v("Join")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#split"}},[t._v("Split")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#len"}},[t._v("Len")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#row"}},[t._v("Row")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#one"}},[t._v("One")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getmapkeys"}},[t._v("GetMapKeys")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sortedkeys"}},[t._v("SortedKeys")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#callcontract"}},[t._v("CallContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#contractaccess"}},[t._v("ContractAccess")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#contractconditions"}},[t._v("ContractConditions")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#evalcondition"}},[t._v("EvalCondition")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getcontractbyid"}},[t._v("GetContractById")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getcontractbyname"}},[t._v("GetContractByName")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#roleaccess"}},[t._v("RoleAccess")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#transactioninfo"}},[t._v("TransactionInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#throw"}},[t._v("Throw")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#validatecondition"}},[t._v("ValidateCondition")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#addresstoid"}},[t._v("AddressToId")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#idtoaddress"}},[t._v("IdToAddress")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#pubtoid"}},[t._v("PubToID")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#decodebase64"}},[t._v("DecodeBase64")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#encodebase64"}},[t._v("EncodeBase64")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#float"}},[t._v("Float")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#hextobytes"}},[t._v("HexToBytes")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#formatmoney"}},[t._v("FormatMoney")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#random"}},[t._v("Random")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#int"}},[t._v("Int")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#hash"}},[t._v("Hash")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sha256"}},[t._v("Sha256")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#str"}},[t._v("Str")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#jsonencode"}},[t._v("JSONEncode")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#jsonencodeindent"}},[t._v("JSONEncodeIndent")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#jsondecode"}},[t._v("JSONDecode")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#hasprefix"}},[t._v("HasPrefix")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#contains"}},[t._v("Contains")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#replace"}},[t._v("Replace")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#size"}},[t._v("Size")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sprintf"}},[t._v("Sprintf")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#substr"}},[t._v("Substr")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#tolower"}},[t._v("ToLower")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#toupper"}},[t._v("ToUpper")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#trimspace"}},[t._v("TrimSpace")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#floor"}},[t._v("Floor")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#log"}},[t._v("Log")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#log10"}},[t._v("Log10")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#pow"}},[t._v("Pow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#round"}},[t._v("Round")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sqrt"}},[t._v("Sqrt")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#stringtobytes"}},[t._v("StringToBytes")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#bytestostring"}},[t._v("BytesToString")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sysparamstring"}},[t._v("SysParamString")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sysparamint"}},[t._v("SysParamInt")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbupdatesysparam"}},[t._v("DBUpdateSysParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#updatenotifications"}},[t._v("UpdateNotifications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#updaterolesnotifications"}},[t._v("UpdateRolesNotifications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#httprequest"}},[t._v("HTTPRequest")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#httppostjson"}},[t._v("HTTPPostJSON")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#blocktime"}},[t._v("BlockTime")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#datetime"}},[t._v("DateTime")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#unixdatetime"}},[t._v("UnixDateTime")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#createobs"}},[t._v("CreateOBS")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getobslist"}},[t._v("GetOBSList")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#runobs"}},[t._v("RunOBS")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#stopobs"}},[t._v("StopOBS")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#removeobs"}},[t._v("RemoveOBS")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#system-contracts"}},[t._v("System Contracts")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#newecosystem"}},[t._v("NewEcosystem")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editecosystemname"}},[t._v("EditEcosystemName")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newcontract"}},[t._v("NewContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editcontract"}},[t._v("EditContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#bindwallet"}},[t._v("BindWallet")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#unbindwallet"}},[t._v("UnbindWallet")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newparameter"}},[t._v("NewParameter")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editparameter"}},[t._v("EditParameter")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newmenu"}},[t._v("NewMenu")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editmenu"}},[t._v("EditMenu")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#appendmenu"}},[t._v("AppendMenu")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newpage"}},[t._v("NewPage")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editpage"}},[t._v("EditPage")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#appendpage"}},[t._v("AppendPage")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newblock"}},[t._v("NewBlock")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editblock"}},[t._v("EditBlock")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newtable"}},[t._v("NewTable")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#edittable"}},[t._v("EditTable")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newcolumn"}},[t._v("NewColumn")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editcolumn"}},[t._v("EditColumn")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newlang"}},[t._v("NewLang")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editlang"}},[t._v("EditLang")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#import"}},[t._v("Import")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#importupload"}},[t._v("ImportUpload")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newappparam"}},[t._v("NewAppParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editappparam"}},[t._v("EditAppParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newdelayedcontract"}},[t._v("NewDelayedContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editdelayedcontract"}},[t._v("EditDelayedContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#uploadbinary"}},[t._v("UploadBinary")])])])])]),t._v(" "),e("p",[t._v("Smart Contract (hereinafter referred to as Contract) is one of the basic elements of an application. The implementation of a contract on a page by the user is usually a single operation that the purpose is to update or create a database entry. All data operations of an application form a contract system, and these contracts interact with each other through database or contract content functions.")]),t._v(" "),e("h2",{attrs:{id:"contract-structure"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contract-structure"}},[t._v("#")]),t._v(" Contract Structure")]),t._v(" "),e("p",[t._v("Use the keyword "),e("code",[t._v("contract")]),t._v(" to declare a contract, followed by the contract name, and the contract content must be enclosed in braces. A contract mainly consists of three sections:")]),t._v(" "),e("ol",[e("li",[e("p",[e("strong",[t._v("data")]),t._v(" - "),e("a",{attrs:{href:"#data-section"}},[t._v("data section")]),t._v(", where declares the variables of the input data, including variable name and variable type;")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("conditions")]),t._v(" - "),e("a",{attrs:{href:"#conditions-section"}},[t._v("conditions section")]),t._v(", where validates the correctness of the data;")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("action")]),t._v(" - "),e("a",{attrs:{href:"#action-section"}},[t._v("action section")]),t._v(", where defines the data manipulations.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("contract MyContract {\n data {\n FromId int\n ToId int\n Amount money\n }\n func conditions {\n ...\n }\n func action {\n ...\n }\n}\n")])])]),e("h3",{attrs:{id:"data-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#data-section"}},[t._v("#")]),t._v(" Data section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("data")]),t._v(" section describes the contract data inputs and the form parameters received.")]),t._v(" "),e("p",[t._v("The structure of each line by sequence:")]),t._v(" "),e("ul",[e("li",[t._v("Variable name - only receive variables, not arrays;")]),t._v(" "),e("li",[t._v("Variable data type - the "),e("a",{attrs:{href:"#data-types-and-variables"}},[t._v("data type")]),t._v(" of the variable;")]),t._v(" "),e("li",[t._v("optional - an optional parameter that do not need to fill in the form element.")])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('contract my {\n data {\n Name string\n RequestId int\n Photo file "optional"\n Amount money\n Private bytes\n }\n ...\n}\n')])])]),e("h3",{attrs:{id:"conditions-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#conditions-section"}},[t._v("#")]),t._v(" Conditions section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("conditions")]),t._v(" section describes the validation of data received.")]),t._v(" "),e("p",[t._v("The following commands are used for error warnings: serious errors "),e("code",[t._v("error")]),t._v(", warning errors "),e("code",[t._v("warning")]),t._v(", suggestive errors "),e("code",[t._v("info")]),t._v(". These three commands will generate an error that terminates the execution of contracts, and each error will print a different type of error log information. For example:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('if fuel == 0 {\n error "fuel cannot be zero!"\n}\nif money < limit {\n warning Sprintf("You don\'t have enough money: %v <%v", money, limit)\n}\nif idexist > 0 {\n info "You have already been registered"\n}\n')])])]),e("h3",{attrs:{id:"action-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#action-section"}},[t._v("#")]),t._v(" Action section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("action")]),t._v(" section describes the main code of the contract, which retrieves other data and records the result values in tables. For example:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('action {\nDBUpdate("keys", $key_id, {"-amount": $amount})\nDBUpdate("keys", $recipient, {"+amount": $amount, "pub": $Pub})\n}\n')])])]),e("h2",{attrs:{id:"variables"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variables"}},[t._v("#")]),t._v(" Variables")]),t._v(" "),e("p",[t._v("Variables declared in the data section are passed to other contract sections through the "),e("code",[t._v("$")]),t._v(" symbol followed by the variable name. The "),e("code",[t._v("$")]),t._v(" symbol can also be used to declare other variables that are not within the data section, which are considered as global variables of this contract and all contracts that this contract is nested.")]),t._v(" "),e("p",[t._v("Pre-defined variables can be used in contracts, which contain transaction data that called the contract:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("$time")]),t._v(" - transaction timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$ecosystem_id")]),t._v(" - ecosystem ID;")]),t._v(" "),e("li",[e("code",[t._v("$block")]),t._v(" - ID of the block containing the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$key_id")]),t._v(" - address of the account that signed the current transaction;")]),t._v(" "),e("li",[e("code",[t._v("$type")]),t._v(" - contract ID in the virtual machine;")]),t._v(" "),e("li",[e("code",[t._v("$block_key_id")]),t._v(" - account address of the node generated the block;")]),t._v(" "),e("li",[e("code",[t._v("$block_time")]),t._v(" - block generation timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$original_contract")]),t._v(" - name of the contract that initially processed the transaction. It means the contract is called during transaction validation if the variable is an empty string. To check whether the contract is called by another contract or directly by the transaction, you need to compare the values of $original_contract and $this_contract. It means that the contract is called by the transaction if they are equal;")]),t._v(" "),e("li",[e("code",[t._v("$this_contract")]),t._v(" - name of the contract currently being executed;")]),t._v(" "),e("li",[e("code",[t._v("$guest_key")]),t._v(" - guest account address;")]),t._v(" "),e("li",[e("code",[t._v("$stack")]),t._v(" - contract array stack with a data type of array, containing all contracts executed. The first element of the array represents the name of the contract currently being executed, while the last element represents the name of the contract that initially processed the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$node_position")]),t._v(" - the index number of the verification node array where the block is located;")]),t._v(" "),e("li",[e("code",[t._v("$txhash")]),t._v(" - transaction hash;")]),t._v(" "),e("li",[e("code",[t._v("$contract")]),t._v(" - the current contract structure array.")])]),t._v(" "),e("p",[t._v("Predefined variables can be accessed not only in contracts, but also in permission fields that defines the access permission conditions of the application elements. When used in permission fields, predefined variables for block information are always equal to zero, such as "),e("code",[t._v("$time")]),t._v(", "),e("code",[t._v("$block")]),t._v(", etc.")]),t._v(" "),e("p",[t._v("A predefined variable "),e("code",[t._v("$result")]),t._v(" is assigned with the return result of the contract.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('contract my {\n data {\n Name string\n Amount money\n }\n func conditions {\n if $Amount <= 0 {\n error "Amount cannot be 0"\n }\n $ownerId = 1232\n }\n func action {\n var amount money\n amount = $Amount - 10\n DBUpdate("mytable", $ownerId, {name: $Name,amount: amount})\n DBUpdate("mytable2", $ownerId, {amount: 10})\n }\n}\n')])])]),e("h2",{attrs:{id:"nested-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#nested-contracts"}},[t._v("#")]),t._v(" Nested Contracts")]),t._v(" "),e("p",[t._v("You can nest contracts in the conditions and action sections of the contract. Nested contracts can be called directly, and the contract parameters are specified in parentheses after the contract name, for example, "),e("code",[t._v("@1NameContract(Params)")]),t._v(". You may also call nested contracts with the "),e("a",{attrs:{href:"#callcontract"}},[t._v("CallContract")]),t._v(" function.")]),t._v(" "),e("h2",{attrs:{id:"file-upload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-upload"}},[t._v("#")]),t._v(" File upload")]),t._v(" "),e("p",[t._v("To upload a file using a form in the format of "),e("code",[t._v("multipart/form-data")]),t._v(", the data type of the contract must be "),e("code",[t._v("file")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("contract Upload {\n data {\n \t File file\n }\n ...\n}\n")])])]),e("p",[t._v("The "),e("a",{attrs:{href:"#uploadbinary"}},[t._v("UploadBinary")]),t._v(" contract is used to upload and store files. With the Logicor language function "),e("RouterLink",{attrs:{to:"/es/topics/templates2.html#binary"}},[t._v("Binary")]),t._v(" in the page editor, you can get the file download link.")],1),t._v(" "),e("h2",{attrs:{id:"queries-in-json-format"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-in-json-format"}},[t._v("#")]),t._v(" Queries in JSON format")]),t._v(" "),e("p",[t._v("In the contract language, "),e("strong",[t._v("JSON")]),t._v(" can be specified as a field type. You can use the syntax: "),e("strong",[t._v("columnname->fieldname")]),t._v(" to process the entry field. The value obtained is recorded in "),e("strong",[t._v("columnname.fieldname")]),t._v(". The above syntax can be used in Columns,One,Where of the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret map\nvar val str\nvar list array\nret = DBFind("mytable").Columns("myname,doc,doc->ind").WhereId($Id).Row()\nval = ret["doc.ind"]\nval = DBFind("mytable").Columns("myname,doc->type").WhereId($Id).One("doc->type")\nlist = DBFind("mytable").Columns("myname,doc,doc->ind").Where("doc->ind = ?", "101")\nval = DBFind("mytable").WhereId($Id).One("doc->check")\n')])])]),e("h2",{attrs:{id:"queries-with-date-and-time-operations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-with-date-and-time-operations"}},[t._v("#")]),t._v(" Queries with date and time operations")]),t._v(" "),e("p",[t._v("You cannot directly query and update the date and time with the contract language functions, but you can use PostgreSQL functions and features in the Where statement as in the example below. For example, you need to compare the field date_column with the current time. If date_column is a timestamp type, the expression should be "),e("code",[t._v("date_column NOW()")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Where("to_timestamp(date_column)> NOW()")\nWhere("date_column , >=, <=, ==, !=, ||, &&")])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if val> 10 || id != $block_key_id {\n ...\n} else {\n ...\n}\n")])])]),e("p",[t._v("The code block is executed when the conditional statement of the "),e("strong",[t._v("while")]),t._v(" loop is true. "),e("strong",[t._v("break")]),t._v(" means to terminate the loop of the code block. If you want to start a loop from the beginning, use "),e("strong",[t._v("continue")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var i int\nwhile true {\n if i > 100 {\n break\n }\n ...\n if i == 50 {\n continue\n }\n ...\n i = i + 1\n}\n")])])]),e("p",[t._v("In addition to conditional statements, Needle also supports standard arithmetic operations: "),e("code",[t._v("+")]),t._v(", "),e("code",[t._v("-")]),t._v(", "),e("code",[t._v("*")]),t._v(", "),e("code",[t._v("/")]),t._v(".")]),t._v(" "),e("p",[t._v("Variables of string and bytes types can be used as a conditional statement. If the length of the type is greater than zero, the condition is true, otherwise it is false.")]),t._v(" "),e("h2",{attrs:{id:"functions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#functions"}},[t._v("#")]),t._v(" Functions")]),t._v(" "),e("p",[t._v("Functions can perform some operations on the data received by the "),e("a",{attrs:{href:"#data-section"}},[t._v("data section")]),t._v(" of a contract: read and write data from the database, convert the type of value, and establish the interaction between contracts.")]),t._v(" "),e("h3",{attrs:{id:"function-declaration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#function-declaration"}},[t._v("#")]),t._v(" Function declaration")]),t._v(" "),e("p",[t._v("Use the func keyword to declare a function, followed by the name and the list of parameters passed to it and their types. All parameters are enclosed in parentheses and separated by commas. After the parentheses, the data type of the value returned by the function must be declared. The function body must be enclosed in braces. If the function has no parameters, the braces can be omitted. To return a value from a function, use the "),e("code",[t._v("return")]),t._v(" keyword.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func myfunc(left int, right int) int {\n return left*right + left - right\n}\nfunc test int {\n return myfunc(10, 30) + myfunc(20, 50)\n}\nfunc ooops {\n error "Ooops..."\n}\n')])])]),e("p",[t._v("Function do not return errors, because all error checks are performed automatically. If there is an error in any function, the contract will terminate its operation and present the error description in a window.")]),t._v(" "),e("h3",{attrs:{id:"variable-length-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variable-length-parameters"}},[t._v("#")]),t._v(" Variable-length parameters")]),t._v(" "),e("p",[t._v("Functions can define variable-length parameters, use the "),e("code",[t._v("...")]),t._v(" symbol as the last parameter type of the function to indicate variable-length parameters, with a data type of "),e("code",[t._v("array")]),t._v(". Variable-length parameters include all variables from the time the parameter is passed in the call. All types of variables can be passed, but you need to deal with conflicts of mismatching of data types.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func sum(out string, values ...) {\nvar i, res int\n\nwhile i 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"field": {"$gte": 12}}')]),t._v("\nEquivalent to "),e("code",[t._v("field >= 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$and": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 AND expr2 AND expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$or": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 OR expr2 OR expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$like": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value%'")]),t._v(" (fuzzy search).")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$begin": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'value%'")]),t._v(" (starts with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$end": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value'")]),t._v(" (ends with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: "$isnull"}')]),t._v("\nEquivalent to field is null.")])])])])]),t._v(" "),e("p",[t._v("Make sure not to overwrite the keys of object arrays. For example, if you want to query with "),e("code",[t._v("id>2 and id<5")]),t._v(", you cannot use "),e("code",[t._v('{id:{"$gt": 2}, id:{"$lt": 5}}')]),t._v(", because the first element will be overwritten by the second element. You should use the following query structure:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{id: [{"$gt": 2}, {"$lt": 5}]}\n')])])]),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"$and": [{id:{"$gt": 2}}, {id:{"$lt": 5}}]}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Queries by ID. For example, .WhereId(1).")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Order")])]),t._v(" "),e("p",[t._v("Used to sort the result set by a specified column, or by id by default.")]),t._v(" "),e("p",[t._v("If you use only one field for sorting, you can specify it as a string. To sort multiple fields, you need to specify an array of string objects:")]),t._v(" "),e("p",[t._v("Descending order: "),e("code",[t._v('{"field": "-1"}')]),t._v(" Equivalent to "),e("code",[t._v("field desc")]),t._v(".")]),t._v(" "),e("p",[t._v("Ascending order: "),e("code",[t._v('{"field": "1"}')]),t._v(" Equivalent to "),e("code",[t._v("field asc")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")])]),t._v(" "),e("p",[t._v("Returns the number of entries. 25, by default. The maximum number is 10,000.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Offset")])]),t._v(" "),e("p",[t._v("Offset.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Ecosystemid")])]),t._v(" "),e("p",[t._v("Ecosystem ID. By default, the table of the current ecosystem is queried.")])])]),t._v(" "),e("h4",{attrs:{id:"example-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var i int\nvar ret string\nret = DBFind("contracts").Columns("id,value").Where({id: [{"$gt": 2}, {"$lt": 5}]}).Order( "id")\nwhile i 0 {\n item = list[0]\n}\n')])])]),e("h3",{attrs:{id:"gethistoryrow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gethistoryrow"}},[t._v("#")]),t._v(" GetHistoryRow")]),t._v(" "),e("p",[t._v("Returns a single snapshot from the change history of a specified entry in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetHistoryRow(table string, id int, rollbackId int) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("rollbackId")])]),t._v(" "),e("p",[t._v("rollback_tx The entry ID of the table.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' $result = GetHistoryRow("contracts",205,2358)\n')])])]),e("h3",{attrs:{id:"getcolumntype"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[t._v("#")]),t._v(" GetColumnType")]),t._v(" "),e("p",[t._v("Returns the data type of a specified field in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetColumnType(table, column string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The following types can be returned: "),e("code",[t._v("text, varchar, number, money, double, bytes, json, datetime, double")]),t._v(".")]),t._v(" "),e("h4",{attrs:{id:"example-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var coltype string\ncoltype = GetColumnType("members", "member_name")\n')])])]),e("h3",{attrs:{id:"getdatafromxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getdatafromxlsx"}},[t._v("#")]),t._v(" GetDataFromXLSX")]),t._v(" "),e("p",[t._v("Returns data from XLSX spreadsheets.")]),t._v(" "),e("h4",{attrs:{id:"syntax-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetDataFromXLSX(binId int, line int, count int, sheet int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("line")])]),t._v(" "),e("p",[t._v("The starting line number, starting from 0 by default.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("count")])]),t._v(" "),e("p",[t._v("The number of rows that need to be returned.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var a array\na = GetDataFromXLSX(3, 12, 10, 1)\n")])])]),e("h3",{attrs:{id:"getrowscountxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getrowscountxlsx"}},[t._v("#")]),t._v(" GetRowsCountXLSX")]),t._v(" "),e("p",[t._v("Returns the number of lines in a specified XLSX file.")]),t._v(" "),e("h4",{attrs:{id:"syntax-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetRowsCountXLSX(binId int, sheet int) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var count int\ncount = GetRowsCountXLSX(binid, 1)\n")])])]),e("h3",{attrs:{id:"langres"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[t._v("#")]),t._v(" LangRes")]),t._v(" "),e("p",[t._v("Returns a multilingual resource with name label for language lang, specified as a two-character code, for example: "),e("code",[t._v("en")]),t._v(", "),e("code",[t._v("zh")]),t._v(". If there is no language for a selected language, then the language resource of the "),e("code",[t._v("en")]),t._v(" label is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("LangRes(label string, lang string) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("label")])]),t._v(" "),e("p",[t._v("Language resource name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("lang")])]),t._v(" "),e("p",[t._v("Two-character language code.")])])]),t._v(" "),e("h4",{attrs:{id:"example-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('warning LangRes("@1confirm", "en")\nerror LangRes("@1problems", "zh")\n')])])]),e("h3",{attrs:{id:"getblock"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getblock"}},[t._v("#")]),t._v(" GetBlock")]),t._v(" "),e("p",[t._v("Returns relevant information about a specified block.")]),t._v(" "),e("h4",{attrs:{id:"syntax-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetBlock(blockID int64) map\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("blockID")])]),t._v(" "),e("p",[t._v("Block ID.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("Return an array of objects:")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("id")])]),t._v(" "),e("p",[t._v("Block ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("time")])]),t._v(" "),e("p",[t._v("Block generation timestamp.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")])]),t._v(" "),e("p",[t._v("The account address of the verification node generated the block.")])])]),t._v(" "),e("h4",{attrs:{id:"example-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var b map\nb = GetBlock(1)\nPrintln(b)\n")])])]),e("h3",{attrs:{id:"dbinsert"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbinsert"}},[t._v("#")]),t._v(" DBInsert")]),t._v(" "),e("p",[t._v("Adds an entry to a specified table and return the entry ID.")]),t._v(" "),e("h4",{attrs:{id:"syntax-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBInsert(table string, params map) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are inserted values.")])])]),t._v(" "),e("h4",{attrs:{id:"example-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBInsert("mytable", {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdate"}},[t._v("#")]),t._v(" DBUpdate")]),t._v(" "),e("p",[t._v("Changes the column value of a specified entry ID in a specified table. If the entry ID does not exist in the table, an error is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdate(tblname string, id int, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdate("mytable", myid, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdateext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdateext"}},[t._v("#")]),t._v(" DBUpdateExt")]),t._v(" "),e("p",[t._v("Changes the value of a column in a specified table that matches the query condition.")]),t._v(" "),e("h4",{attrs:{id:"syntax-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdateExt(tblname string, where map, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("where")])]),t._v(" "),e("p",[t._v("Query conditions.")]),t._v(" "),e("p",[t._v("For more details, see "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdateExt("mytable", {id: $key_id, ecosystem: $ecosystem_id}, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"delcolumn"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delcolumn"}},[t._v("#")]),t._v(" DelColumn")]),t._v(" "),e("p",[t._v("Deletes a field in a specified table that has no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelColumn(tblname string, column string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("The field to be deleted.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelColumn("mytable", "mycolumn")\n')])])]),e("h3",{attrs:{id:"deltable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deltable"}},[t._v("#")]),t._v(" DelTable")]),t._v(" "),e("p",[t._v("Deletes a specified table that has e no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelTable(tblname string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelTable("mytable")\n')])])]),e("h3",{attrs:{id:"append"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#append"}},[t._v("#")]),t._v(" Append")]),t._v(" "),e("p",[t._v("Inserts any type of val into the src array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("p",[t._v("Append(src array, val anyType) array")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("src")])]),t._v(" "),e("p",[t._v("The original array.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("The value to be inserted.")])])]),t._v(" "),e("h4",{attrs:{id:"example-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var list array\nlist = Append(list, "new_val")\n')])])]),e("h3",{attrs:{id:"join"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#join"}},[t._v("#")]),t._v(" Join")]),t._v(" "),e("p",[t._v("Combines elements of the in array into a string with a specified sep separator.")]),t._v(" "),e("h4",{attrs:{id:"syntax-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Join(in array, sep string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("Array name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var val string, myarr array\n myarr[0] = "first"\n myarr[1] = 10\n val = Join(myarr, ",")\n')])])]),e("h3",{attrs:{id:"split"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#split"}},[t._v("#")]),t._v(" Split")]),t._v(" "),e("p",[t._v("Uses the sep separator to split the in string into elements and put them into an array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Split(in string, sep string) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("String.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var myarr array\nmyarr = Split("first,second,third", ",")\n')])])]),e("h3",{attrs:{id:"len"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#len"}},[t._v("#")]),t._v(" Len")]),t._v(" "),e("p",[t._v("Returns the number of elements in a specified array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Len(val array) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if Len(mylist) == 0 {\n ...\n}\n")])])]),e("h3",{attrs:{id:"row"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#row"}},[t._v("#")]),t._v(" Row")]),t._v(" "),e("p",[t._v("The list parameter must not be specified in this case. Return the first object array in the array list. If the list is empty, an empty result is returned. This function is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" Row(list array) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("list")])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")])])]),t._v(" "),e("h4",{attrs:{id:"example-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var ret map\n ret = DBFind("contracts").Columns("id,value").WhereId(10).Row()\n Println(ret)\n')])])]),e("h3",{attrs:{id:"one"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#one"}},[t._v("#")]),t._v(" One")]),t._v(" "),e("p",[t._v("Returns the field value of the first object array in the array list. If the list array is empty, nil is returned. It is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("One(list array, column string) string\n")])])]),e("ul",[e("li",[e("strong",[t._v("list")])])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret string\nret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")\nif ret != nil {\n Println(ret)\n}\n')])])]),e("h3",{attrs:{id:"getmapkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getmapkeys"}},[t._v("#")]),t._v(" GetMapKeys")]),t._v(" "),e("p",[t._v("Returns the key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetMapKeys(val map) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k1"] = "v1"\nval["k2"] = "v2"\narr = GetMapKeys(val)\n')])])]),e("h3",{attrs:{id:"sortedkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sortedkeys"}},[t._v("#")]),t._v(" SortedKeys")]),t._v(" "),e("p",[t._v("Returns a sorted key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("SortedKeys(val map) array\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k2"] = "v2"\nval["k1"] = "v1"\narr = SortedKeys(val)\n')])])]),e("h3",{attrs:{id:"callcontract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#callcontract"}},[t._v("#")]),t._v(" CallContract")]),t._v(" "),e("p",[t._v("Calls the contract with a specified name. All parameters of the data section in the contract must be included in an object array. This function returns the value assigned to the "),e("strong",[t._v("$result")]),t._v(" variable by a specified contract.")]),t._v(" "),e("h4",{attrs:{id:"syntax-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("CallContract(name string, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The name of the contract being called.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An associative array of the contract input data.")])])]),t._v(" "),e("h4",{attrs:{id:"example-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var par map\npar["Name"] = "My Name"\nCallContract("MyContract", par)\n')])])]),e("h3",{attrs:{id:"contractaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractaccess"}},[t._v("#")]),t._v(" ContractAccess")]),t._v(" "),e("p",[t._v("Checks if the name of contract being executed matches one of the names listed in the parameters. Usually it is used to control contract access to tables. When editing table fields or inserting and adding new column fields in the permissions section of the table, please specify this function in the permissions fields.")]),t._v(" "),e("h4",{attrs:{id:"syntax-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractAccess(name string, [name string]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractAccess("MyContract")\nContractAccess("MyContract","SimpleContract")\n')])])]),e("h3",{attrs:{id:"contractconditions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractconditions"}},[t._v("#")]),t._v(" ContractConditions")]),t._v(" "),e("p",[t._v("Calls the conditions section in the contract with a specified name.")]),t._v(" "),e("p",[t._v("For this type of contracts, the data section must be empty. If the conditions section is executed without error, it returns true. If there is an error during execution, the parent contract will also be terminated due to the error. This function is usually used to control the contract's access to tables and can be called in the permission fields when editing system tables.")]),t._v(" "),e("h4",{attrs:{id:"syntax-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractConditions(name string, [name string]) bool\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractConditions("MainCondition")\n')])])]),e("h3",{attrs:{id:"evalcondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#evalcondition"}},[t._v("#")]),t._v(" EvalCondition")]),t._v(" "),e("p",[t._v("Gets the value of the condfield field in the record with a 'name' field from the tablename table, and checks the conditions of the condfield field value.")]),t._v(" "),e("h4",{attrs:{id:"syntax-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(tablename string, name string, condfield string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tablename")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Queries the value with the 'name' field.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("condfield")])]),t._v(" "),e("p",[t._v("The name of the field whose conditions needs to be checked.")])])]),t._v(" "),e("h4",{attrs:{id:"example-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(`menu`, $Name, `conditions`)\n")])])]),e("h3",{attrs:{id:"getcontractbyid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyid"}},[t._v("#")]),t._v(" GetContractById")]),t._v(" "),e("p",[t._v("Returns its contract name by contract ID. If not found the contract, an empty string is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractById(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("The contract ID in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var name string\nname = GetContractById($IdContract)\n")])])]),e("h3",{attrs:{id:"getcontractbyname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyname"}},[t._v("#")]),t._v(" GetContractByName")]),t._v(" "),e("p",[t._v("This function returns its contract ID by contract name. If not found the contract, zero is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractByName(name string) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The contract name in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var id int\nid = GetContractByName(`NewBlock`)\n")])])]),e("h3",{attrs:{id:"roleaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#roleaccess"}},[t._v("#")]),t._v(" RoleAccess")]),t._v(" "),e("p",[t._v("Checks whether the role ID of the contract caller matches one of the IDs specified in the parameter.")]),t._v(" "),e("p",[t._v("You can use this function to control contract access to tables and other data.")]),t._v(" "),e("h4",{attrs:{id:"syntax-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(id int, [id int]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Role ID.")])])]),t._v(" "),e("h4",{attrs:{id:"example-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(1)\nRoleAccess(1, 3)\n")])])]),e("h3",{attrs:{id:"transactioninfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#transactioninfo"}},[t._v("#")]),t._v(" TransactionInfo")]),t._v(" "),e("p",[t._v("Queries transactions by specified hash value and returns information about the contract executed and its parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("TransactionInfo(hash: string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hash")])]),t._v(" "),e("p",[t._v("Transaction hash in hexadecimal string format.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("This function returns a string in JSON format:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("contract")])]),t._v(" "),e("p",[t._v("Contract name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("Data passed to contract parameters.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("block")])]),t._v(" "),e("p",[t._v("ID of the block that processed the transaction.")])])]),t._v(" "),e("h4",{attrs:{id:"example-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var out map\nout = JSONDecode(TransactionInfo(hash))\n")])])]),e("h3",{attrs:{id:"throw"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#throw"}},[t._v("#")]),t._v(" Throw")]),t._v(" "),e("p",[t._v("Generates an error of type exception.")]),t._v(" "),e("h4",{attrs:{id:"syntax-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Throw(ErrorId string, ErrDescription string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("ErrorId")])]),t._v(" "),e("p",[t._v("Error identifier.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ErrDescription")])]),t._v(" "),e("p",[t._v("Error description.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The format of this type of transaction results:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"type":"exception","error":"Error description","id":"Error ID"}\n')])])]),e("h4",{attrs:{id:"example-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Throw("Problem", "There is a problem")\n')])])]),e("h3",{attrs:{id:"validatecondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#validatecondition"}},[t._v("#")]),t._v(" ValidateCondition")]),t._v(" "),e("p",[t._v("Tries to compile the conditions specified by the condition parameter. If there is an error during the compilation process, an error is generated and the contract called is terminated. This function is designed to check the correctness of the conditional format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ValidateCondition(condition string, state int)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("condition")])]),t._v(" "),e("p",[t._v("The conditional format that needs to be verified.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("state")])]),t._v(" "),e("p",[t._v("Ecosystem ID. If you check the global condition, please specify it as 0.")])])]),t._v(" "),e("h4",{attrs:{id:"example-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ValidateCondition(`ContractAccess("@1MyContract")`, 1)\n')])])]),e("h3",{attrs:{id:"addresstoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[t._v("#")]),t._v(" AddressToId")]),t._v(" "),e("p",[t._v("Returns the corresponding account address by wallet address. If an invalid address is specified, '0' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("AddressToId(address string) int\n\n")])])]),e("ul",[e("li",[e("p",[t._v("Address")]),t._v(" "),e("p",[t._v("Wallet address in "),e("code",[t._v("XXXX-...-XXXX")]),t._v(" format or number format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("wallet = AddressToId($Recipient)\n")])])]),e("h3",{attrs:{id:"idtoaddress"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#idtoaddress"}},[t._v("#")]),t._v(" IdToAddress")]),t._v(" "),e("p",[t._v("Returns the corresponding wallet address by account address. If an invalid address is specified, the invalid address 'invalid' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("IdToAddress(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Account address.")])])]),t._v(" "),e("h4",{attrs:{id:"example-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("$address = IdToAddress($id)\n")])])]),e("h3",{attrs:{id:"pubtoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pubtoid"}},[t._v("#")]),t._v(" PubToID")]),t._v(" "),e("p",[t._v("The account address is returned by public key in hexadecimal format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("PubToID(hexkey string) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexkey")])]),t._v(" "),e("p",[t._v("The public key in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var wallet int\nwallet = PubToID("04fa5e78.....34abd6")\n')])])]),e("h3",{attrs:{id:"decodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#decodebase64"}},[t._v("#")]),t._v(" DecodeBase64")]),t._v(" "),e("p",[t._v("Returns a string by specifying the base64 format")]),t._v(" "),e("h4",{attrs:{id:"syntax-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DecodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("String in base64 format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("val = DecodeBase64(mybase64)\n")])])]),e("h3",{attrs:{id:"encodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#encodebase64"}},[t._v("#")]),t._v(" EncodeBase64")]),t._v(" "),e("p",[t._v("Returns a string in base64 format by specifying a string.")]),t._v(" "),e("h4",{attrs:{id:"syntax-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EncodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("The string to be encoded.")])])]),t._v(" "),e("h4",{attrs:{id:"example-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var base64str string\nbase64str = EncodeBase64("my text")\n')])])]),e("h3",{attrs:{id:"float"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#float"}},[t._v("#")]),t._v(" Float")]),t._v(" "),e("p",[t._v("Converts an integer or string to a float number.")]),t._v(" "),e("h4",{attrs:{id:"syntax-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Float(val int|string) float\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("An integer or string.")])])]),t._v(" "),e("h4",{attrs:{id:"example-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('val = Float("567.989") + Float(232)\n')])])]),e("h3",{attrs:{id:"hextobytes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hextobytes"}},[t._v("#")]),t._v(" HexToBytes")]),t._v(" "),e("p",[t._v("Converts a string in hexadecimal format to byte type bytes.")]),t._v(" "),e("h4",{attrs:{id:"syntax-42"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" HexToBytes(hexdata string) bytes\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexdata")])]),t._v(" "),e("p",[t._v("A string in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val bytes\nval = HexToBytes("34fe4501a4d80094")\n')])])]),e("h3",{attrs:{id:"formatmoney"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#formatmoney"}},[t._v("#")]),t._v(" FormatMoney")]),t._v(" "),e("p",[t._v("Returns the string value of exp / 10 ^ digit.")]),t._v(" "),e("h4",{attrs:{id:"syntax-43"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("FormatMoney(exp string, digit int) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Exp")])]),t._v(" "),e("p",[t._v("A number in string format.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("digit")])]),t._v(" "),e("p",[t._v("The exponent (positive or negative) of 10 in the expression "),e("code",[t._v("Exp/10^digit")]),t._v(". Positive values determine decimal places.")])])]),t._v(" "),e("h4",{attrs:{id:"example-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' s = FormatMoney("78236475917384", 0)\n')])])]),e("h3",{attrs:{id:"random"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#random"}},[t._v("#")]),t._v(" Random")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Returns a random number between min and max (min <= result 0 {\n info "You have already been registered"\n}\n')])])]),e("h3",{attrs:{id:"action-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#action-section"}},[t._v("#")]),t._v(" Action section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("action")]),t._v(" section describes the main code of the contract, which retrieves other data and records the result values in tables. For example:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('action {\nDBUpdate("keys", $key_id, {"-amount": $amount})\nDBUpdate("keys", $recipient, {"+amount": $amount, "pub": $Pub})\n}\n')])])]),e("h2",{attrs:{id:"variables"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variables"}},[t._v("#")]),t._v(" Variables")]),t._v(" "),e("p",[t._v("Variables declared in the data section are passed to other contract sections through the "),e("code",[t._v("$")]),t._v(" symbol followed by the variable name. The "),e("code",[t._v("$")]),t._v(" symbol can also be used to declare other variables that are not within the data section, which are considered as global variables of this contract and all contracts that this contract is nested.")]),t._v(" "),e("p",[t._v("Pre-defined variables can be used in contracts, which contain transaction data that called the contract:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("$time")]),t._v(" - transaction timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$ecosystem_id")]),t._v(" - ecosystem ID;")]),t._v(" "),e("li",[e("code",[t._v("$block")]),t._v(" - ID of the block containing the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$key_id")]),t._v(" - address of the account that signed the current transaction;")]),t._v(" "),e("li",[e("code",[t._v("$type")]),t._v(" - contract ID in the virtual machine;")]),t._v(" "),e("li",[e("code",[t._v("$block_key_id")]),t._v(" - account address of the node generated the block;")]),t._v(" "),e("li",[e("code",[t._v("$block_time")]),t._v(" - block generation timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$original_contract")]),t._v(" - name of the contract that initially processed the transaction. It means the contract is called during transaction validation if the variable is an empty string. To check whether the contract is called by another contract or directly by the transaction, you need to compare the values of $original_contract and $this_contract. It means that the contract is called by the transaction if they are equal;")]),t._v(" "),e("li",[e("code",[t._v("$this_contract")]),t._v(" - name of the contract currently being executed;")]),t._v(" "),e("li",[e("code",[t._v("$guest_key")]),t._v(" - guest account address;")]),t._v(" "),e("li",[e("code",[t._v("$stack")]),t._v(" - contract array stack with a data type of array, containing all contracts executed. The first element of the array represents the name of the contract currently being executed, while the last element represents the name of the contract that initially processed the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$node_position")]),t._v(" - the index number of the verification node array where the block is located;")]),t._v(" "),e("li",[e("code",[t._v("$txhash")]),t._v(" - transaction hash;")]),t._v(" "),e("li",[e("code",[t._v("$contract")]),t._v(" - the current contract structure array.")])]),t._v(" "),e("p",[t._v("Predefined variables can be accessed not only in contracts, but also in permission fields that defines the access permission conditions of the application elements. When used in permission fields, predefined variables for block information are always equal to zero, such as "),e("code",[t._v("$time")]),t._v(", "),e("code",[t._v("$block")]),t._v(", etc.")]),t._v(" "),e("p",[t._v("A predefined variable "),e("code",[t._v("$result")]),t._v(" is assigned with the return result of the contract.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('contract my {\n data {\n Name string\n Amount money\n }\n func conditions {\n if $Amount <= 0 {\n error "Amount cannot be 0"\n }\n $ownerId = 1232\n }\n func action {\n var amount money\n amount = $Amount - 10\n DBUpdate("mytable", $ownerId, {name: $Name,amount: amount})\n DBUpdate("mytable2", $ownerId, {amount: 10})\n }\n}\n')])])]),e("h2",{attrs:{id:"nested-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#nested-contracts"}},[t._v("#")]),t._v(" Nested Contracts")]),t._v(" "),e("p",[t._v("You can nest contracts in the conditions and action sections of the contract. Nested contracts can be called directly, and the contract parameters are specified in parentheses after the contract name, for example, "),e("code",[t._v("@1NameContract(Params)")]),t._v(". You may also call nested contracts with the "),e("a",{attrs:{href:"#callcontract"}},[t._v("CallContract")]),t._v(" function.")]),t._v(" "),e("h2",{attrs:{id:"file-upload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-upload"}},[t._v("#")]),t._v(" File upload")]),t._v(" "),e("p",[t._v("To upload a file using a form in the format of "),e("code",[t._v("multipart/form-data")]),t._v(", the data type of the contract must be "),e("code",[t._v("file")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("contract Upload {\n data {\n \t File file\n }\n ...\n}\n")])])]),e("p",[t._v("The "),e("a",{attrs:{href:"#uploadbinary"}},[t._v("UploadBinary")]),t._v(" contract is used to upload and store files. With the Logicor language function "),e("RouterLink",{attrs:{to:"/es/topics/templates2.html#binary"}},[t._v("Binary")]),t._v(" in the page editor, you can get the file download link.")],1),t._v(" "),e("h2",{attrs:{id:"queries-in-json-format"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-in-json-format"}},[t._v("#")]),t._v(" Queries in JSON format")]),t._v(" "),e("p",[t._v("In the contract language, "),e("strong",[t._v("JSON")]),t._v(" can be specified as a field type. You can use the syntax: "),e("strong",[t._v("columnname->fieldname")]),t._v(" to process the entry field. The value obtained is recorded in "),e("strong",[t._v("columnname.fieldname")]),t._v(". The above syntax can be used in Columns,One,Where of the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret map\nvar val str\nvar list array\nret = DBFind("mytable").Columns("myname,doc,doc->ind").WhereId($Id).Row()\nval = ret["doc.ind"]\nval = DBFind("mytable").Columns("myname,doc->type").WhereId($Id).One("doc->type")\nlist = DBFind("mytable").Columns("myname,doc,doc->ind").Where("doc->ind = ?", "101")\nval = DBFind("mytable").WhereId($Id).One("doc->check")\n')])])]),e("h2",{attrs:{id:"queries-with-date-and-time-operations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-with-date-and-time-operations"}},[t._v("#")]),t._v(" Queries with date and time operations")]),t._v(" "),e("p",[t._v("You cannot directly query and update the date and time with the contract language functions, but you can use PostgreSQL functions and features in the Where statement as in the example below. For example, you need to compare the field date_column with the current time. If date_column is a timestamp type, the expression should be "),e("code",[t._v("date_column NOW()")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Where("to_timestamp(date_column)> NOW()")\nWhere("date_column , >=, <=, ==, !=, ||, &&")])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if val> 10 || id != $block_key_id {\n ...\n} else {\n ...\n}\n")])])]),e("p",[t._v("The code block is executed when the conditional statement of the "),e("strong",[t._v("while")]),t._v(" loop is true. "),e("strong",[t._v("break")]),t._v(" means to terminate the loop of the code block. If you want to start a loop from the beginning, use "),e("strong",[t._v("continue")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var i int\nwhile true {\n if i > 100 {\n break\n }\n ...\n if i == 50 {\n continue\n }\n ...\n i = i + 1\n}\n")])])]),e("p",[t._v("In addition to conditional statements, Needle also supports standard arithmetic operations: "),e("code",[t._v("+")]),t._v(", "),e("code",[t._v("-")]),t._v(", "),e("code",[t._v("*")]),t._v(", "),e("code",[t._v("/")]),t._v(".")]),t._v(" "),e("p",[t._v("Variables of string and bytes types can be used as a conditional statement. If the length of the type is greater than zero, the condition is true, otherwise it is false.")]),t._v(" "),e("h2",{attrs:{id:"functions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#functions"}},[t._v("#")]),t._v(" Functions")]),t._v(" "),e("p",[t._v("Functions can perform some operations on the data received by the "),e("a",{attrs:{href:"#data-section"}},[t._v("data section")]),t._v(" of a contract: read and write data from the database, convert the type of value, and establish the interaction between contracts.")]),t._v(" "),e("h3",{attrs:{id:"function-declaration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#function-declaration"}},[t._v("#")]),t._v(" Function declaration")]),t._v(" "),e("p",[t._v("Use the func keyword to declare a function, followed by the name and the list of parameters passed to it and their types. All parameters are enclosed in parentheses and separated by commas. After the parentheses, the data type of the value returned by the function must be declared. The function body must be enclosed in braces. If the function has no parameters, the braces can be omitted. To return a value from a function, use the "),e("code",[t._v("return")]),t._v(" keyword.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func myfunc(left int, right int) int {\n return left*right + left - right\n}\nfunc test int {\n return myfunc(10, 30) + myfunc(20, 50)\n}\nfunc ooops {\n error "Ooops..."\n}\n')])])]),e("p",[t._v("Function do not return errors, because all error checks are performed automatically. If there is an error in any function, the contract will terminate its operation and present the error description in a window.")]),t._v(" "),e("h3",{attrs:{id:"variable-length-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variable-length-parameters"}},[t._v("#")]),t._v(" Variable-length parameters")]),t._v(" "),e("p",[t._v("Functions can define variable-length parameters, use the "),e("code",[t._v("...")]),t._v(" symbol as the last parameter type of the function to indicate variable-length parameters, with a data type of "),e("code",[t._v("array")]),t._v(". Variable-length parameters include all variables from the time the parameter is passed in the call. All types of variables can be passed, but you need to deal with conflicts of mismatching of data types.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func sum(out string, values ...) {\nvar i, res int\n\nwhile i 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"field": {"$gte": 12}}')]),t._v("\nEquivalent to "),e("code",[t._v("field >= 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$and": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 AND expr2 AND expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$or": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 OR expr2 OR expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$like": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value%'")]),t._v(" (fuzzy search).")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$begin": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'value%'")]),t._v(" (starts with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$end": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value'")]),t._v(" (ends with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: "$isnull"}')]),t._v("\nEquivalent to field is null.")])])])])]),t._v(" "),e("p",[t._v("Make sure not to overwrite the keys of object arrays. For example, if you want to query with "),e("code",[t._v("id>2 and id<5")]),t._v(", you cannot use "),e("code",[t._v('{id:{"$gt": 2}, id:{"$lt": 5}}')]),t._v(", because the first element will be overwritten by the second element. You should use the following query structure:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{id: [{"$gt": 2}, {"$lt": 5}]}\n')])])]),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"$and": [{id:{"$gt": 2}}, {id:{"$lt": 5}}]}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Queries by ID. For example, .WhereId(1).")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Order")])]),t._v(" "),e("p",[t._v("Used to sort the result set by a specified column, or by id by default.")]),t._v(" "),e("p",[t._v("If you use only one field for sorting, you can specify it as a string. To sort multiple fields, you need to specify an array of string objects:")]),t._v(" "),e("p",[t._v("Descending order: "),e("code",[t._v('{"field": "-1"}')]),t._v(" Equivalent to "),e("code",[t._v("field desc")]),t._v(".")]),t._v(" "),e("p",[t._v("Ascending order: "),e("code",[t._v('{"field": "1"}')]),t._v(" Equivalent to "),e("code",[t._v("field asc")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")])]),t._v(" "),e("p",[t._v("Returns the number of entries. 25, by default. The maximum number is 10,000.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Offset")])]),t._v(" "),e("p",[t._v("Offset.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Ecosystemid")])]),t._v(" "),e("p",[t._v("Ecosystem ID. By default, the table of the current ecosystem is queried.")])])]),t._v(" "),e("h4",{attrs:{id:"example-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var i int\nvar ret string\nret = DBFind("contracts").Columns("id,value").Where({id: [{"$gt": 2}, {"$lt": 5}]}).Order( "id")\nwhile i 0 {\n item = list[0]\n}\n')])])]),e("h3",{attrs:{id:"gethistoryrow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gethistoryrow"}},[t._v("#")]),t._v(" GetHistoryRow")]),t._v(" "),e("p",[t._v("Returns a single snapshot from the change history of a specified entry in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetHistoryRow(table string, id int, rollbackId int) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("rollbackId")])]),t._v(" "),e("p",[t._v("rollback_tx The entry ID of the table.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' $result = GetHistoryRow("contracts",205,2358)\n')])])]),e("h3",{attrs:{id:"getcolumntype"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[t._v("#")]),t._v(" GetColumnType")]),t._v(" "),e("p",[t._v("Returns the data type of a specified field in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetColumnType(table, column string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The following types can be returned: "),e("code",[t._v("text, varchar, number, money, double, bytes, json, datetime, double")]),t._v(".")]),t._v(" "),e("h4",{attrs:{id:"example-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var coltype string\ncoltype = GetColumnType("members", "member_name")\n')])])]),e("h3",{attrs:{id:"getdatafromxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getdatafromxlsx"}},[t._v("#")]),t._v(" GetDataFromXLSX")]),t._v(" "),e("p",[t._v("Returns data from XLSX spreadsheets.")]),t._v(" "),e("h4",{attrs:{id:"syntax-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetDataFromXLSX(binId int, line int, count int, sheet int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("line")])]),t._v(" "),e("p",[t._v("The starting line number, starting from 0 by default.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("count")])]),t._v(" "),e("p",[t._v("The number of rows that need to be returned.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var a array\na = GetDataFromXLSX(3, 12, 10, 1)\n")])])]),e("h3",{attrs:{id:"getrowscountxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getrowscountxlsx"}},[t._v("#")]),t._v(" GetRowsCountXLSX")]),t._v(" "),e("p",[t._v("Returns the number of lines in a specified XLSX file.")]),t._v(" "),e("h4",{attrs:{id:"syntax-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetRowsCountXLSX(binId int, sheet int) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var count int\ncount = GetRowsCountXLSX(binid, 1)\n")])])]),e("h3",{attrs:{id:"langres"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[t._v("#")]),t._v(" LangRes")]),t._v(" "),e("p",[t._v("Returns a multilingual resource with name label for language lang, specified as a two-character code, for example: "),e("code",[t._v("en")]),t._v(", "),e("code",[t._v("zh")]),t._v(". If there is no language for a selected language, then the language resource of the "),e("code",[t._v("en")]),t._v(" label is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("LangRes(label string, lang string) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("label")])]),t._v(" "),e("p",[t._v("Language resource name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("lang")])]),t._v(" "),e("p",[t._v("Two-character language code.")])])]),t._v(" "),e("h4",{attrs:{id:"example-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('warning LangRes("@1confirm", "en")\nerror LangRes("@1problems", "zh")\n')])])]),e("h3",{attrs:{id:"getblock"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getblock"}},[t._v("#")]),t._v(" GetBlock")]),t._v(" "),e("p",[t._v("Returns relevant information about a specified block.")]),t._v(" "),e("h4",{attrs:{id:"syntax-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetBlock(blockID int64) map\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("blockID")])]),t._v(" "),e("p",[t._v("Block ID.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("Return an array of objects:")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("id")])]),t._v(" "),e("p",[t._v("Block ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("time")])]),t._v(" "),e("p",[t._v("Block generation timestamp.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")])]),t._v(" "),e("p",[t._v("The account address of the verification node generated the block.")])])]),t._v(" "),e("h4",{attrs:{id:"example-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var b map\nb = GetBlock(1)\nPrintln(b)\n")])])]),e("h3",{attrs:{id:"dbinsert"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbinsert"}},[t._v("#")]),t._v(" DBInsert")]),t._v(" "),e("p",[t._v("Adds an entry to a specified table and return the entry ID.")]),t._v(" "),e("h4",{attrs:{id:"syntax-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBInsert(table string, params map) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are inserted values.")])])]),t._v(" "),e("h4",{attrs:{id:"example-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBInsert("mytable", {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdate"}},[t._v("#")]),t._v(" DBUpdate")]),t._v(" "),e("p",[t._v("Changes the column value of a specified entry ID in a specified table. If the entry ID does not exist in the table, an error is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdate(tblname string, id int, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdate("mytable", myid, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdateext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdateext"}},[t._v("#")]),t._v(" DBUpdateExt")]),t._v(" "),e("p",[t._v("Changes the value of a column in a specified table that matches the query condition.")]),t._v(" "),e("h4",{attrs:{id:"syntax-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdateExt(tblname string, where map, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("where")])]),t._v(" "),e("p",[t._v("Query conditions.")]),t._v(" "),e("p",[t._v("For more details, see "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdateExt("mytable", {id: $key_id, ecosystem: $ecosystem_id}, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"delcolumn"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delcolumn"}},[t._v("#")]),t._v(" DelColumn")]),t._v(" "),e("p",[t._v("Deletes a field in a specified table that has no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelColumn(tblname string, column string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("The field to be deleted.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelColumn("mytable", "mycolumn")\n')])])]),e("h3",{attrs:{id:"deltable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deltable"}},[t._v("#")]),t._v(" DelTable")]),t._v(" "),e("p",[t._v("Deletes a specified table that has e no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelTable(tblname string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelTable("mytable")\n')])])]),e("h3",{attrs:{id:"append"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#append"}},[t._v("#")]),t._v(" Append")]),t._v(" "),e("p",[t._v("Inserts any type of val into the src array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("p",[t._v("Append(src array, val anyType) array")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("src")])]),t._v(" "),e("p",[t._v("The original array.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("The value to be inserted.")])])]),t._v(" "),e("h4",{attrs:{id:"example-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var list array\nlist = Append(list, "new_val")\n')])])]),e("h3",{attrs:{id:"join"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#join"}},[t._v("#")]),t._v(" Join")]),t._v(" "),e("p",[t._v("Combines elements of the in array into a string with a specified sep separator.")]),t._v(" "),e("h4",{attrs:{id:"syntax-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Join(in array, sep string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("Array name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var val string, myarr array\n myarr[0] = "first"\n myarr[1] = 10\n val = Join(myarr, ",")\n')])])]),e("h3",{attrs:{id:"split"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#split"}},[t._v("#")]),t._v(" Split")]),t._v(" "),e("p",[t._v("Uses the sep separator to split the in string into elements and put them into an array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Split(in string, sep string) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("String.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var myarr array\nmyarr = Split("first,second,third", ",")\n')])])]),e("h3",{attrs:{id:"len"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#len"}},[t._v("#")]),t._v(" Len")]),t._v(" "),e("p",[t._v("Returns the number of elements in a specified array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Len(val array) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if Len(mylist) == 0 {\n ...\n}\n")])])]),e("h3",{attrs:{id:"row"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#row"}},[t._v("#")]),t._v(" Row")]),t._v(" "),e("p",[t._v("The list parameter must not be specified in this case. Return the first object array in the array list. If the list is empty, an empty result is returned. This function is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" Row(list array) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("list")])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")])])]),t._v(" "),e("h4",{attrs:{id:"example-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var ret map\n ret = DBFind("contracts").Columns("id,value").WhereId(10).Row()\n Println(ret)\n')])])]),e("h3",{attrs:{id:"one"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#one"}},[t._v("#")]),t._v(" One")]),t._v(" "),e("p",[t._v("Returns the field value of the first object array in the array list. If the list array is empty, nil is returned. It is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("One(list array, column string) string\n")])])]),e("ul",[e("li",[e("strong",[t._v("list")])])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret string\nret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")\nif ret != nil {\n Println(ret)\n}\n')])])]),e("h3",{attrs:{id:"getmapkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getmapkeys"}},[t._v("#")]),t._v(" GetMapKeys")]),t._v(" "),e("p",[t._v("Returns the key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetMapKeys(val map) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k1"] = "v1"\nval["k2"] = "v2"\narr = GetMapKeys(val)\n')])])]),e("h3",{attrs:{id:"sortedkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sortedkeys"}},[t._v("#")]),t._v(" SortedKeys")]),t._v(" "),e("p",[t._v("Returns a sorted key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("SortedKeys(val map) array\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k2"] = "v2"\nval["k1"] = "v1"\narr = SortedKeys(val)\n')])])]),e("h3",{attrs:{id:"callcontract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#callcontract"}},[t._v("#")]),t._v(" CallContract")]),t._v(" "),e("p",[t._v("Calls the contract with a specified name. All parameters of the data section in the contract must be included in an object array. This function returns the value assigned to the "),e("strong",[t._v("$result")]),t._v(" variable by a specified contract.")]),t._v(" "),e("h4",{attrs:{id:"syntax-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("CallContract(name string, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The name of the contract being called.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An associative array of the contract input data.")])])]),t._v(" "),e("h4",{attrs:{id:"example-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var par map\npar["Name"] = "My Name"\nCallContract("MyContract", par)\n')])])]),e("h3",{attrs:{id:"contractaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractaccess"}},[t._v("#")]),t._v(" ContractAccess")]),t._v(" "),e("p",[t._v("Checks if the name of contract being executed matches one of the names listed in the parameters. Usually it is used to control contract access to tables. When editing table fields or inserting and adding new column fields in the permissions section of the table, please specify this function in the permissions fields.")]),t._v(" "),e("h4",{attrs:{id:"syntax-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractAccess(name string, [name string]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractAccess("MyContract")\nContractAccess("MyContract","SimpleContract")\n')])])]),e("h3",{attrs:{id:"contractconditions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractconditions"}},[t._v("#")]),t._v(" ContractConditions")]),t._v(" "),e("p",[t._v("Calls the conditions section in the contract with a specified name.")]),t._v(" "),e("p",[t._v("For this type of contracts, the data section must be empty. If the conditions section is executed without error, it returns true. If there is an error during execution, the parent contract will also be terminated due to the error. This function is usually used to control the contract's access to tables and can be called in the permission fields when editing system tables.")]),t._v(" "),e("h4",{attrs:{id:"syntax-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractConditions(name string, [name string]) bool\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractConditions("MainCondition")\n')])])]),e("h3",{attrs:{id:"evalcondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#evalcondition"}},[t._v("#")]),t._v(" EvalCondition")]),t._v(" "),e("p",[t._v("Gets the value of the condfield field in the record with a 'name' field from the tablename table, and checks the conditions of the condfield field value.")]),t._v(" "),e("h4",{attrs:{id:"syntax-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(tablename string, name string, condfield string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tablename")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Queries the value with the 'name' field.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("condfield")])]),t._v(" "),e("p",[t._v("The name of the field whose conditions needs to be checked.")])])]),t._v(" "),e("h4",{attrs:{id:"example-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(`menu`, $Name, `conditions`)\n")])])]),e("h3",{attrs:{id:"getcontractbyid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyid"}},[t._v("#")]),t._v(" GetContractById")]),t._v(" "),e("p",[t._v("Returns its contract name by contract ID. If not found the contract, an empty string is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractById(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("The contract ID in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var name string\nname = GetContractById($IdContract)\n")])])]),e("h3",{attrs:{id:"getcontractbyname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyname"}},[t._v("#")]),t._v(" GetContractByName")]),t._v(" "),e("p",[t._v("This function returns its contract ID by contract name. If not found the contract, zero is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractByName(name string) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The contract name in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var id int\nid = GetContractByName(`NewBlock`)\n")])])]),e("h3",{attrs:{id:"roleaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#roleaccess"}},[t._v("#")]),t._v(" RoleAccess")]),t._v(" "),e("p",[t._v("Checks whether the role ID of the contract caller matches one of the IDs specified in the parameter.")]),t._v(" "),e("p",[t._v("You can use this function to control contract access to tables and other data.")]),t._v(" "),e("h4",{attrs:{id:"syntax-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(id int, [id int]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Role ID.")])])]),t._v(" "),e("h4",{attrs:{id:"example-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(1)\nRoleAccess(1, 3)\n")])])]),e("h3",{attrs:{id:"transactioninfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#transactioninfo"}},[t._v("#")]),t._v(" TransactionInfo")]),t._v(" "),e("p",[t._v("Queries transactions by specified hash value and returns information about the contract executed and its parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("TransactionInfo(hash: string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hash")])]),t._v(" "),e("p",[t._v("Transaction hash in hexadecimal string format.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("This function returns a string in JSON format:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("contract")])]),t._v(" "),e("p",[t._v("Contract name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("Data passed to contract parameters.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("block")])]),t._v(" "),e("p",[t._v("ID of the block that processed the transaction.")])])]),t._v(" "),e("h4",{attrs:{id:"example-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var out map\nout = JSONDecode(TransactionInfo(hash))\n")])])]),e("h3",{attrs:{id:"throw"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#throw"}},[t._v("#")]),t._v(" Throw")]),t._v(" "),e("p",[t._v("Generates an error of type exception.")]),t._v(" "),e("h4",{attrs:{id:"syntax-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Throw(ErrorId string, ErrDescription string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("ErrorId")])]),t._v(" "),e("p",[t._v("Error identifier.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ErrDescription")])]),t._v(" "),e("p",[t._v("Error description.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The format of this type of transaction results:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"type":"exception","error":"Error description","id":"Error ID"}\n')])])]),e("h4",{attrs:{id:"example-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Throw("Problem", "There is a problem")\n')])])]),e("h3",{attrs:{id:"validatecondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#validatecondition"}},[t._v("#")]),t._v(" ValidateCondition")]),t._v(" "),e("p",[t._v("Tries to compile the conditions specified by the condition parameter. If there is an error during the compilation process, an error is generated and the contract called is terminated. This function is designed to check the correctness of the conditional format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ValidateCondition(condition string, state int)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("condition")])]),t._v(" "),e("p",[t._v("The conditional format that needs to be verified.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("state")])]),t._v(" "),e("p",[t._v("Ecosystem ID. If you check the global condition, please specify it as 0.")])])]),t._v(" "),e("h4",{attrs:{id:"example-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ValidateCondition(`ContractAccess("@1MyContract")`, 1)\n')])])]),e("h3",{attrs:{id:"addresstoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[t._v("#")]),t._v(" AddressToId")]),t._v(" "),e("p",[t._v("Returns the corresponding account address by wallet address. If an invalid address is specified, '0' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("AddressToId(address string) int\n\n")])])]),e("ul",[e("li",[e("p",[t._v("Address")]),t._v(" "),e("p",[t._v("Wallet address in "),e("code",[t._v("XXXX-...-XXXX")]),t._v(" format or number format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("wallet = AddressToId($Recipient)\n")])])]),e("h3",{attrs:{id:"idtoaddress"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#idtoaddress"}},[t._v("#")]),t._v(" IdToAddress")]),t._v(" "),e("p",[t._v("Returns the corresponding wallet address by account address. If an invalid address is specified, the invalid address 'invalid' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("IdToAddress(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Account address.")])])]),t._v(" "),e("h4",{attrs:{id:"example-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("$address = IdToAddress($id)\n")])])]),e("h3",{attrs:{id:"pubtoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pubtoid"}},[t._v("#")]),t._v(" PubToID")]),t._v(" "),e("p",[t._v("The account address is returned by public key in hexadecimal format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("PubToID(hexkey string) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexkey")])]),t._v(" "),e("p",[t._v("The public key in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var wallet int\nwallet = PubToID("04fa5e78.....34abd6")\n')])])]),e("h3",{attrs:{id:"decodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#decodebase64"}},[t._v("#")]),t._v(" DecodeBase64")]),t._v(" "),e("p",[t._v("Returns a string by specifying the base64 format")]),t._v(" "),e("h4",{attrs:{id:"syntax-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DecodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("String in base64 format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("val = DecodeBase64(mybase64)\n")])])]),e("h3",{attrs:{id:"encodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#encodebase64"}},[t._v("#")]),t._v(" EncodeBase64")]),t._v(" "),e("p",[t._v("Returns a string in base64 format by specifying a string.")]),t._v(" "),e("h4",{attrs:{id:"syntax-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EncodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("The string to be encoded.")])])]),t._v(" "),e("h4",{attrs:{id:"example-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var base64str string\nbase64str = EncodeBase64("my text")\n')])])]),e("h3",{attrs:{id:"float"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#float"}},[t._v("#")]),t._v(" Float")]),t._v(" "),e("p",[t._v("Converts an integer or string to a float number.")]),t._v(" "),e("h4",{attrs:{id:"syntax-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Float(val int|string) float\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("An integer or string.")])])]),t._v(" "),e("h4",{attrs:{id:"example-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('val = Float("567.989") + Float(232)\n')])])]),e("h3",{attrs:{id:"hextobytes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hextobytes"}},[t._v("#")]),t._v(" HexToBytes")]),t._v(" "),e("p",[t._v("Converts a string in hexadecimal format to byte type bytes.")]),t._v(" "),e("h4",{attrs:{id:"syntax-42"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" HexToBytes(hexdata string) bytes\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexdata")])]),t._v(" "),e("p",[t._v("A string in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val bytes\nval = HexToBytes("34fe4501a4d80094")\n')])])]),e("h3",{attrs:{id:"formatmoney"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#formatmoney"}},[t._v("#")]),t._v(" FormatMoney")]),t._v(" "),e("p",[t._v("Returns the string value of exp / 10 ^ digit.")]),t._v(" "),e("h4",{attrs:{id:"syntax-43"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("FormatMoney(exp string, digit int) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Exp")])]),t._v(" "),e("p",[t._v("A number in string format.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("digit")])]),t._v(" "),e("p",[t._v("The exponent (positive or negative) of 10 in the expression "),e("code",[t._v("Exp/10^digit")]),t._v(". Positive values determine decimal places.")])])]),t._v(" "),e("h4",{attrs:{id:"example-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' s = FormatMoney("78236475917384", 0)\n')])])]),e("h3",{attrs:{id:"random"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#random"}},[t._v("#")]),t._v(" Random")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Returns a random number between min and max (min <= result Time2.")])]),e._v(" "),t("h4",{attrs:{id:"example-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(CmpTime(#time1#, #time2#)<0){...}\n")])])]),t("h3",{attrs:{id:"code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#code"}},[e._v("#")]),e._v(" Code")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.")]),e._v(" "),t("p",[e._v("It substitute a variable with the value of the variable (for example, "),t("code",[e._v("#name#")]),e._v(").")]),e._v(" "),t("h4",{attrs:{id:"syntax-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code(Text)\n")])])]),t("blockquote",[t("p",[e._v("Code")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code( P(This is the first line.\n Span(This is the second line.))\n)\n")])])]),t("h3",{attrs:{id:"codeasis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#codeasis"}},[e._v("#")]),e._v(" CodeAsIs")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.\nIt does not replace a variable with its value. For example, "),t("code",[e._v("#name#")]),e._v(" will be displayed as is.")]),e._v(" "),t("h4",{attrs:{id:"syntax-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs(Text)\n")])])]),t("blockquote",[t("p",[e._v("CodeAsIs")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs( P(This is the #test1#.\n Span(This is the #test2#.))\n)\n")])])]),t("h3",{attrs:{id:"data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[e._v("#")]),e._v(" Data")]),e._v(" "),t("p",[e._v("Create a data element, fill it with the specified data and put it in Source. Then, you can receive Source as a data input in "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions. The sequence of column names corresponds to the sequence of data entry values.")]),e._v(" "),t("h4",{attrs:{id:"syntax-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Data(Source,Columns,Data)\n [.Custom(Column){Body}]\n")])])]),t("blockquote",[t("p",[e._v("Data")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name of the data source. You can specify any name that will be passed to other functions later as a data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Columns")])]),e._v(" "),t("p",[e._v("A list of column names, separated by commas.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("Data set.")]),e._v(" "),t("p",[e._v("One record per line. Column values must be separated by commas. Data and Columns should be set in the same order.")]),e._v(" "),t("p",[e._v("Values with commas should be enclosed in double quotes ("),t("code",[e._v('"example1, example2", 1, 2')]),e._v("). Quoted values should be put in two double quotes ("),t("code",[e._v('"""example", "example2""", 1, 2')]),e._v(").")])])]),e._v(" "),t("h3",{attrs:{id:"custom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom"}},[e._v("#")]),e._v(" Custom")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to [Table](#table) and other functions to receive data.\nUse multiple Custom functions if you want to assign multiple calculated columns.\n")])])]),t("ul",[t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")])])]),e._v(" "),t("h4",{attrs:{id:"example-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"id,name"){\n "1",John Silver\n 2,"Mark, Smith"\n 3,"Unknown ""Person"""\n }.Custom(link){Button(Body: View, Class: btn btn-link, Page: user, PageParams: "id=#id#"}\n')])])]),t("h3",{attrs:{id:"datetime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datetime"}},[e._v("#")]),e._v(" DateTime")]),e._v(" "),t("p",[e._v("Display the time and date in the specified format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(DateTime, Format)\n")])])]),t("blockquote",[t("p",[e._v("DateTime")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("DateTime")])]),e._v(" "),t("p",[e._v("Time and date expressed in unixtime or standard format "),t("code",[e._v("2006-01-02T15:04:05")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("Format template: year in 2-digit format "),t("code",[e._v("YY")]),e._v(", 4-digit format "),t("code",[e._v("YYYY")]),e._v(", month in "),t("code",[e._v("MM")]),e._v(", day in "),t("code",[e._v("DD")]),e._v(", hour in "),t("code",[e._v("HH")]),e._v(", minute in "),t("code",[e._v("MM")]),e._v(", second in "),t("code",[e._v("SS")]),e._v(", e.g.: "),t("code",[e._v("YY/MM/DD HH:MM")]),e._v(".\nIf it is not specified or missing, "),t("code",[e._v("YYYY-MM-DD HH:MI:SS")]),e._v(" will be used.")])])]),e._v(" "),t("h4",{attrs:{id:"example-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(2017-11-07T17:51:08)\nDateTime(#mytime#,HH:MI DD.MM.YYYY)\n")])])]),t("h3",{attrs:{id:"dbfind"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbfind"}},[e._v("#")]),e._v(" DBFind")]),e._v(" "),t("p",[e._v("Create a dbfind element, fill it with the data of the table table and put it in the Source structure, which can later be used for the input data of "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions Source.")]),e._v(" "),t("h4",{attrs:{id:"syntax-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBFind(table, Source)\n [.Columns(columns)]\n [.Where(conditions)]\n [.WhereId(id)]\n [.Order(name)]\n [.Limit(limit)]\n [.Offset(offset)]\n [.Count(countvar)]\n [.Ecosystem(id)]\n [.Cutoff(columns)]\n [.Custom(Column){Body}]\n [.Vars(Prefix)]\n")])])]),t("blockquote",[t("p",[e._v("DBFind")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Columns")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("columns")])]),e._v(" "),t("p",[e._v("If not specified, a list of all fields will be returned. If there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(". In this case, the field name generated is "),t("code",[e._v("columnname.fieldname")]),e._v(".")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Where")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("conditions")])])]),e._v(" "),t("p",[e._v("Data query conditions. See DBFind.\nIf there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(".")]),e._v(" "),t("blockquote",[t("p",[e._v("WhereId\nQuery by ID, e.g. "),t("code",[e._v(".WhereId(1)")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Entry ID.")]),e._v(" "),t("blockquote",[t("p",[e._v("Order\nSort by field.\nFor more information about the sorting syntax, see "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("name")])])]),e._v(" "),t("p",[e._v("Field Name")]),e._v(" "),t("blockquote",[t("p",[e._v("Limit")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("limit")])]),e._v(" "),t("p",[e._v("The number of entries returned, 25 by default. The maximum number is 10,000.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Offset")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Offset")])]),e._v(" "),t("p",[e._v("Offset.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Count")])]),e._v(" "),t("p",[e._v("Specify the total number of rows of the Where condition.\nIn addition to storing it in a variable, the total count is returned in the count parameter of the dbfind element.")]),e._v(" "),t("p",[e._v("If Where and WhereID are not specified, the total count of rows in the table will be returned.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("countvar")])]),e._v(" "),t("p",[e._v("Name of the variable that holds the row count.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Ecosystem")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Ecosystem ID. By default, the data comes from the specified table in the current ecosystem.")]),e._v(" "),t("blockquote",[t("p",[e._v("Cutoff")])]),e._v(" "),t("p",[e._v("Used to cut and display large amounts of text data.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("columns")])])]),e._v(" "),t("p",[e._v("A comma-separated list of fields that must be processed by the Cutoff function.\nThe field value will be replaced by a JSON object that has two fields: link link and title title. If the field value contains more than 32 characters, link pointing to the first 32 characters of the full text is returned. If the field value contains 32 characters or less, link is set to void and title contains the complete field value.")]),e._v(" "),t("blockquote",[t("p",[e._v("Custom")])]),e._v(" "),t("p",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions to receive data.\nIf you want to assign multiple calculated columns, use multiple Custom functions.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Column")])])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Body")])])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")]),e._v(" "),t("blockquote",[t("p",[e._v("Vars")])]),e._v(" "),t("p",[e._v("The first row obtained by the query will generate a set of variables with values. When it is specified, the Limit parameter automatically becomes 1, and only one (1) record is returned.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Prefix")])])]),e._v(" "),t("p",[e._v("The prefix added to the variable name. Its format is "),t("code",[e._v("#prefix_columnname#")]),e._v(", where the column name immediately follows the underscore symbol. If there is a column containing a JSON field, the variable generated will be in the following format: "),t("code",[e._v("#prefix_columnname_field#")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"example-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(parameters,myparam)\nDBFind(parameters,myparam).Columns(name,value).Where({name:"money"})\nDBFind(parameters,myparam).Custom(myid){Strong(#id#)}.Custom(myname){\n Strong(Em(#name#))Div(myclass, #company#)\n}\n')])])]),t("h3",{attrs:{id:"div"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#div"}},[e._v("#")]),e._v(" Div")]),e._v(" "),t("p",[e._v("Create a div HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(Class, Body)\n [.Style(Style)]\n [.Show(Condition)]\n [.Hide(Condition)]\n")])])]),t("blockquote",[t("p",[e._v("Div")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the div.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("blockquote",[t("p",[e._v("Show")])]),e._v(" "),t("p",[e._v("Define the conditions for displaying Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("See Hide below.")]),e._v(" "),t("blockquote",[t("p",[e._v("Hide")])]),e._v(" "),t("p",[e._v("Define the conditions for hiding Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("The expression format is "),t("code",[e._v("InputName=Value")]),e._v(", when all expressions are true, "),t("em",[e._v("Condition")]),e._v(" is true, and when the value of "),t("code",[e._v("InputName")]),e._v(" is equal to "),t("code",[e._v("Value")]),e._v(", "),t("em",[e._v("Condition")]),e._v(" is true. If multiple "),t("em",[e._v("Show")]),e._v(" or "),t("em",[e._v("Hide")]),e._v(" are called, there must be at least one "),t("em",[e._v("Condition")]),e._v(" parameter is true.")]),e._v(" "),t("h4",{attrs:{id:"example-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Form(){\n Div(text-left){\n Input(Name: "broadcast", Type: "checkbox", Value: "false")\n }\n Div(text-left){\n hello\n }.Show("broadcast=false")\n Div(text-left){\n world\n }.Hide("broadcast=false")\n}\n')])])]),t("h3",{attrs:{id:"ecosysparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecosysparam"}},[e._v("#")]),e._v(" EcosysParam")]),e._v(" "),t("p",[e._v("This function obtains parameter values from the ecosystem parameter table of the current ecosystem. If the returned result name contains the language resources, it will be translated accordingly.")]),e._v(" "),t("h4",{attrs:{id:"syntax-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EcosysParam(Name, Index, Source)\n")])])]),t("blockquote",[t("p",[e._v("EcosysParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("If the requested parameter is a list of comma-separated elements, you can specify an index starting from 1. For example, if "),t("code",[e._v("gender = male,female")]),e._v(", then "),t("code",[e._v("gender = male,female")]),e._v(" returns "),t("code",[e._v("female")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of the specified parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(EcosysParam(founder_account))\nEcosysParam(gender, Source: mygender)\n\nEcosysParam(Name: gender_list, Source: src_gender)\nSelect(Name: gender, Source: src_gender, NameColumn: name, ValueColumn: id)\n")])])]),t("h3",{attrs:{id:"em"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#em"}},[e._v("#")]),e._v(" Em")]),e._v(" "),t("p",[e._v("Create an em HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Em(Body, Class)\n")])])]),t("blockquote",[t("p",[e._v("Em")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("The em class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("This is an Em(important news).\n")])])]),t("h3",{attrs:{id:"forlist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#forlist"}},[e._v("#")]),e._v(" ForList")]),e._v(" "),t("p",[e._v("Display the list of elements in the Source data source in the template format set in Body and create a "),t("strong",[e._v("forlist")]),e._v(" element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(Source, Index){Body}\n")])])]),t("blockquote",[t("p",[e._v("ForList")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" or "),t("a",{attrs:{href:"#data"}},[e._v("Data")]),e._v(" function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("The variable of the iteration counter, starting from 1.\nAn optional parameter. If not specified, the iteration count value will be written to the [Source] _index variable.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Template for inserting elements.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(mysrc){Span(#mysrc_index#. #name#)}\n")])])]),t("h3",{attrs:{id:"form"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),t("p",[e._v("Create a form HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(Class, Body) [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Form")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the form.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style\nThe CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("h4",{attrs:{id:"example-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(class1 class2, Input(myid))\n")])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[e._v("#")]),e._v(" GetColumnType")]),e._v(" "),t("p",[e._v("Returns the field data type of a specific table.")]),e._v(" "),t("p",[e._v("Types returned include: "),t("code",[e._v("text, varchar, number, money, double, bytes, json, datetime, double")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetColumnType(Table, Column)\n")])])]),t("blockquote",[t("p",[e._v("GetColumnType")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Field name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("SetVar(coltype,GetColumnType(members, member_name))Div(){#coltype#}\n")])])]),t("h3",{attrs:{id:"gethistory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gethistory"}},[e._v("#")]),e._v(" GetHistory")]),e._v(" "),t("p",[e._v("Create a gethistory element and fill it with the history change records of the entries in the specified table. The data generated will be placed in the Source element, which can be used later in the source input function (for example, "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe array is sorted in order from the last modified.\nThe id field in the array points to the id of the rollback_tx table. block_id represents the block ID, block_time represents the block generation timestamp.")]),e._v(" "),t("h4",{attrs:{id:"syntax-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(Source, Name, Id, RollbackId)\n")])])]),t("blockquote",[t("p",[e._v("GetHistory")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Id")])]),e._v(" "),t("p",[e._v("Entry ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("RollbackId")])]),e._v(" "),t("p",[e._v("An optional parameter. If specified, only one record with the specified ID will be returned from the rollback_tx table.")])])]),e._v(" "),t("h4",{attrs:{id:"example-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(blocks, BlockHistory, 1)\n")])])]),t("h3",{attrs:{id:"getvar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getvar"}},[e._v("#")]),e._v(" GetVar")]),e._v(" "),t("p",[e._v("It returns the value of the specified variable that already exists, or an empty string if it does not exist.\nThe getvar element is only created when an editable tree is requested. The difference between "),t("code",[e._v("GetVar(varname)")]),e._v(" and "),t("code",[e._v("#varname")]),e._v(" is that if varname does not exist, GetVar will return an empty string, while #varname# will be interpreted as a string value.")]),e._v(" "),t("h4",{attrs:{id:"syntax-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetVar(Name)\n")])])]),t("blockquote",[t("p",[e._v("GetVar")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Variable name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(GetVar(name)){#name#}.Else{Name is unknown}\n")])])]),t("h3",{attrs:{id:"hint"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hint"}},[e._v("#")]),e._v(" Hint")]),e._v(" "),t("p",[e._v("Create a hint element for hints.")]),e._v(" "),t("h4",{attrs:{id:"syntax-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Hint(Icon,Title,Text)\n")])])]),t("blockquote",[t("p",[e._v("Hint")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Hint title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Hint text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Hint(Icon: "icon-wrench",Title:$@1pa_settings$,Text: This is a hint text)\n')])])]),t("h3",{attrs:{id:"if"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#if"}},[e._v("#")]),e._v(" If")]),e._v(" "),t("p",[e._v("Condition statement.\nReturns the first If or ElseIf child element that satisfies Condition. Otherwise, return the Else child element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Condition){ Body}\n [.ElseIf(Condition){ Body }]\n [.Else{ Body }]\n")])])]),t("blockquote",[t("p",[e._v("If")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Condition")])]),e._v(" "),t("p",[e._v("If the condition is equal to an empty string, 0 or false, it is considered that the condition is not met. In all other cases, this condition is considered to be satisfied.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("h4",{attrs:{id:"example-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(#value#){\n Span(Value)\n}.ElseIf(#value2#){Span(Value 2)\n}.ElseIf(#value3#){Span(Value 3)}.Else{\n Span(Nothing)\n}\n")])])]),t("h3",{attrs:{id:"image"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#image"}},[e._v("#")]),e._v(" Image")]),e._v(" "),t("p",[e._v("Create a image HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src, Alt, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Image")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Src")])]),e._v(" "),t("p",[e._v("Image source, file or "),t("code",[e._v("data:...")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Alt")])]),e._v(" "),t("p",[e._v("Alternative text when the image cannot be displayed.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Сlass")])]),e._v(" "),t("p",[e._v("Image class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src: Binary().ById(#id#), Class: preview).Style(height: 40px; widht 40px;)\n")])])]),t("h3",{attrs:{id:"imageinput"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#imageinput"}},[e._v("#")]),e._v(" ImageInput")]),e._v(" "),t("p",[e._v("Create an imageinput element to upload an image.")]),e._v(" "),t("h4",{attrs:{id:"syntax-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(Name, Width, Ratio, Format)\n")])])]),t("blockquote",[t("p",[e._v("ImageInput")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Width of the cropped image.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ratio")])]),e._v(" "),t("p",[e._v("Aspect ratio or image height.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("The format of the uploaded image.")])])]),e._v(" "),t("h4",{attrs:{id:"example-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(avatar, 100, 2/1)\n")])])]),t("h3",{attrs:{id:"include"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#include"}},[e._v("#")]),e._v(" Include")]),e._v(" "),t("p",[e._v("Insert the template with a specified name into the page code.")]),e._v(" "),t("h4",{attrs:{id:"syntax-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Include(Name)\n")])])]),t("blockquote",[t("p",[e._v("Include")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Template name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(myclass, Include(mywidget))\n")])])]),t("h3",{attrs:{id:"input"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#input"}},[e._v("#")]),e._v(" Input")]),e._v(" "),t("p",[e._v("Create an input HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name, Class, Placeholder, Type, Value, Disabled)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Input")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Placeholder")])]),e._v(" "),t("p",[e._v("Prompt for the expected value of the input field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("input type.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Element value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Disabled")])]),e._v(" "),t("p",[e._v("Disable the input element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name: name, Type: text, Placeholder: Enter your name)\nInput(Name: num, Type: text).Validate(minLength: 6, maxLength: 20)\n")])])]),t("h3",{attrs:{id:"inputerr"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputerr"}},[e._v("#")]),e._v(" InputErr")]),e._v(" "),t("p",[e._v("Create an inputerr element to validate the error text.")]),e._v(" "),t("h4",{attrs:{id:"syntax-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name,validation errors)]\n")])])]),t("blockquote",[t("p",[e._v("InputErr")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Corresponds to the name of the "),t("a",{attrs:{href:"#input"}},[e._v("Input")]),e._v(" element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("validation errors")])]),e._v(" "),t("p",[e._v("Validation error message for one or more parameters.")])])]),e._v(" "),t("h4",{attrs:{id:"example-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name: name,\nminLength: Value is too short,\nmaxLength: The length of the value must be less than 20 characters)\n")])])]),t("h3",{attrs:{id:"inputmap"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputmap"}},[e._v("#")]),e._v(" InputMap")]),e._v(" "),t("p",[e._v("Create an text input field for address, able to select coordinates on the map.")]),e._v(" "),t("h4",{attrs:{id:"syntax-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputMap(Name, Type, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("InputMap")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.\nThe value is an object in string format. For example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". When the InputMap is created with the predefined Value, the address field can be used to save the address value, so the it is not void.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Type of map spot mapping:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("polygon")]),e._v(" - indicates the area of a multi-spot closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Line")]),e._v(" - means a polyline with multiple points without closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Point")]),e._v(" - indicates a single point coordinate.")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('InputMap(Name: Coords,Type: polygon, MapType: hybrid, Value: `{"zoom":8, "center":{"lat":55.749942860682545,"lng":37.6207172870636}}`)\n')])])]),t("h3",{attrs:{id:"jsontosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jsontosource"}},[e._v("#")]),e._v(" JsonToSource")]),e._v(" "),t("p",[e._v("Create a jsontosource element and fill it with the key-value pairs of a JSON array. The data obtained is put into the Source element, which can be used later in the source input function (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe records in the result data are sorted alphabetically by JSON key.")]),e._v(" "),t("h4",{attrs:{id:"syntax-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("JsonToSource(Source, Data)\n")])])]),t("blockquote",[t("p",[e._v("JsonToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("A JSON object or a variable name containing a JSON object ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"example-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('JsonToSource(src, #myjson#)\nJsonToSource(dat, {"param":"value", "param2": "value 2"})\n')])])]),t("h3",{attrs:{id:"label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#label"}},[e._v("#")]),e._v(" Label")]),e._v(" "),t("p",[e._v("Create a label HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(Body, Class, For)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Label")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("For")])]),e._v(" "),t("p",[e._v("Bind to a form element.")])])]),e._v(" "),t("blockquote",[t("p",[t("code",[e._v("StyleThe")]),e._v(":CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(The first item).\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[e._v("#")]),e._v(" LangRes")]),e._v(" "),t("p",[e._v("Returns a specific language resource. If requested to edit the tree, the langres element is returned, and you may use the short format symbol $langres$.")]),e._v(" "),t("h4",{attrs:{id:"syntax-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(Name)\n")])])]),t("blockquote",[t("p",[e._v("LangRes")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the language resource.")])])]),e._v(" "),t("h4",{attrs:{id:"example-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(name)\nLangRes(myres)\n")])])]),t("h3",{attrs:{id:"linkpage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linkpage"}},[e._v("#")]),e._v(" LinkPage")]),e._v(" "),t("p",[e._v("Create a linkpage element, linking to the page.")]),e._v(" "),t("h4",{attrs:{id:"syntax-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LinkPage(Body, Page, Class, PageParams)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("LinkPage")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Button class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS styles")]),e._v(" "),t("h4",{attrs:{id:"example-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: "v_role_id=#recipient.role_id#")\n')])])]),t("h3",{attrs:{id:"map"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#map"}},[e._v("#")]),e._v(" Map")]),e._v(" "),t("p",[e._v("Create a visual map and display coordinates in any format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Map(Hmap, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("Map")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Hmap")])]),e._v(" "),t("p",[e._v("Height of an HTML element on the page.\nThe default value is 100.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Map value, an object in string format.\nFor example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". If "),t("code",[e._v("center")]),e._v(" is not specified, the map window will automatically adjust according to the specified coordinates.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Map(MapType:hybrid, Hmap:400, Value:{"coords":[{"lat":55.58774531752405,"lng":36.97260184619233},{"lat":55.58396161622043,"lng":36.973803475831005},{"lat":55.585222890513975,"lng":36.979811624024364},{"lat":55.58803635636347,"lng":36.978781655762646}],"area":146846.65783403456,"address":"Unnamed Road, Moscow, Russia, 143041"})\n')])])]),t("h3",{attrs:{id:"menugroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menugroup"}},[e._v("#")]),e._v(" MenuGroup")]),e._v(" "),t("p",[e._v("Create a nested submenu in the menu and return the menugroup element. Before replacing it with the language resource, the name parameter will return the value of Title.")]),e._v(" "),t("h4",{attrs:{id:"syntax-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(Title, Body, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child elements in a submenu.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(My Menu){\n MenuItem(Interface, sys-interface)\n MenuItem(Dahsboard, dashboard_default)\n}\n")])])]),t("h3",{attrs:{id:"menuitem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menuitem"}},[e._v("#")]),e._v(" MenuItem")]),e._v(" "),t("p",[e._v("Create a menu item and return the menuitem element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuItem(Title, Page, Params, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuItem")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('MenuItem(Title:$@1roles$, Page:@1roles_list, Icon:"icon-pie-chart")\n')])])]),t("h3",{attrs:{id:"money"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#money"}},[e._v("#")]),e._v(" Money")]),e._v(" "),t("p",[e._v("Returns the string value of exp / 10 ^ digit.")]),e._v(" "),t("h4",{attrs:{id:"syntax-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("blockquote",[t("p",[e._v("Money")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("A number in string format.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Digit")])]),e._v(" "),t("p",[e._v("The exponent of 10 in the expression "),t("code",[e._v("Exp/10^digit")]),e._v(". The value can be positive or negative, and a positive value determines the number of digits after the decimal point.")])])]),e._v(" "),t("h4",{attrs:{id:"example-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("h3",{attrs:{id:"or"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#or"}},[e._v("#")]),e._v(" Or")]),e._v(" "),t("p",[e._v("It returns the result of an if logical operation. All parameters listed in parentheses are separated by commas. If having one parameter that is value is not an empty string, zero or "),t("code",[e._v("false")]),e._v(", the parameter value is "),t("code",[e._v("true")]),e._v(", otherwise the parameter value is "),t("code",[e._v("false")]),e._v(". If the parameter value is "),t("code",[e._v("true")]),e._v(", the function returns "),t("code",[e._v("1")]),e._v(", otherwise it returns "),t("code",[e._v("0")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Or(parameters)\n")])])]),t("h4",{attrs:{id:"example-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Or(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"p"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#p"}},[e._v("#")]),e._v(" P")]),e._v(" "),t("p",[e._v("Create a p HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(Body, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("P")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(This is the first line.\n This is the second line.)\n")])])]),t("h3",{attrs:{id:"qrcode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#qrcode"}},[e._v("#")]),e._v(" QRcode")]),e._v(" "),t("p",[e._v("Returns the QR code with the specified text and create a qrcode element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(Text)\n")])])]),t("blockquote",[t("p",[e._v("QRcode")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("QR code text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(#name#)\n")])])]),t("h3",{attrs:{id:"radiogroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#radiogroup"}},[e._v("#")]),e._v(" RadioGroup")]),e._v(" "),t("p",[e._v("Create a radiogroup element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-44"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-44"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name, Source, NameColumn, ValueColumn, Value, Class)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("RadioGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the DBFind or Data function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("NameColumn")])]),e._v(" "),t("p",[e._v("Field name of the data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ValueColumn")])]),e._v(" "),t("p",[e._v("Value name of the data source.\nFields created with Custom cannot be used in this parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CCS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name: type_decision, Source: numbers_type_decisions, NameColumn: name, ValueColumn: value)\n")])])]),t("h3",{attrs:{id:"range"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range"}},[e._v("#")]),e._v(" Range")]),e._v(" "),t("p",[e._v("Create a range element, use step size Step from From to To (not including To) to fill integer elements. The data generated will be put into Source and can be used later in the function of the source input (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v("). If an invalid parameter is specified, an empty Source is returned.")]),e._v(" "),t("h4",{attrs:{id:"syntax-45"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-45"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Range(Source,From,To,Step)\n")])])]),t("blockquote",[t("p",[e._v("Range")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("From")])]),e._v(" "),t("p",[e._v("Starting value (i = From).")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("To")])]),e._v(" "),t("p",[e._v("End value (i ")]),e._v(".")]),e._v(" "),t("li",[e._v("All icon-class icons are from SimpleLineIcons: "),t("code",[e._v("icon-")]),e._v(".")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{425:function(e,a,t){"use strict";t.r(a);var s=t(51),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"template-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#template-language"}},[e._v("#")]),e._v(" Template Language")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#page-construction"}},[e._v("Page construction")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#template-engine"}},[e._v("Template engine")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#create-pages"}},[e._v("Create pages")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#visual-page-designer"}},[e._v("Visual page designer")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#applicable-styles"}},[e._v("Applicable styles")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#page-module"}},[e._v("Page module")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#language-resource-editor"}},[e._v("Language resource editor")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-template-language"}},[e._v("Logicor template language")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#logicor-overview"}},[e._v("Logicor overview")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#use-pageparams-to-pass-parameters-to-pages"}},[e._v("Use PageParams to pass parameters to pages")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#calling-contracts"}},[e._v("Calling contracts")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-function-classification"}},[e._v("Logicor function classification")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#operations-on-variables"}},[e._v("Operations on variables:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#navigational-operations"}},[e._v("Navigational operations:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-manipulation"}},[e._v("Data manipulation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-presentation"}},[e._v("Data presentation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#accepting-of-data"}},[e._v("Accepting of data:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-formatting-elements"}},[e._v("Data formatting elements:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form-elements"}},[e._v("Form elements:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#operations-on-code-blocks"}},[e._v("Operations on code blocks:")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-function-references"}},[e._v("Logicor function references")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#address"}},[e._v("Address")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#addresstoid"}},[e._v("AddressToId")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#and"}},[e._v("And")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#binary"}},[e._v("Binary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#button"}},[e._v("Button")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#calculate"}},[e._v("Calculate")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chart"}},[e._v("Chart")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#custom"}},[e._v("Custom")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#datetime"}},[e._v("DateTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#forlist"}},[e._v("ForList")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form"}},[e._v("Form")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#getcolumntype"}},[e._v("GetColumnType")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#hint"}},[e._v("Hint")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#if"}},[e._v("If")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#image"}},[e._v("Image")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#imageinput"}},[e._v("ImageInput")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#include"}},[e._v("Include")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#input"}},[e._v("Input")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#inputerr"}},[e._v("InputErr")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#inputmap"}},[e._v("InputMap")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#label"}},[e._v("Label")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#linkpage"}},[e._v("LinkPage")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#map"}},[e._v("Map")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#menugroup"}},[e._v("MenuGroup")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#money"}},[e._v("Money")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#or"}},[e._v("Or")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#radiogroup"}},[e._v("RadioGroup")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#range"}},[e._v("Range")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#select"}},[e._v("Select")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#span"}},[e._v("Span")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#strong"}},[e._v("Strong")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#table"}},[e._v("Table")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#transactioninfo"}},[e._v("TransactionInfo")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#app-styles-for-mobile-devices"}},[e._v("App styles for mobile devices")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#layout"}},[e._v("Layout")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#title"}},[e._v("Title")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#strong-class-names"}},[e._v("Strong-class names")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#color"}},[e._v("Color")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#grid"}},[e._v("Grid")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#panel"}},[e._v("Panel")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form-app"}},[e._v("Form")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#button-app"}},[e._v("Button")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#icon"}},[e._v("Icon")])])])])])])]),e._v(" "),t("h2",{attrs:{id:"page-construction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#page-construction"}},[e._v("#")]),e._v(" Page construction")]),e._v(" "),t("p",[e._v("Weaver's Integrated Development Environment (IDE) is created using React, a JavaScript library. It has a page editor and a visual page designer. Pages are basic parts of an application, which are used to retrieve and display data from tables, create forms for receiving user input data, pass data to contracts, and navigate between application pages. Like contracts, pages are stored in the blockchain, which can ensure they are tamper-proof when loaded in the software client.")]),e._v(" "),t("h3",{attrs:{id:"template-engine"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#template-engine"}},[e._v("#")]),e._v(" Template engine")]),e._v(" "),t("p",[e._v("Page elements (pages and menus) are formed by developers in the template engine of a verification node using the template language in Weaver's page editor. All pages are constructed using the Logicor language developed by IBAX's development team. Use content/... API commands to request pages from nodes on the network. What the template engine sent as a response to this type of request is not an HTML page, but a JSON code composed of HTML tags that form a tree in accordance with the template structure. If you want to test the template engine, you can refer to the "),t("RouterLink",{attrs:{to:"/es/reference/api2.html#content"}},[e._v("content")]),e._v(" API command.")],1),e._v(" "),t("h3",{attrs:{id:"create-pages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-pages"}},[e._v("#")]),e._v(" Create pages")]),e._v(" "),t("p",[e._v("You can use the page editor to create and edit pages, which can be found in the Pages section of Weaver's management tool. The editor can be used to:")]),e._v(" "),t("ul",[t("li",[e._v("Write the page code, highlight the keywords of the Logicor template language;")]),e._v(" "),t("li",[e._v("Select and display menus on pages;")]),e._v(" "),t("li",[e._v("Edit the menu page;")]),e._v(" "),t("li",[e._v("Configure the permission to change pages, by specifying the contract name with permission in the ContractConditions function, or by directly specifying the access permission in Change conditions;")]),e._v(" "),t("li",[e._v("Start the visual page designer;")]),e._v(" "),t("li",[e._v("Preview pages.")])]),e._v(" "),t("h4",{attrs:{id:"visual-page-designer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#visual-page-designer"}},[e._v("#")]),e._v(" Visual page designer")]),e._v(" "),t("p",[e._v("The visual page designer can be used to create page layouts without using interface codes in the Logicor language. With it, you can set the position of form elements and text on pages by dragging and dropping such elements, and configure the size of page blocks. It provides a set of ready-to-use blocks for presenting standard data models: with titles, forms and information panels. After creating a page in the visual page designer, you can write program logic for receiving data and conditional structure in the page editor. In the future, we plan to create a visual page designer with additional functions.")]),e._v(" "),t("h4",{attrs:{id:"applicable-styles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applicable-styles"}},[e._v("#")]),e._v(" Applicable styles")]),e._v(" "),t("p",[e._v("By default, pages are presented with Angular's Bootstrap Angle style. Users can create their own styles according to needs. The style is stored in the style parameter stylesheet in the ecosystem parameter table.")]),e._v(" "),t("h4",{attrs:{id:"page-module"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#page-module"}},[e._v("#")]),e._v(" Page module")]),e._v(" "),t("p",[e._v("To use a code block in multiple pages, you can create a page module to hold and embed it into the page code. Page modules can be created and edited in Weaver's Module Blocks. Like pages, editing permissions can be defined.")]),e._v(" "),t("h4",{attrs:{id:"language-resource-editor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#language-resource-editor"}},[e._v("#")]),e._v(" Language resource editor")]),e._v(" "),t("p",[e._v("Weaver includes a mechanism for page localization using a function "),t("strong",[e._v("LangRes")]),e._v(" of the Logicor template language. It could replace language resource tags on the page with text lines corresponding to the language selected by the user in the software client or browser. You can use the short syntax "),t("strong",[e._v("$lable$")]),e._v(" instead of the "),t("strong",[e._v("LangRes")]),e._v(" function. The translation of messages in popups initiated by the contract is performed by Needle's "),t("strong",[e._v("LangRes")]),e._v(" function.")]),e._v(" "),t("p",[e._v("You can create and edit language resources in the Language resources section of Weaver. A language resource consists of label names and corresponding translation of such name in different languages, as well as the corresponding two-letter language identifier (EN, ZH, JP, etc.).")]),e._v(" "),t("p",[e._v("The permissions for adding and changing language resources can be defined in the same way as other tables.")]),e._v(" "),t("h2",{attrs:{id:"logicor-template-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-template-language"}},[e._v("#")]),e._v(" Logicor template language")]),e._v(" "),t("p",[e._v("Logicor functions provide the following operations:")]),e._v(" "),t("ul",[t("li",[e._v("Retrieving values from the database: "),t("code",[e._v("DBFind")]),e._v(", showing data retrieved from the database as tables and charts;")]),e._v(" "),t("li",[e._v("Data operations for assigning and displaying variable values: "),t("code",[e._v("SetVar, GetVar, Data")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying and comparing date/time values: "),t("code",[e._v("DateTime, Now, CmpTime")]),e._v(";")]),e._v(" "),t("li",[e._v("Use various user data input fields to build forms: "),t("code",[e._v("Form, ImageInput, Input, RadioGroup, Select")]),e._v(";")]),e._v(" "),t("li",[e._v("Verify the data in the form field by displaying error messages: "),t("code",[e._v("Validate, InputErr")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying the navigation elements: "),t("code",[e._v("AddToolButton, LinkPage, Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Calling contracts: "),t("code",[e._v("Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Creating HTML page layout elements, including various tags, and choosing specific css classes: "),t("code",[e._v("Div, P, Span, etc")]),e._v(";")]),e._v(" "),t("li",[e._v("Embedding and unloading images onto pages: "),t("code",[e._v("Image, ImageInput")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying conditions of page layout fragment: "),t("code",[e._v("If, ElseIf, Else")]),e._v(";")]),e._v(" "),t("li",[e._v("Creating multi-level menus;")]),e._v(" "),t("li",[e._v("Page localization.")])]),e._v(" "),t("h3",{attrs:{id:"logicor-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-overview"}},[e._v("#")]),e._v(" Logicor overview")]),e._v(" "),t("p",[e._v("The Logicor page template language is a functional language that allows a function calling another function "),t("code",[e._v("FuncName(parameters)")]),e._v(" and nesting functions into each other. You can specify parameters without quotes, and delete unnecessary parameters.")]),e._v(" "),t("p",[e._v("If the parameter contains a comma, it should be enclosed in quotes (backquotes or double quotes). If a function can only have one parameter, you can use a comma without quotes. In addition, if the parameter has an unpaired closing parenthesis, quotes should be used.")]),e._v(" "),t("p",[e._v("If you put a parameter in quotes, but the parameter itself contains quotes, you can use different types of quotes or multiple quotes in the text.")]),e._v(" "),t("p",[e._v("In the function definition, each parameter has a specific name. You can call the function and specify the parameters in the order of declaration, or any parameter set in any order of name: "),t("code",[e._v("Parameter_name: Parameter_value")]),e._v(". Using this method, you can safely add new function parameters without breaking compatibility with the current template:")]),e._v(" "),t("p",[e._v("Functions can return texts, generate HTML elements (e.g. "),t("code",[e._v("Input")]),e._v("), or create HTML elements with nested HTML elements ("),t("code",[e._v("Div, P, Span")]),e._v("). In the latter case, a parameter with the predefined name Body is used to define the nested element. For example, nesting two divs in another div looks like this:")]),e._v(" "),t("p",[e._v("To define the nested elements described in the Body parameter, the following notation can be used: "),t("code",[e._v("FuncName(...){...}")]),e._v(". Nested elements should be specified with braces:")]),e._v(" "),t("p",[e._v("If you need to specify the same function multiple times in succession, you can use the dot "),t("code",[e._v(".")]),e._v(" instead of writing its name every time. For example, the following are the same:")]),e._v(" "),t("p",[e._v("With this language, you can assign a variable with the SetVar function and refer its value with "),t("code",[e._v("#name#")]),e._v(".")]),e._v(" "),t("p",[e._v("To refer to the language resources of the ecosystem, you can use "),t("code",[e._v("$langres$")]),e._v(", where langres is the language name.")]),e._v(" "),t("p",[e._v("The following variables are predefined:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("#key_id#")]),e._v(" - Account address of the current user;")]),e._v(" "),t("li",[t("code",[e._v("#ecosystem_id#")]),e._v(" - Current ecosystem ID;")]),e._v(" "),t("li",[t("code",[e._v("#guest_key#")]),e._v(" - Address of the guest account;")]),e._v(" "),t("li",[t("code",[e._v("#isMobile#")]),e._v(" - 1, if Weaver runs on a mobile device.")])]),e._v(" "),t("h4",{attrs:{id:"use-pageparams-to-pass-parameters-to-pages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#use-pageparams-to-pass-parameters-to-pages"}},[e._v("#")]),e._v(" Use PageParams to pass parameters to pages")]),e._v(" "),t("p",[e._v("Many functions support the PageParams parameter, which is used to pass parameters when redirecting to a new page. For example: PageParams: "),t("code",[e._v('"param1=value1,param2=value2"')]),e._v(". The parameter value can be a simple string or a variable with a reference value. When passing parameters to pages, a variable with the parameter name is created, e.g. "),t("code",[e._v("#param1#")]),e._v(" and "),t("code",[e._v("#param2#")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=world"')]),e._v(" - The new page receives the hello parameter with world as the value;")]),e._v(" "),t("li",[t("code",[e._v('PageParams: "hello=#world#"')]),e._v(" - The new page receives the hello parameter with the value of the world variable.")])]),e._v(" "),t("p",[e._v("In addition, the Val function can get data from forms, which is specified in the redirection.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=Val(world)"')]),e._v(" - The new page receives the hello parameter with the value of the world form element.")])]),e._v(" "),t("h4",{attrs:{id:"calling-contracts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#calling-contracts"}},[e._v("#")]),e._v(" Calling contracts")]),e._v(" "),t("p",[e._v("Logicor implements contract calls by clicking the Button function in a form. Once an event is triggered, the data entered by the user in a form field on the page will be passed to the contract. If the form field name corresponds to the variable name in the data section of the contract called, the data will be automatically transferred. The Button function allows to open a modal window for the user to verify the contract execution, and initiate the redirection to the specified page when the contract is successfully executed, and pass certain parameters to the page.")]),e._v(" "),t("h2",{attrs:{id:"logicor-function-classification"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-function-classification"}},[e._v("#")]),e._v(" Logicor function classification")]),e._v(" "),t("h3",{attrs:{id:"operations-on-variables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operations-on-variables"}},[e._v("#")]),e._v(" Operations on variables:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])])]),e._v(" "),t("h3",{attrs:{id:"navigational-operations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigational-operations"}},[e._v("#")]),e._v(" Navigational operations:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#button"}},[e._v("Button")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#linkpage"}},[e._v("LinkPage")])])])])]),e._v(" "),t("h3",{attrs:{id:"data-manipulation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-manipulation"}},[e._v("#")]),e._v(" Data manipulation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#calculate"}},[e._v("Calculate")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#datetime"}},[e._v("DateTime")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#money"}},[e._v("Money")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"data-presentation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-presentation"}},[e._v("#")]),e._v(" Data presentation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#hint"}},[e._v("Hint")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#image"}},[e._v("Image")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#chart"}},[e._v("Chart")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menugroup"}},[e._v("MenuGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#table"}},[e._v("Table")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#forlist"}},[e._v("ForList")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"accepting-of-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#accepting-of-data"}},[e._v("#")]),e._v(" Accepting of data:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#address"}},[e._v("Address")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#addresstoid"}},[e._v("AddressToId")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#range"}},[e._v("Range")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#getcolumntype"}},[e._v("GetColumnType")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#binary"}},[e._v("Binary")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#transactioninfo"}},[e._v("TransactionInfo")])])])])]),e._v(" "),t("h3",{attrs:{id:"data-formatting-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-formatting-elements"}},[e._v("#")]),e._v(" Data formatting elements:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#span"}},[e._v("Span")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#label"}},[e._v("Label")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#strong"}},[e._v("Strong")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"form-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form-elements"}},[e._v("#")]),e._v(" Form elements:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#form"}},[e._v("Form")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputerr"}},[e._v("InputErr")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputmap"}},[e._v("InputMap")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#imageinput"}},[e._v("ImageInput")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#radiogroup"}},[e._v("RadioGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#map"}},[e._v("Map")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#input"}},[e._v("Input")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#select"}},[e._v("Select")])]),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"operations-on-code-blocks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operations-on-code-blocks"}},[e._v("#")]),e._v(" Operations on code blocks:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#if"}},[e._v("If")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#or"}},[e._v("Or")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#include"}},[e._v("Include")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#and"}},[e._v("And")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h2",{attrs:{id:"logicor-function-references"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-function-references"}},[e._v("#")]),e._v(" Logicor function references")]),e._v(" "),t("h3",{attrs:{id:"address"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address"}},[e._v("#")]),e._v(" Address")]),e._v(" "),t("p",[e._v("This function returns the wallet address "),t("code",[e._v("xxxx-xxxx-...-xxxx")]),e._v(" of a specific account address; if no address is specified, the account address of the current user will be used as the parameter.")]),e._v(" "),t("h4",{attrs:{id:"syntax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(account)\n\n")])])]),t("blockquote",[t("p",[e._v("Address")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("account")])]),e._v(" "),t("p",[e._v("Account address.")])])]),e._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Span(Your wallet: Address(#account#))\n")])])]),t("h3",{attrs:{id:"addresstoid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[e._v("#")]),e._v(" AddressToId")]),e._v(" "),t("p",[e._v("It returns the account address of a specific wallet address xxxx-xxxx-...-xxxx.")]),e._v(" "),t("h4",{attrs:{id:"syntax-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-2"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(Wallet)\n")])])]),t("blockquote",[t("p",[e._v("AddressToId")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Wallet")])]),e._v(" "),t("p",[e._v("The wallet address in XXXX-...-XXXX format.")])])]),e._v(" "),t("h4",{attrs:{id:"example-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(#wallet#)\n")])])]),t("h3",{attrs:{id:"addtoolbutton"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addtoolbutton"}},[e._v("#")]),e._v(" AddToolButton")]),e._v(" "),t("p",[e._v("Create a button panel with an addtoolbutton element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-3"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddToolButton(Title, Icon, Page, PageParams)\n [.Popup(Width, Header)]\n")])])]),t("blockquote",[t("p",[e._v("AddToolButton")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Button title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Button icon style.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the page redirects to.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("The parameters passed to the page.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("The modal window pops up.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Header")])]),e._v(" "),t("p",[e._v("Title of the window.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Percentage of window width.\nIts range is 1 to 100.")])])]),e._v(" "),t("h4",{attrs:{id:"example-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('AddToolButton(Title: $@1broadcast$, Page: @1notifications_broadcast, Icon: icon-plus).Popup(Header: $@1notifications_broadcast$, Width: "50")\n')])])]),t("h3",{attrs:{id:"and"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#and"}},[e._v("#")]),e._v(" And")]),e._v(" "),t("p",[e._v("It returns the result of an and logical operation. All parameters listed in parentheses are separated by commas. If one of the parameters is an empty string, zero or "),t("code",[e._v("false")]),e._v(", the parameter value is "),t("code",[e._v("false")]),e._v(", otherwise the parameter value is "),t("code",[e._v("true")]),e._v(". If the parameter value is "),t("code",[e._v("true")]),e._v(", the function returns "),t("code",[e._v("1")]),e._v(", otherwise it returns "),t("code",[e._v("0")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-4"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("And(parameters)\n")])])]),t("h4",{attrs:{id:"example-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(And(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"appparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#appparam"}},[e._v("#")]),e._v(" AppParam")]),e._v(" "),t("p",[e._v("Output the application parameter value, which is taken from the app_params table of the current ecosystem. If there is a language resource with the specified name, its value will be automatically replaced.")]),e._v(" "),t("h4",{attrs:{id:"syntax-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-5"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(App, Name, Index, Source)\n\n")])])]),t("blockquote",[t("p",[e._v("AppParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("App")])]),e._v(" "),t("p",[e._v("Application ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nThe parameter elements index, starting from 1. For example, if "),t("code",[e._v("type = full,light")]),e._v(", then "),t("code",[e._v("AppParam(1, type, 2)")]),e._v(" returns "),t("code",[e._v("light")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of specific parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("h4",{attrs:{id:"example-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(1, type, Source: mytype)\n")])])]),t("h3",{attrs:{id:"arraytosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#arraytosource"}},[e._v("#")]),e._v(" ArrayToSource")]),e._v(" "),t("p",[e._v("Create an arraytosource element and fill it with the key-value pairs of a JSON array. The data obtained is put into the Source element, which can be used later in the source input function (e.g. Table).")]),e._v(" "),t("h4",{attrs:{id:"syntax-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-6"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(Source, Data)\n\n")])])]),t("blockquote",[t("p",[e._v("ArrayToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("A JSON array or a variable name containing a JSON array ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"example-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(src, #myjsonarr#)\nArrayToSource(dat, [1, 2, 3])\n")])])]),t("h3",{attrs:{id:"binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#binary"}},[e._v("#")]),e._v(" Binary")]),e._v(" "),t("p",[e._v("Returns links to static files stored in the binary table binaries.")]),e._v(" "),t("h4",{attrs:{id:"syntax-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Binary(Name, AppID, MemberID)[.ById(ID)][.Ecosystem(ecosystem)]\n")])])]),t("blockquote",[t("p",[e._v("Binary")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("File name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("AppID")])]),e._v(" "),t("p",[e._v("Application ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MemberID")])]),e._v(" "),t("p",[e._v("Account address, 0 by default.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ID")])]),e._v(" "),t("p",[e._v("Static file ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ecosystem")])]),e._v(" "),t("p",[e._v("Ecosystem ID. If it is not specified, the binary file is requested from the current ecosystem.")])])]),e._v(" "),t("h4",{attrs:{id:"example-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Image(Src: Binary("my_image", 1))\nImage(Src: Binary().ById(2))\nImage(Src: Binary().ById(#id#).Ecosystem(#eco#))\n')])])]),t("h3",{attrs:{id:"button"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#button"}},[e._v("#")]),e._v(" Button")]),e._v(" "),t("p",[e._v("Create a button HTML element which will create a button to call a contract or open a page.")]),e._v(" "),t("h4",{attrs:{id:"syntax-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Button(Body, Page, Class, Contract, Params, PageParams)\n [.CompositeContract(Contract, Data)]\n [.Alert(Text, ConfirmButton, CancelButton, Icon)]\n [.Popup(Width, Header)]\n [.Style(Style)]\n [.ErrorRedirect((ErrorID,PageName,PageParams)]\n")])])]),t("blockquote",[t("p",[e._v("Button")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the page redirects to.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Button class.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Contract")])]),e._v(" "),t("p",[e._v("Name of the contract called.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("The list of values passed to the contract. Normally, the value of the contract parameter (the data section) is obtained from an HTML element (such as an input field) of id with a similar name. If the element id is different from the name of the contract parameter, then the value should be assigned in the format of contractField1=idname1, contractField2=idname2. This parameter is returned to attr as the object {contractField1: idname1, contractField2: idname2}.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("The format of parameters passed to the redirect page is pageField1=idname1, pageField2=idname2. Variables with target page parameter names #pageField1 and #pageField2 are created on the target page and assigned the specified values. See more specifications for parameter passing Use PageParams to pass parameters to pages).")])])]),e._v(" "),t("blockquote",[t("p",[e._v("CompositeContract")])]),e._v(" "),t("p",[e._v("Used to add additional contracts to the button. CompositeContract can be used multiple times.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the contract.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("The contract parameters are JSON arrays.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Alert")])]),e._v(" "),t("p",[e._v("Display the message.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Text of the message.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ConfirmButton")])]),e._v(" "),t("p",[e._v("Title of the Confirm button.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("CancelButton")])]),e._v(" "),t("p",[e._v("Title of the Cancel button.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Button icon.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("Output modal window.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Header")])]),e._v(" "),t("p",[e._v("Window title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Percentage of window width.\nIts range is 1 to 100.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("ErrorRedirect")])]),e._v(" "),t("p",[e._v("Specify and redirect to a page when the :ref:contractfundef-Throw function generates an error during contract execution. There can be several ErrorRedirect calls. Therefore, when returning the "),t("em",[e._v("errredirect")]),e._v(" attribute, the attribute key is ErrorID and the value is the parameters list.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("ErrorID")])]),e._v(" "),t("p",[e._v("Error ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageName")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Parameters passed to the page.")])])]),e._v(" "),t("h4",{attrs:{id:"example-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Button(Submit, default_page, mybtn_class).Alert(Alert message)\nButton(Contract: MyContract, Body:My Contract, Class: myclass, Params:"Name=myid,Id=i10,Value")\n')])])]),t("h3",{attrs:{id:"calculate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#calculate"}},[e._v("#")]),e._v(" Calculate")]),e._v(" "),t("p",[e._v("It returns the result of the arithmetic expression passed in the Exp parameter. The following operations are applicable: +, -, *, / and brackets ().")]),e._v(" "),t("h4",{attrs:{id:"syntax-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Calculate(Exp, Type, Prec)\n")])])]),t("blockquote",[t("p",[e._v("Calculate")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("An arithmetic expression, containing numbers and the #name# variable.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Result data type: int, float, money. If not specified, it is float if there is a number with a decimal point, otherwise it is int.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Prec")])]),e._v(" "),t("p",[e._v("float and money data, with two significant digits after the decimal point.")])])]),e._v(" "),t("h4",{attrs:{id:"example-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Calculate( Exp: (342278783438+5000)\\*(#val#-932780000), Type: money, Prec:18 )\nCalculate(10000-(34+5)\\*#val#)\nCalculate("((10+#val#-45)\\*3.0-10)/4.5 + #val#", Prec: 4)\n')])])]),t("h3",{attrs:{id:"chart"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chart"}},[e._v("#")]),e._v(" Chart")]),e._v(" "),t("p",[e._v("Create HTML charts.")]),e._v(" "),t("h4",{attrs:{id:"syntax-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Chart(Type, Source, FieldLabel, FieldValue, Colors)\n")])])]),t("blockquote",[t("p",[e._v("Chart")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Chart type.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name of the data source, e.g., obtained from the "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldLabel")])]),e._v(" "),t("p",[e._v("Name of the header field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldValue")])]),e._v(" "),t("p",[e._v("Name of the value field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Colors")])]),e._v(" "),t("p",[e._v("List of colors.")])])]),e._v(" "),t("h4",{attrs:{id:"example-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"name,count"){\n John Silver,10\n "Mark, Smith",20\n "Unknown ""Person""",30\n}\nChart(Type: "bar", Source: mysrc, FieldLabel: "name", FieldValue: "count", Colors: "red, green")\n')])])]),t("h3",{attrs:{id:"cmptime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cmptime"}},[e._v("#")]),e._v(" CmpTime")]),e._v(" "),t("p",[e._v("It compares two time values in the same format.\nIt supports unixtime, "),t("code",[e._v("YYYY-MM-DD HH:MM:SS")]),e._v(" and any time format, such as "),t("code",[e._v("YYYYMMDD")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CmpTime(Time1, Time2)\n")])])]),t("p",[e._v("Return value")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("-1")]),e._v(" - Time1 Time2.")])]),e._v(" "),t("h4",{attrs:{id:"example-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(CmpTime(#time1#, #time2#)<0){...}\n")])])]),t("h3",{attrs:{id:"code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#code"}},[e._v("#")]),e._v(" Code")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.")]),e._v(" "),t("p",[e._v("It substitute a variable with the value of the variable (for example, "),t("code",[e._v("#name#")]),e._v(").")]),e._v(" "),t("h4",{attrs:{id:"syntax-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code(Text)\n")])])]),t("blockquote",[t("p",[e._v("Code")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code( P(This is the first line.\n Span(This is the second line.))\n)\n")])])]),t("h3",{attrs:{id:"codeasis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#codeasis"}},[e._v("#")]),e._v(" CodeAsIs")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.\nIt does not replace a variable with its value. For example, "),t("code",[e._v("#name#")]),e._v(" will be displayed as is.")]),e._v(" "),t("h4",{attrs:{id:"syntax-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs(Text)\n")])])]),t("blockquote",[t("p",[e._v("CodeAsIs")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs( P(This is the #test1#.\n Span(This is the #test2#.))\n)\n")])])]),t("h3",{attrs:{id:"data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[e._v("#")]),e._v(" Data")]),e._v(" "),t("p",[e._v("Create a data element, fill it with the specified data and put it in Source. Then, you can receive Source as a data input in "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions. The sequence of column names corresponds to the sequence of data entry values.")]),e._v(" "),t("h4",{attrs:{id:"syntax-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Data(Source,Columns,Data)\n [.Custom(Column){Body}]\n")])])]),t("blockquote",[t("p",[e._v("Data")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name of the data source. You can specify any name that will be passed to other functions later as a data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Columns")])]),e._v(" "),t("p",[e._v("A list of column names, separated by commas.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("Data set.")]),e._v(" "),t("p",[e._v("One record per line. Column values must be separated by commas. Data and Columns should be set in the same order.")]),e._v(" "),t("p",[e._v("Values with commas should be enclosed in double quotes ("),t("code",[e._v('"example1, example2", 1, 2')]),e._v("). Quoted values should be put in two double quotes ("),t("code",[e._v('"""example", "example2""", 1, 2')]),e._v(").")])])]),e._v(" "),t("h3",{attrs:{id:"custom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom"}},[e._v("#")]),e._v(" Custom")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to [Table](#table) and other functions to receive data.\nUse multiple Custom functions if you want to assign multiple calculated columns.\n")])])]),t("ul",[t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")])])]),e._v(" "),t("h4",{attrs:{id:"example-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"id,name"){\n "1",John Silver\n 2,"Mark, Smith"\n 3,"Unknown ""Person"""\n }.Custom(link){Button(Body: View, Class: btn btn-link, Page: user, PageParams: "id=#id#"}\n')])])]),t("h3",{attrs:{id:"datetime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datetime"}},[e._v("#")]),e._v(" DateTime")]),e._v(" "),t("p",[e._v("Display the time and date in the specified format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(DateTime, Format)\n")])])]),t("blockquote",[t("p",[e._v("DateTime")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("DateTime")])]),e._v(" "),t("p",[e._v("Time and date expressed in unixtime or standard format "),t("code",[e._v("2006-01-02T15:04:05")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("Format template: year in 2-digit format "),t("code",[e._v("YY")]),e._v(", 4-digit format "),t("code",[e._v("YYYY")]),e._v(", month in "),t("code",[e._v("MM")]),e._v(", day in "),t("code",[e._v("DD")]),e._v(", hour in "),t("code",[e._v("HH")]),e._v(", minute in "),t("code",[e._v("MM")]),e._v(", second in "),t("code",[e._v("SS")]),e._v(", e.g.: "),t("code",[e._v("YY/MM/DD HH:MM")]),e._v(".\nIf it is not specified or missing, "),t("code",[e._v("YYYY-MM-DD HH:MI:SS")]),e._v(" will be used.")])])]),e._v(" "),t("h4",{attrs:{id:"example-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(2017-11-07T17:51:08)\nDateTime(#mytime#,HH:MI DD.MM.YYYY)\n")])])]),t("h3",{attrs:{id:"dbfind"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbfind"}},[e._v("#")]),e._v(" DBFind")]),e._v(" "),t("p",[e._v("Create a dbfind element, fill it with the data of the table table and put it in the Source structure, which can later be used for the input data of "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions Source.")]),e._v(" "),t("h4",{attrs:{id:"syntax-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBFind(table, Source)\n [.Columns(columns)]\n [.Where(conditions)]\n [.WhereId(id)]\n [.Order(name)]\n [.Limit(limit)]\n [.Offset(offset)]\n [.Count(countvar)]\n [.Ecosystem(id)]\n [.Cutoff(columns)]\n [.Custom(Column){Body}]\n [.Vars(Prefix)]\n")])])]),t("blockquote",[t("p",[e._v("DBFind")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Columns")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("columns")])]),e._v(" "),t("p",[e._v("If not specified, a list of all fields will be returned. If there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(". In this case, the field name generated is "),t("code",[e._v("columnname.fieldname")]),e._v(".")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Where")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("conditions")])])]),e._v(" "),t("p",[e._v("Data query conditions. See DBFind.\nIf there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(".")]),e._v(" "),t("blockquote",[t("p",[e._v("WhereId\nQuery by ID, e.g. "),t("code",[e._v(".WhereId(1)")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Entry ID.")]),e._v(" "),t("blockquote",[t("p",[e._v("Order\nSort by field.\nFor more information about the sorting syntax, see "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("name")])])]),e._v(" "),t("p",[e._v("Field Name")]),e._v(" "),t("blockquote",[t("p",[e._v("Limit")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("limit")])]),e._v(" "),t("p",[e._v("The number of entries returned, 25 by default. The maximum number is 10,000.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Offset")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Offset")])]),e._v(" "),t("p",[e._v("Offset.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Count")])]),e._v(" "),t("p",[e._v("Specify the total number of rows of the Where condition.\nIn addition to storing it in a variable, the total count is returned in the count parameter of the dbfind element.")]),e._v(" "),t("p",[e._v("If Where and WhereID are not specified, the total count of rows in the table will be returned.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("countvar")])]),e._v(" "),t("p",[e._v("Name of the variable that holds the row count.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Ecosystem")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Ecosystem ID. By default, the data comes from the specified table in the current ecosystem.")]),e._v(" "),t("blockquote",[t("p",[e._v("Cutoff")])]),e._v(" "),t("p",[e._v("Used to cut and display large amounts of text data.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("columns")])])]),e._v(" "),t("p",[e._v("A comma-separated list of fields that must be processed by the Cutoff function.\nThe field value will be replaced by a JSON object that has two fields: link link and title title. If the field value contains more than 32 characters, link pointing to the first 32 characters of the full text is returned. If the field value contains 32 characters or less, link is set to void and title contains the complete field value.")]),e._v(" "),t("blockquote",[t("p",[e._v("Custom")])]),e._v(" "),t("p",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions to receive data.\nIf you want to assign multiple calculated columns, use multiple Custom functions.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Column")])])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Body")])])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")]),e._v(" "),t("blockquote",[t("p",[e._v("Vars")])]),e._v(" "),t("p",[e._v("The first row obtained by the query will generate a set of variables with values. When it is specified, the Limit parameter automatically becomes 1, and only one (1) record is returned.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Prefix")])])]),e._v(" "),t("p",[e._v("The prefix added to the variable name. Its format is "),t("code",[e._v("#prefix_columnname#")]),e._v(", where the column name immediately follows the underscore symbol. If there is a column containing a JSON field, the variable generated will be in the following format: "),t("code",[e._v("#prefix_columnname_field#")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"example-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(parameters,myparam)\nDBFind(parameters,myparam).Columns(name,value).Where({name:"money"})\nDBFind(parameters,myparam).Custom(myid){Strong(#id#)}.Custom(myname){\n Strong(Em(#name#))Div(myclass, #company#)\n}\n')])])]),t("h3",{attrs:{id:"div"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#div"}},[e._v("#")]),e._v(" Div")]),e._v(" "),t("p",[e._v("Create a div HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(Class, Body)\n [.Style(Style)]\n [.Show(Condition)]\n [.Hide(Condition)]\n")])])]),t("blockquote",[t("p",[e._v("Div")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the div.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("blockquote",[t("p",[e._v("Show")])]),e._v(" "),t("p",[e._v("Define the conditions for displaying Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("See Hide below.")]),e._v(" "),t("blockquote",[t("p",[e._v("Hide")])]),e._v(" "),t("p",[e._v("Define the conditions for hiding Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("The expression format is "),t("code",[e._v("InputName=Value")]),e._v(", when all expressions are true, "),t("em",[e._v("Condition")]),e._v(" is true, and when the value of "),t("code",[e._v("InputName")]),e._v(" is equal to "),t("code",[e._v("Value")]),e._v(", "),t("em",[e._v("Condition")]),e._v(" is true. If multiple "),t("em",[e._v("Show")]),e._v(" or "),t("em",[e._v("Hide")]),e._v(" are called, there must be at least one "),t("em",[e._v("Condition")]),e._v(" parameter is true.")]),e._v(" "),t("h4",{attrs:{id:"example-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Form(){\n Div(text-left){\n Input(Name: "broadcast", Type: "checkbox", Value: "false")\n }\n Div(text-left){\n hello\n }.Show("broadcast=false")\n Div(text-left){\n world\n }.Hide("broadcast=false")\n}\n')])])]),t("h3",{attrs:{id:"ecosysparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecosysparam"}},[e._v("#")]),e._v(" EcosysParam")]),e._v(" "),t("p",[e._v("This function obtains parameter values from the ecosystem parameter table of the current ecosystem. If the returned result name contains the language resources, it will be translated accordingly.")]),e._v(" "),t("h4",{attrs:{id:"syntax-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EcosysParam(Name, Index, Source)\n")])])]),t("blockquote",[t("p",[e._v("EcosysParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("If the requested parameter is a list of comma-separated elements, you can specify an index starting from 1. For example, if "),t("code",[e._v("gender = male,female")]),e._v(", then "),t("code",[e._v("gender = male,female")]),e._v(" returns "),t("code",[e._v("female")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of the specified parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(EcosysParam(founder_account))\nEcosysParam(gender, Source: mygender)\n\nEcosysParam(Name: gender_list, Source: src_gender)\nSelect(Name: gender, Source: src_gender, NameColumn: name, ValueColumn: id)\n")])])]),t("h3",{attrs:{id:"em"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#em"}},[e._v("#")]),e._v(" Em")]),e._v(" "),t("p",[e._v("Create an em HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Em(Body, Class)\n")])])]),t("blockquote",[t("p",[e._v("Em")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("The em class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("This is an Em(important news).\n")])])]),t("h3",{attrs:{id:"forlist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#forlist"}},[e._v("#")]),e._v(" ForList")]),e._v(" "),t("p",[e._v("Display the list of elements in the Source data source in the template format set in Body and create a "),t("strong",[e._v("forlist")]),e._v(" element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(Source, Index){Body}\n")])])]),t("blockquote",[t("p",[e._v("ForList")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" or "),t("a",{attrs:{href:"#data"}},[e._v("Data")]),e._v(" function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("The variable of the iteration counter, starting from 1.\nAn optional parameter. If not specified, the iteration count value will be written to the [Source] _index variable.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Template for inserting elements.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(mysrc){Span(#mysrc_index#. #name#)}\n")])])]),t("h3",{attrs:{id:"form"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),t("p",[e._v("Create a form HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(Class, Body) [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Form")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the form.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style\nThe CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("h4",{attrs:{id:"example-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(class1 class2, Input(myid))\n")])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[e._v("#")]),e._v(" GetColumnType")]),e._v(" "),t("p",[e._v("Returns the field data type of a specific table.")]),e._v(" "),t("p",[e._v("Types returned include: "),t("code",[e._v("text, varchar, number, money, double, bytes, json, datetime, double")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetColumnType(Table, Column)\n")])])]),t("blockquote",[t("p",[e._v("GetColumnType")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Field name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("SetVar(coltype,GetColumnType(members, member_name))Div(){#coltype#}\n")])])]),t("h3",{attrs:{id:"gethistory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gethistory"}},[e._v("#")]),e._v(" GetHistory")]),e._v(" "),t("p",[e._v("Create a gethistory element and fill it with the history change records of the entries in the specified table. The data generated will be placed in the Source element, which can be used later in the source input function (for example, "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe array is sorted in order from the last modified.\nThe id field in the array points to the id of the rollback_tx table. block_id represents the block ID, block_time represents the block generation timestamp.")]),e._v(" "),t("h4",{attrs:{id:"syntax-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(Source, Name, Id, RollbackId)\n")])])]),t("blockquote",[t("p",[e._v("GetHistory")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Id")])]),e._v(" "),t("p",[e._v("Entry ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("RollbackId")])]),e._v(" "),t("p",[e._v("An optional parameter. If specified, only one record with the specified ID will be returned from the rollback_tx table.")])])]),e._v(" "),t("h4",{attrs:{id:"example-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(blocks, BlockHistory, 1)\n")])])]),t("h3",{attrs:{id:"getvar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getvar"}},[e._v("#")]),e._v(" GetVar")]),e._v(" "),t("p",[e._v("It returns the value of the specified variable that already exists, or an empty string if it does not exist.\nThe getvar element is only created when an editable tree is requested. The difference between "),t("code",[e._v("GetVar(varname)")]),e._v(" and "),t("code",[e._v("#varname")]),e._v(" is that if varname does not exist, GetVar will return an empty string, while #varname# will be interpreted as a string value.")]),e._v(" "),t("h4",{attrs:{id:"syntax-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetVar(Name)\n")])])]),t("blockquote",[t("p",[e._v("GetVar")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Variable name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(GetVar(name)){#name#}.Else{Name is unknown}\n")])])]),t("h3",{attrs:{id:"hint"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hint"}},[e._v("#")]),e._v(" Hint")]),e._v(" "),t("p",[e._v("Create a hint element for hints.")]),e._v(" "),t("h4",{attrs:{id:"syntax-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Hint(Icon,Title,Text)\n")])])]),t("blockquote",[t("p",[e._v("Hint")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Hint title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Hint text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Hint(Icon: "icon-wrench",Title:$@1pa_settings$,Text: This is a hint text)\n')])])]),t("h3",{attrs:{id:"if"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#if"}},[e._v("#")]),e._v(" If")]),e._v(" "),t("p",[e._v("Condition statement.\nReturns the first If or ElseIf child element that satisfies Condition. Otherwise, return the Else child element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Condition){ Body}\n [.ElseIf(Condition){ Body }]\n [.Else{ Body }]\n")])])]),t("blockquote",[t("p",[e._v("If")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Condition")])]),e._v(" "),t("p",[e._v("If the condition is equal to an empty string, 0 or false, it is considered that the condition is not met. In all other cases, this condition is considered to be satisfied.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("h4",{attrs:{id:"example-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(#value#){\n Span(Value)\n}.ElseIf(#value2#){Span(Value 2)\n}.ElseIf(#value3#){Span(Value 3)}.Else{\n Span(Nothing)\n}\n")])])]),t("h3",{attrs:{id:"image"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#image"}},[e._v("#")]),e._v(" Image")]),e._v(" "),t("p",[e._v("Create a image HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src, Alt, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Image")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Src")])]),e._v(" "),t("p",[e._v("Image source, file or "),t("code",[e._v("data:...")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Alt")])]),e._v(" "),t("p",[e._v("Alternative text when the image cannot be displayed.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Сlass")])]),e._v(" "),t("p",[e._v("Image class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src: Binary().ById(#id#), Class: preview).Style(height: 40px; widht 40px;)\n")])])]),t("h3",{attrs:{id:"imageinput"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#imageinput"}},[e._v("#")]),e._v(" ImageInput")]),e._v(" "),t("p",[e._v("Create an imageinput element to upload an image.")]),e._v(" "),t("h4",{attrs:{id:"syntax-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(Name, Width, Ratio, Format)\n")])])]),t("blockquote",[t("p",[e._v("ImageInput")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Width of the cropped image.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ratio")])]),e._v(" "),t("p",[e._v("Aspect ratio or image height.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("The format of the uploaded image.")])])]),e._v(" "),t("h4",{attrs:{id:"example-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(avatar, 100, 2/1)\n")])])]),t("h3",{attrs:{id:"include"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#include"}},[e._v("#")]),e._v(" Include")]),e._v(" "),t("p",[e._v("Insert the template with a specified name into the page code.")]),e._v(" "),t("h4",{attrs:{id:"syntax-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Include(Name)\n")])])]),t("blockquote",[t("p",[e._v("Include")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Template name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(myclass, Include(mywidget))\n")])])]),t("h3",{attrs:{id:"input"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#input"}},[e._v("#")]),e._v(" Input")]),e._v(" "),t("p",[e._v("Create an input HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name, Class, Placeholder, Type, Value, Disabled)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Input")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Placeholder")])]),e._v(" "),t("p",[e._v("Prompt for the expected value of the input field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("input type.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Element value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Disabled")])]),e._v(" "),t("p",[e._v("Disable the input element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name: name, Type: text, Placeholder: Enter your name)\nInput(Name: num, Type: text).Validate(minLength: 6, maxLength: 20)\n")])])]),t("h3",{attrs:{id:"inputerr"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputerr"}},[e._v("#")]),e._v(" InputErr")]),e._v(" "),t("p",[e._v("Create an inputerr element to validate the error text.")]),e._v(" "),t("h4",{attrs:{id:"syntax-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name,validation errors)]\n")])])]),t("blockquote",[t("p",[e._v("InputErr")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Corresponds to the name of the "),t("a",{attrs:{href:"#input"}},[e._v("Input")]),e._v(" element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("validation errors")])]),e._v(" "),t("p",[e._v("Validation error message for one or more parameters.")])])]),e._v(" "),t("h4",{attrs:{id:"example-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name: name,\nminLength: Value is too short,\nmaxLength: The length of the value must be less than 20 characters)\n")])])]),t("h3",{attrs:{id:"inputmap"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputmap"}},[e._v("#")]),e._v(" InputMap")]),e._v(" "),t("p",[e._v("Create an text input field for address, able to select coordinates on the map.")]),e._v(" "),t("h4",{attrs:{id:"syntax-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputMap(Name, Type, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("InputMap")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.\nThe value is an object in string format. For example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". When the InputMap is created with the predefined Value, the address field can be used to save the address value, so the it is not void.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Type of map spot mapping:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("polygon")]),e._v(" - indicates the area of a multi-spot closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Line")]),e._v(" - means a polyline with multiple points without closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Point")]),e._v(" - indicates a single point coordinate.")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('InputMap(Name: Coords,Type: polygon, MapType: hybrid, Value: `{"zoom":8, "center":{"lat":55.749942860682545,"lng":37.6207172870636}}`)\n')])])]),t("h3",{attrs:{id:"jsontosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jsontosource"}},[e._v("#")]),e._v(" JsonToSource")]),e._v(" "),t("p",[e._v("Create a jsontosource element and fill it with the key-value pairs of a JSON array. The data obtained is put into the Source element, which can be used later in the source input function (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe records in the result data are sorted alphabetically by JSON key.")]),e._v(" "),t("h4",{attrs:{id:"syntax-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("JsonToSource(Source, Data)\n")])])]),t("blockquote",[t("p",[e._v("JsonToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("A JSON object or a variable name containing a JSON object ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"example-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('JsonToSource(src, #myjson#)\nJsonToSource(dat, {"param":"value", "param2": "value 2"})\n')])])]),t("h3",{attrs:{id:"label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#label"}},[e._v("#")]),e._v(" Label")]),e._v(" "),t("p",[e._v("Create a label HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(Body, Class, For)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Label")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("For")])]),e._v(" "),t("p",[e._v("Bind to a form element.")])])]),e._v(" "),t("blockquote",[t("p",[t("code",[e._v("StyleThe")]),e._v(":CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(The first item).\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[e._v("#")]),e._v(" LangRes")]),e._v(" "),t("p",[e._v("Returns a specific language resource. If requested to edit the tree, the langres element is returned, and you may use the short format symbol $langres$.")]),e._v(" "),t("h4",{attrs:{id:"syntax-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(Name)\n")])])]),t("blockquote",[t("p",[e._v("LangRes")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the language resource.")])])]),e._v(" "),t("h4",{attrs:{id:"example-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(name)\nLangRes(myres)\n")])])]),t("h3",{attrs:{id:"linkpage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linkpage"}},[e._v("#")]),e._v(" LinkPage")]),e._v(" "),t("p",[e._v("Create a linkpage element, linking to the page.")]),e._v(" "),t("h4",{attrs:{id:"syntax-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LinkPage(Body, Page, Class, PageParams)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("LinkPage")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Button class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS styles")]),e._v(" "),t("h4",{attrs:{id:"example-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: "v_role_id=#recipient.role_id#")\n')])])]),t("h3",{attrs:{id:"map"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#map"}},[e._v("#")]),e._v(" Map")]),e._v(" "),t("p",[e._v("Create a visual map and display coordinates in any format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Map(Hmap, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("Map")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Hmap")])]),e._v(" "),t("p",[e._v("Height of an HTML element on the page.\nThe default value is 100.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Map value, an object in string format.\nFor example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". If "),t("code",[e._v("center")]),e._v(" is not specified, the map window will automatically adjust according to the specified coordinates.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Map(MapType:hybrid, Hmap:400, Value:{"coords":[{"lat":55.58774531752405,"lng":36.97260184619233},{"lat":55.58396161622043,"lng":36.973803475831005},{"lat":55.585222890513975,"lng":36.979811624024364},{"lat":55.58803635636347,"lng":36.978781655762646}],"area":146846.65783403456,"address":"Unnamed Road, Moscow, Russia, 143041"})\n')])])]),t("h3",{attrs:{id:"menugroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menugroup"}},[e._v("#")]),e._v(" MenuGroup")]),e._v(" "),t("p",[e._v("Create a nested submenu in the menu and return the menugroup element. Before replacing it with the language resource, the name parameter will return the value of Title.")]),e._v(" "),t("h4",{attrs:{id:"syntax-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(Title, Body, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child elements in a submenu.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(My Menu){\n MenuItem(Interface, sys-interface)\n MenuItem(Dahsboard, dashboard_default)\n}\n")])])]),t("h3",{attrs:{id:"menuitem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menuitem"}},[e._v("#")]),e._v(" MenuItem")]),e._v(" "),t("p",[e._v("Create a menu item and return the menuitem element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuItem(Title, Page, Params, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuItem")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('MenuItem(Title:$@1roles$, Page:@1roles_list, Icon:"icon-pie-chart")\n')])])]),t("h3",{attrs:{id:"money"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#money"}},[e._v("#")]),e._v(" Money")]),e._v(" "),t("p",[e._v("Returns the string value of exp / 10 ^ digit.")]),e._v(" "),t("h4",{attrs:{id:"syntax-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("blockquote",[t("p",[e._v("Money")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("A number in string format.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Digit")])]),e._v(" "),t("p",[e._v("The exponent of 10 in the expression "),t("code",[e._v("Exp/10^digit")]),e._v(". The value can be positive or negative, and a positive value determines the number of digits after the decimal point.")])])]),e._v(" "),t("h4",{attrs:{id:"example-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("h3",{attrs:{id:"or"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#or"}},[e._v("#")]),e._v(" Or")]),e._v(" "),t("p",[e._v("It returns the result of an if logical operation. All parameters listed in parentheses are separated by commas. If having one parameter that is value is not an empty string, zero or "),t("code",[e._v("false")]),e._v(", the parameter value is "),t("code",[e._v("true")]),e._v(", otherwise the parameter value is "),t("code",[e._v("false")]),e._v(". If the parameter value is "),t("code",[e._v("true")]),e._v(", the function returns "),t("code",[e._v("1")]),e._v(", otherwise it returns "),t("code",[e._v("0")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Or(parameters)\n")])])]),t("h4",{attrs:{id:"example-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Or(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"p"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#p"}},[e._v("#")]),e._v(" P")]),e._v(" "),t("p",[e._v("Create a p HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(Body, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("P")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(This is the first line.\n This is the second line.)\n")])])]),t("h3",{attrs:{id:"qrcode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#qrcode"}},[e._v("#")]),e._v(" QRcode")]),e._v(" "),t("p",[e._v("Returns the QR code with the specified text and create a qrcode element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(Text)\n")])])]),t("blockquote",[t("p",[e._v("QRcode")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("QR code text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(#name#)\n")])])]),t("h3",{attrs:{id:"radiogroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#radiogroup"}},[e._v("#")]),e._v(" RadioGroup")]),e._v(" "),t("p",[e._v("Create a radiogroup element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-44"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-44"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name, Source, NameColumn, ValueColumn, Value, Class)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("RadioGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the DBFind or Data function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("NameColumn")])]),e._v(" "),t("p",[e._v("Field name of the data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ValueColumn")])]),e._v(" "),t("p",[e._v("Value name of the data source.\nFields created with Custom cannot be used in this parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CCS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name: type_decision, Source: numbers_type_decisions, NameColumn: name, ValueColumn: value)\n")])])]),t("h3",{attrs:{id:"range"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range"}},[e._v("#")]),e._v(" Range")]),e._v(" "),t("p",[e._v("Create a range element, use step size Step from From to To (not including To) to fill integer elements. The data generated will be put into Source and can be used later in the function of the source input (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v("). If an invalid parameter is specified, an empty Source is returned.")]),e._v(" "),t("h4",{attrs:{id:"syntax-45"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-45"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Range(Source,From,To,Step)\n")])])]),t("blockquote",[t("p",[e._v("Range")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("From")])]),e._v(" "),t("p",[e._v("Starting value (i = From).")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("To")])]),e._v(" "),t("p",[e._v("End value (i ")]),e._v(".")]),e._v(" "),t("li",[e._v("All icon-class icons are from SimpleLineIcons: "),t("code",[e._v("icon-")]),e._v(".")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/48.dc9554ed.js b/assets/js/48.f154ba5f.js similarity index 99% rename from assets/js/48.dc9554ed.js rename to assets/js/48.f154ba5f.js index 6344fb5..80b2ba7 100644 --- a/assets/js/48.dc9554ed.js +++ b/assets/js/48.f154ba5f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{429:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/es/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/es/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/es/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/es/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/es/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/es/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/es/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/es/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/es/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/es/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/es/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{428:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/es/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/es/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/es/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/es/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/es/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/es/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/es/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/es/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/es/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/es/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/es/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/es/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/es/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/49.37da269e.js b/assets/js/49.dc83ea0d.js similarity index 97% rename from assets/js/49.37da269e.js rename to assets/js/49.dc83ea0d.js index 55da296..e375cd1 100644 --- a/assets/js/49.37da269e.js +++ b/assets/js/49.dc83ea0d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{428:function(t,e,r){"use strict";r.r(e);var o=r(51),a=Object(o.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"ibax-documentation"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#ibax-documentation"}},[t._v("#")]),t._v(" IBAX Documentation")]),t._v(" "),r("h2",{attrs:{id:"concept"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#concept"}},[t._v("#")]),t._v(" Concept")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html"}},[t._v("IBAX Overview")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/concepts/blockchain-layers.html"}},[t._v("The IBAX Network")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/concepts/consensus.html"}},[t._v("Proof-of-Authority Consensus")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/concepts/thesaurus.html"}},[t._v("Terms and Definitions")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/concepts/faq.html"}},[t._v("FAQ")])],1)]),t._v(" "),r("h2",{attrs:{id:"didacticiel"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#didacticiel"}},[t._v("#")]),t._v(" Didacticiel")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/fr/tutorials/app_tutorial.html"}},[t._v("Tutorial for application development")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),r("h2",{attrs:{id:"guider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#guider"}},[t._v("#")]),t._v(" Guider")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/fr/topics/script.html"}},[t._v("Smart Contracts")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/topics/templates2.html"}},[t._v("Template Language")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/topics/vm.html"}},[t._v("Compiler and Virtual Machine")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/topics/daemons.html"}},[t._v("Daemon")])],1)]),t._v(" "),r("h2",{attrs:{id:"reference"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[t._v("#")]),t._v(" Référence")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/fr/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/reference/platform-parameters.html"}},[t._v("Platform Parameters")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/reference/backend-config.html"}},[t._v("Server Configuration File")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/reference/desync_monitor.html"}},[t._v("Synchronized Monitoring Tool")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),r("h2",{attrs:{id:"deploiement"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#deploiement"}},[t._v("#")]),t._v(" Déploiement")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/fr/howtos/deployment.html"}},[t._v("Deployment of A IBAX Network")])],1)])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{429:function(t,e,r){"use strict";r.r(e);var o=r(51),a=Object(o.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"ibax-documentation"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#ibax-documentation"}},[t._v("#")]),t._v(" IBAX Documentation")]),t._v(" "),r("h2",{attrs:{id:"concept"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#concept"}},[t._v("#")]),t._v(" Concept")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html"}},[t._v("IBAX Overview")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/concepts/blockchain-layers.html"}},[t._v("The IBAX Network")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/concepts/consensus.html"}},[t._v("Proof-of-Authority Consensus")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/concepts/thesaurus.html"}},[t._v("Terms and Definitions")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/concepts/faq.html"}},[t._v("FAQ")])],1)]),t._v(" "),r("h2",{attrs:{id:"didacticiel"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#didacticiel"}},[t._v("#")]),t._v(" Didacticiel")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/fr/tutorials/app_tutorial.html"}},[t._v("Tutorial for application development")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),r("h2",{attrs:{id:"guider"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#guider"}},[t._v("#")]),t._v(" Guider")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/fr/topics/script.html"}},[t._v("Smart Contracts")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/topics/templates2.html"}},[t._v("Template Language")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/topics/vm.html"}},[t._v("Compiler and Virtual Machine")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/topics/daemons.html"}},[t._v("Daemon")])],1)]),t._v(" "),r("h2",{attrs:{id:"reference"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[t._v("#")]),t._v(" Référence")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/fr/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/reference/platform-parameters.html"}},[t._v("Platform Parameters")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/reference/backend-config.html"}},[t._v("Server Configuration File")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/reference/desync_monitor.html"}},[t._v("Synchronized Monitoring Tool")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/fr/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),r("h2",{attrs:{id:"deploiement"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#deploiement"}},[t._v("#")]),t._v(" Déploiement")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/fr/howtos/deployment.html"}},[t._v("Deployment of A IBAX Network")])],1)])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/50.61cbf8e3.js b/assets/js/50.f38bbdae.js similarity index 99% rename from assets/js/50.61cbf8e3.js rename to assets/js/50.f38bbdae.js index 26bce53..f12ebbd 100644 --- a/assets/js/50.61cbf8e3.js +++ b/assets/js/50.f38bbdae.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{430:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ibax-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-overview"}},[e._v("#")]),e._v(" IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-overview"}},[e._v("IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#features"}},[e._v("Features")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#architecture"}},[e._v("Architecture")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#network"}},[e._v("Network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[e._v("Honor Node")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#transactions"}},[e._v("Transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#network-protocol"}},[e._v("Network protocol")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-and-transaction-verification"}},[e._v("Block and transaction verification")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#database"}},[e._v("Database")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[e._v("ECOLIB")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ide"}},[e._v("IDE")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#applications"}},[e._v("Applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables"}},[e._v("Tables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-parameters"}},[e._v("Ecosystem Parameters")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#access-rights-control-mechanism"}},[e._v("Access rights control mechanism")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#access-rights-management"}},[e._v("Access rights management")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exclusive-rights"}},[e._v("Exclusive rights")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecosystem"}},[e._v("Virtual private ecosystem")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#requests-to-web-resources"}},[e._v("Requests to web resources")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rights-to-read-data"}},[e._v("Rights to read data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-creation"}},[e._v("CLB creation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-usage"}},[e._v("CLB usage")])])])])])])]),e._v(" "),a("h2",{attrs:{id:"features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[e._v("#")]),e._v(" Features")]),e._v(" "),a("p",[e._v("The IBAX Network (IBAX) has an integrated application development environment (IDE). It is a multi-level access control system for data, user pages and smart contracts.")]),e._v(" "),a("p",[e._v("In terms of its structure and functions, IBAX is quite different from most existing blockchain platforms:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The development and use of IBAX applications are in an autonomous software environment called "),a("strong",[e._v("ecosystem")]),e._v(". Each ecosystem has its own membership rules that are initially established by the creator;")])]),e._v(" "),a("li",[a("p",[e._v("Ecosystem activities, such as the data involved in "),a("font",{attrs:{color:"Red"}},[e._v("database table")]),e._v(" records or updates, are based on "),a("strong",[e._v("registers")]),e._v(" created with "),a("strong",[e._v("smart contracts")]),e._v(". In most other blockchain platforms, activities are based on transaction exchange between accounts;")],1)]),e._v(" "),a("li",[a("p",[e._v("The access to "),a("strong",[e._v("registers")]),e._v(" and the control of relationships between ecosystem members are managed by a set of rules called "),a("strong",[e._v("smart laws")]),e._v(".")])])]),e._v(" "),a("h2",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("h3",{attrs:{id:"network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network"}},[e._v("#")]),e._v(" Network")]),e._v(" "),a("p",[e._v("IBAX is built on a peer-to-peer (P2P) network.")]),e._v(" "),a("p",[e._v("Guardian nodes in the network store the latest version of the blockchain database, which records the latest status of IBAX's blockchain.")]),e._v(" "),a("p",[e._v("Network users can receive data by sending requests from the guardian node database via "),a("strong",[e._v("Weaver")]),e._v(" or REST API commands. After signing by users, new requests are sent to the network as transactions in binary format. Essentially, these transactions are commands to modify relevant database records. Transactions are aggregated in blocks, and such blocks are sent to the blockchains of all network nodes. Each guardian node will process the transactions in the block, thereby updating the corresponding data in the database.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor Node")]),e._v(" "),a("p",[e._v("A guardian node which is privileged to generate new blocks in the network is called a honor node. The maximum number of honor nodes is defined by "),a("RouterLink",{attrs:{to:"/fr/reference/platform-parameters.html#number-of-nodes"}},[e._v("number_of_nodes")]),e._v(" in the platform parameters table, showing that the number of honor nodes is limited.")],1),e._v(" "),a("p",[e._v("An Honor Node is one of the key components of IBAX Public Network. It executes and validates transactions, collects transaction information from other nodes, adds transactions to the queue, and verifies the correctness and validity of new blocks using the confirmation mechanism. Generally, it has two states: packaging and on-packaging.")]),e._v(" "),a("p",[e._v("An Honor Node in the packaging state delivers the highest performance. It obtains transaction requests to be executed from the transaction queue and verifies the ignature validity and correctness of transactions, e.g. transfer amount, permission for transaction operations, and accurate execution of transactions. All ransactional operations, correct or wrong (wrong transactions will be rolled back), will be written into the block. Wrong transactions will incur a punitive gas fee. Executed transactions are notified to other Honor Nodes along with the block through broadcasting.")]),e._v(" "),a("p",[e._v("An Honor Node in the non-packaging state is mainly responsible for block verification to ensure in-block transactions generated by a packaging node are executed orrectly. In case of an anomaly, it will trigger the exception handling mechanism and IBAX Network will roll back and re-verify the block.")]),e._v(" "),a("p",[e._v("In order to ensure transaction execution efficiency, Honor Nodes collect transaction information constantly.")]),e._v(" "),a("h3",{attrs:{id:"transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transactions"}},[e._v("#")]),e._v(" Transactions")]),e._v(" "),a("p",[e._v("Transactions, including data used to implement "),a("strong",[e._v("smart contracts")]),e._v(", are generated by Weaver.")]),e._v(" "),a("p",[e._v("Transactions are signed by users with a private key. The private key and Weaver's signature function can be stored in browsers, software clients, SIM cards or dedicated physical devices. In the current implementation, the private key is encrypted with the ECDSA algorithm and stored at the Weaver side. All transactions are signed with the ECDSA algorithm.")]),e._v(" "),a("p",[e._v("The structure of a transaction complies with the following format:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("ID - ID of the contract implemented;")])]),e._v(" "),a("li",[a("p",[e._v("Params - parameters sent to the contract;")])]),e._v(" "),a("li",[a("p",[e._v("KeyID - ID of the user sending the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("PublicKey - public key of the honor node;")])]),e._v(" "),a("li",[a("p",[e._v("Time - timestamp generated by the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("EcosystemID - ID of the ecosystem where the transaction is made;")])]),e._v(" "),a("li",[a("p",[e._v("ТokenEcosystem - ID of the ecosystem, 1 by default, and tokens within it are used to cover the transaction costs.")])])]),e._v(" "),a("h3",{attrs:{id:"network-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network-protocol"}},[e._v("#")]),e._v(" Network protocol")]),e._v(" "),a("p",[e._v("Transactions will be sent to honor nodes by users, where they are subject to basic verification to ensure the formats are correct and then are added to the queue. Transactions are also sent to other honor nodes on the network and added to the respective queue.")]),e._v(" "),a("p",[e._v("A honor node is privileged to generate new blocks within a specific time period which is determined by the platform parameter "),a("strong",[e._v("full_nodes")]),e._v(" and a special algorithm. Honor nodes retrieve transactions from queues and send them to the block generator. When generating a new block, transactions in such block will also be processed: each transaction is sent to a virtual machine, where the contract corresponding to the transaction parameters is implemented, thereby updating records in the database.")]),e._v(" "),a("p",[e._v("New blocks should be verified to ensure there are no errors before sending to other honor nodes on other networks.")]),e._v(" "),a("p",[e._v("A new block will be added to the block queue when received by other honor node and, after verification, to the blockchain of the honor node where it is located to process transactions in the block, and thereby updating records in the database.")]),e._v(" "),a("h3",{attrs:{id:"block-and-transaction-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-and-transaction-verification"}},[e._v("#")]),e._v(" Block and transaction verification")]),e._v(" "),a("p",[e._v("After generating or receiving a new block, it will be verified on all other honor nodes, which cover the following:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The first byte of the data received should be 0. If not, the data received will not be considered as a block;")])]),e._v(" "),a("li",[a("p",[e._v("The received block generation timestamp should be before the current timestamp;")])]),e._v(" "),a("li",[a("p",[e._v("The block generation timestamp should correspond to the time interval at which the honor node having privilege to generate new blocks;")])]),e._v(" "),a("li",[a("p",[e._v("The height of a new block should be greater than the height of the largest block on the existing blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the maximum expenses allowed for all transactions in the block;")])]),e._v(" "),a("li",[a("p",[e._v("The block must be properly signed with the secret key of the node which it is located. The signature data should contain:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The height of the block, the hash of the previous block, the timestamp of the block, the ID of the ecosystem where the block is located, and the account address of the honor node of the block;")])]),e._v(" "),a("li",[a("p",[e._v("The position of the honor node in the platform parameter full_nodes array, the Merkel Root (MrklRoot) of all transactions in the block, and the revert hash of the previous block.")])])])])]),e._v(" "),a("p",[e._v("To check the correctness of each transaction in the block with the following methods:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The hash of each transaction must be unique;")])]),e._v(" "),a("li",[a("p",[e._v("A key-signed transaction cannot exceed the limit ("),a("RouterLink",{attrs:{to:"/fr/reference/platform-parameters.html#max-tx-block-per-user"}},[e._v("max_tx_block_per_user")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the limit of the maximum transaction size ("),a("RouterLink",{attrs:{to:"/fr/reference/platform-parameters.html#max-tx-size"}},[e._v("max_tx_size")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("The transaction time can neither be greater than the block generation time nor be greater than the block generation time plus 600 seconds, and it can be no less than the block generation time minus 86400 seconds;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction must be signed properly;")])]),e._v(" "),a("li",[a("p",[e._v("The user who implements the contract must have sufficient tokens in his account to pay for the transaction cost.")])])]),e._v(" "),a("h3",{attrs:{id:"database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database"}},[e._v("#")]),e._v(" Database")]),e._v(" "),a("p",[e._v("The underlying data storage layer of IBAX Network is a "),a("code",[e._v("PGSQL")]),e._v(" database completely open to the public. Based on the permission design of the IBAX Operating System Platform, users do not need to worry about data security. With an object-oriented design philosophy, IBAX Network pre-compiles data through a relational PGSQL database and improves the data processing efficiency.")]),e._v(" "),a("p",[e._v("You may be interested in the following if you are a technical specialist, or just skip it if you are not.\n① All tables without a number prefix in their name belong to permission tables of IBAX Network Basic;\n② All tables with a number prefix in their name belong to permission tables of ecoLibs.")]),e._v(" "),a("h2",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[e._v("#")]),e._v(" ECOLIB")]),e._v(" "),a("p",[e._v("It is quite easy for users, even common users, to create an ecoLib of their own on the IBAX Network System Platform. We have integrated and developed an application where ecoLib creation takes just one click.")]),e._v(" "),a("p",[e._v("When creating an ecoLib, you can configure the ecosystem parameters and rules, and set the administrator account and charging model. Most importantly, to apply the DPoA consensus within ecoLibs better, creators can set it up by writing or importing their own contracts.")]),e._v(" "),a("p",[e._v("We support quick emission of ecoLib tokens by importing contract templates.")]),e._v(" "),a("p",[e._v("Due to the differences in consensus and management permissions, ecoLibs fall into decentralized and centralized ones. They have no specific advantage or disadvantage by type. You should choose the appropriate one against your service needs. What to do if it is OK for now but not for the future? You can change ecoLib parameters, even the consensus mechanism, token, and governance method, on the IBAX Network System Platform. You can leave it all to the self-governance mechanism maintained by the ecoLib administrator or members (depending on the ecoLib type).")]),e._v(" "),a("p",[e._v("On the IBAX Network System Platform, an ecoLib has complete data control permissions and permissions to design and access independent database tables and fields. In the data control permission design, we support triggering when a field satisfies a logical expression. This feature allows for imagination space in special services like monitoring, logic satisfaction, and triggering by time and specific conditions.")]),e._v(" "),a("p",[e._v("There may be multiple DApps in an ecoLib, and each of them can have independent parameters. An ecoLib is like a platform where you can implement anything you want.")]),e._v(" "),a("p",[e._v("In order to better support ecosystem developers, we provide the editing, management, and development tool Weaver. It will reduce the ecosystem development, maintenance, and management costs greatly.")]),e._v(" "),a("h3",{attrs:{id:"ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[e._v("#")]),e._v(" IDE")]),e._v(" "),a("p",[e._v("Weaver has a complete integrated development environment (IDE) for creating blockchain applications, which does not require software developers to have a deep understanding of the blockchain technology.")]),e._v(" "),a("p",[e._v("Weaver provides a table management tool, contract editor, page editor and other functions needed to create applications in the ecosystem, without the support of any software module.")]),e._v(" "),a("p",[e._v("The IDE mainly includes the following parts:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("list of ecosystem parameters;")])]),e._v(" "),a("li",[a("p",[e._v("contract editor;")])]),e._v(" "),a("li",[a("p",[e._v("table management tool;")])]),e._v(" "),a("li",[a("p",[e._v("page editor and visual page designer;")])]),e._v(" "),a("li",[a("p",[e._v("multi-language resources editor;")])]),e._v(" "),a("li",[a("p",[e._v("application import/export functions.")])])]),e._v(" "),a("h3",{attrs:{id:"applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#applications"}},[e._v("#")]),e._v(" Applications")]),e._v(" "),a("p",[e._v("An application is a collection of elements such as database tables, smart contracts, and user pages with access rights for configuration. The ecosystem to which the application element belongs is indicated by the prefix in the element name, such as "),a("code",[e._v("@1ElementName")]),e._v(", where the ecosystem ID is indicated by the number "),a("code",[e._v("1")]),e._v(" after the "),a("code",[e._v("@")]),e._v(" symbol. When using application elements in the current ecosystem, the prefix "),a("code",[e._v("@1")]),e._v(" can be omitted. These applications can perform useful functions or implement various services.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("In IBAX's database, each ecosystem can create an unlimited number of tables. Tables of a specific ecosystem can be identified by a prefix containing the ecosystem ID, which will not be displayed in Weaver.")]),e._v(" "),a("p",[e._v("A table is not bound in any way and belongs to a certain contract. It can be used by all applications within the scope of the table's access rights.")]),e._v(" "),a("p",[e._v("Each ecosystem can create a set of data tables for developing its applications or may, possibly, access data tables of other ecosystems by specifying the table name prefix.")]),e._v(" "),a("p",[e._v("By configuring access rights through smart laws, data are logged into tables. Smart laws are used for rights management.")]),e._v(" "),a("blockquote",[a("p",[e._v("Table table management tool")])]),e._v(" "),a("p",[e._v("You can find the table management tool in Weaver menu Table, which cover the following functions:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("View the list of tables and their entries;")])]),e._v(" "),a("li",[a("p",[e._v("Create new tables;")])]),e._v(" "),a("li",[a("p",[e._v("Add a table field and specify its data type, such as "),a("code",[e._v("Text, Date/Time, Varchar, Character, JSON, Number, Money, Double, Binary")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Manage privileges for insert, update data and change table structure.")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Table data manipulation")])]),e._v(" "),a("p",[e._v("For better database manipulation, both Needle and Logicor have the "),a("strong",[e._v("DBFind")]),e._v(" function, which is used to retrieve values and data arrays from tables.")]),e._v(" "),a("p",[e._v("The contract language "),a("strong",[e._v("DBInsert")]),e._v(" function is used to add entries to tables. The "),a("strong",[e._v("DBUpdate")]),e._v(" and "),a("strong",[e._v("DBUpdateExt")]),e._v(" functions are used to update the value of an existing entry. During updating, the corresponding data in tables will be updated, and the blockchain will add new transactions while retaining all historical transactions. Data in tables can only be modified and cannot be deleted.")]),e._v(" "),a("p",[e._v("In order to minimize the contract implementation time, the "),a("strong",[e._v("DBFind")]),e._v(" function cannot query multiple tables simultaneously, and JOIN is not supported. Therefore, we recommend not to normalize application tables, but to store all available information in entries or repeat the information available in other tables. This is not mandatory but necessary for a blockchain application. In this case, data should be stored fully, which cannot be updated even if the same data in other tables is updated, though it is updated synchronously in a relational database.")]),e._v(" "),a("h3",{attrs:{id:"ecosystem-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-parameters"}},[e._v("#")]),e._v(" Ecosystem Parameters")]),e._v(" "),a("p",[e._v("You may view and edit the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") in Weaver's menu. Ecosystem parameters can be divided into the following groups:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("General parameters: the account of the ecosystem creator (founder_account) and other information;")])]),e._v(" "),a("li",[a("p",[e._v("Access rights parameters: used to define access permissions for application elements")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("change the table structure (changing_tables);")])]),e._v(" "),a("li",[a("p",[e._v("change the contract (changing_contracts);")])]),e._v(" "),a("li",[a("p",[e._v("change the user page (changing_page);")])]),e._v(" "),a("li",[a("p",[e._v("change the menu (changing_menu);")])]),e._v(" "),a("li",[a("p",[e._v("change the multi-language resources (changing_language).")])])])]),e._v(" "),a("li",[a("p",[e._v("Technical parameters: used to define the user styles (stylesheet);")])]),e._v(" "),a("li",[a("p",[e._v("User parameters: used to define constants or lists (separated by commas) required for application operation.")])])]),e._v(" "),a("p",[e._v("You may specify the edit permission for parameters of each ecosystem.")]),e._v(" "),a("p",[e._v("You may use the EcosysParam function to retrieve the value of an ecosystem parameter by passing the ecosystem parameter title as a parameter to it.")]),e._v(" "),a("h2",{attrs:{id:"access-rights-control-mechanism"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-control-mechanism"}},[e._v("#")]),e._v(" Access rights control mechanism")]),e._v(" "),a("p",[e._v("IBAX has a multi-level access permission management system. By configuring access rights, you can create and change any application element, such as the contracts, tables, user pages, ecosystem parameters. You may also change the access rights through configuration.")]),e._v(" "),a("p",[e._v("By default, all rights in the IBAX ecosystem are managed by its creator, which is defined in the MainCondition contract of each ecosystem. But after creating smart laws, access control can be transferred to all or a group of ecosystem members.\nAccess rights control")]),e._v(" "),a("p",[e._v("The access rights are defined in contract tables ("),a("strong",[e._v("1_contracts")]),e._v(" ), data tables ("),a("strong",[e._v("1_tables")]),e._v(" ), user page tables ("),a("strong",[e._v("1_pages")]),e._v(" ), menu tables ("),a("strong",[e._v("1_menu")]),e._v(" ), and code block tables ("),a("strong",[e._v("1_blocks")]),e._v(" ). You can find the corresponding menus in Weaver.")]),e._v(" "),a("h3",{attrs:{id:"access-rights-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-management"}},[e._v("#")]),e._v(" Access rights management")]),e._v(" "),a("p",[e._v("The rules of access rights are configured by filling in the corresponding contract expressions "),a("strong",[e._v("ContractConditions(“@1MainCondition”)")]),e._v(", "),a("strong",[e._v("ContractAccess(“@1MainCondition”)")]),e._v(" or logical expressions in the permission field. If the result of the request expression passes (true ), then access is granted. Otherwise, access is denied and related operations are terminated.")]),e._v(" "),a("p",[e._v("The easy way to define rights is to enter a logical expression in the right field. For example, "),a("code",[e._v("$key_id == 8919730491904441614")]),e._v(", where "),a("strong",[e._v("$keyid")]),e._v(" represents the ID of an ecosystem member.")]),e._v(" "),a("p",[e._v("The most common and recommended way to define rights is to use the "),a("code",[e._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),e._v(" function. The contract name "),a("strong",[e._v("ContractsName")]),e._v(" is passed to the function as a parameter, and the contract result must be the result of a logical expression (true or false).")]),e._v(" "),a("p",[e._v("Another way to define rights is to use the "),a("code",[e._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),e._v(" function. The contract "),a("strong",[e._v("ContractsName")]),e._v(" qualified to implement the corresponding operation can be passed to the function as a parameter. For example, if the right field of the amount column is configured as "),a("code",[e._v('ContractAccess("@1TokenTransfer")')]),e._v(", then you can only implement the contract "),a("strong",[e._v("@1TokenTransfer")]),e._v(" if you want to change the value in the amount column. The right to access the contract itself can be managed in the conditions section, which are quite complex and may contain many other contracts.")]),e._v(" "),a("h3",{attrs:{id:"exclusive-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exclusive-rights"}},[e._v("#")]),e._v(" Exclusive rights")]),e._v(" "),a("p",[e._v("In case of emergencies or situations that are critical to the operation of an ecosystem, there are many special parameters in the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") (such as "),a("em",[e._v("changing_contracts")]),e._v(", "),a("em",[e._v("changing_pages")]),e._v(" ), etc., which defines rights to access all contracts, data tables, and pages of the current ecosystem. These rights are configured by key contracts.")]),e._v(" "),a("h2",{attrs:{id:"virtual-private-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecosystem"}},[e._v("#")]),e._v(" Virtual private ecosystem")]),e._v(" "),a("p",[e._v("In IBAX, you can create a virtual private ecosystem - "),a("strong",[e._v("Cross Ledgers Base (CLB)")]),e._v(". A CLB has the full functionality of the standard ecosystem, but operates outside the blockchain. In CLB, you can use and create contracts and template languages, tables, and use Weaver to create applications. You may call contracts on the blockchain ecosystem via API.")]),e._v(" "),a("h3",{attrs:{id:"requests-to-web-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requests-to-web-resources"}},[e._v("#")]),e._v(" Requests to web resources")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The main difference between a CLB and a standard ecosystem is that you can use contract functions ([HTTPRequest](../topics/script.md#httprequest)) and ([HTTPPostJSON](../topics/script.md#httppostjson)) to request any web resource within the contract via HTTP / HTTPS requests. Parameters passed to this function include: URLs, request methods (GET or POST), request headers and request parameters.\n")])])]),a("h3",{attrs:{id:"rights-to-read-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rights-to-read-data"}},[e._v("#")]),e._v(" Rights to read data")]),e._v(" "),a("p",[e._v("Though it is readable, data in CLB is not saved within the blockchain. You can choose to grant the read permission to database tables. You can set rights to read for individual columns, or for any row using a special contract.")]),e._v(" "),a("h3",{attrs:{id:"clb-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-creation"}},[e._v("#")]),e._v(" CLB creation")]),e._v(" "),a("p",[e._v("You may create a CLB node on the network. As predefined, the CLB node administrator is privileged to use the ecosystem list with the CLB functionality, and designate a user with ecosystem creator privileges to install applications, receive new members and configure the resources access permissions.")]),e._v(" "),a("h3",{attrs:{id:"clb-usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-usage"}},[e._v("#")]),e._v(" CLB usage")]),e._v(" "),a("p",[e._v("You may use a CLB to create registration forms, send verification information to users via email or phone, and store publicly accessible data. You can write and test applications, and then import them into the blockchain ecosystem. In a CLB, you may use scheduling contract tasks, create oracle machines to receive data from web resources and send such data to the blockchain ecosystem.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{431:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ibax-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-overview"}},[e._v("#")]),e._v(" IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-overview"}},[e._v("IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#features"}},[e._v("Features")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#architecture"}},[e._v("Architecture")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#network"}},[e._v("Network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[e._v("Honor Node")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#transactions"}},[e._v("Transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#network-protocol"}},[e._v("Network protocol")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-and-transaction-verification"}},[e._v("Block and transaction verification")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#database"}},[e._v("Database")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[e._v("ECOLIB")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ide"}},[e._v("IDE")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#applications"}},[e._v("Applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables"}},[e._v("Tables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-parameters"}},[e._v("Ecosystem Parameters")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#access-rights-control-mechanism"}},[e._v("Access rights control mechanism")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#access-rights-management"}},[e._v("Access rights management")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exclusive-rights"}},[e._v("Exclusive rights")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecosystem"}},[e._v("Virtual private ecosystem")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#requests-to-web-resources"}},[e._v("Requests to web resources")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rights-to-read-data"}},[e._v("Rights to read data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-creation"}},[e._v("CLB creation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-usage"}},[e._v("CLB usage")])])])])])])]),e._v(" "),a("h2",{attrs:{id:"features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[e._v("#")]),e._v(" Features")]),e._v(" "),a("p",[e._v("The IBAX Network (IBAX) has an integrated application development environment (IDE). It is a multi-level access control system for data, user pages and smart contracts.")]),e._v(" "),a("p",[e._v("In terms of its structure and functions, IBAX is quite different from most existing blockchain platforms:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The development and use of IBAX applications are in an autonomous software environment called "),a("strong",[e._v("ecosystem")]),e._v(". Each ecosystem has its own membership rules that are initially established by the creator;")])]),e._v(" "),a("li",[a("p",[e._v("Ecosystem activities, such as the data involved in "),a("font",{attrs:{color:"Red"}},[e._v("database table")]),e._v(" records or updates, are based on "),a("strong",[e._v("registers")]),e._v(" created with "),a("strong",[e._v("smart contracts")]),e._v(". In most other blockchain platforms, activities are based on transaction exchange between accounts;")],1)]),e._v(" "),a("li",[a("p",[e._v("The access to "),a("strong",[e._v("registers")]),e._v(" and the control of relationships between ecosystem members are managed by a set of rules called "),a("strong",[e._v("smart laws")]),e._v(".")])])]),e._v(" "),a("h2",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("h3",{attrs:{id:"network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network"}},[e._v("#")]),e._v(" Network")]),e._v(" "),a("p",[e._v("IBAX is built on a peer-to-peer (P2P) network.")]),e._v(" "),a("p",[e._v("Guardian nodes in the network store the latest version of the blockchain database, which records the latest status of IBAX's blockchain.")]),e._v(" "),a("p",[e._v("Network users can receive data by sending requests from the guardian node database via "),a("strong",[e._v("Weaver")]),e._v(" or REST API commands. After signing by users, new requests are sent to the network as transactions in binary format. Essentially, these transactions are commands to modify relevant database records. Transactions are aggregated in blocks, and such blocks are sent to the blockchains of all network nodes. Each guardian node will process the transactions in the block, thereby updating the corresponding data in the database.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor Node")]),e._v(" "),a("p",[e._v("A guardian node which is privileged to generate new blocks in the network is called a honor node. The maximum number of honor nodes is defined by "),a("RouterLink",{attrs:{to:"/fr/reference/platform-parameters.html#number-of-nodes"}},[e._v("number_of_nodes")]),e._v(" in the platform parameters table, showing that the number of honor nodes is limited.")],1),e._v(" "),a("p",[e._v("An Honor Node is one of the key components of IBAX Public Network. It executes and validates transactions, collects transaction information from other nodes, adds transactions to the queue, and verifies the correctness and validity of new blocks using the confirmation mechanism. Generally, it has two states: packaging and on-packaging.")]),e._v(" "),a("p",[e._v("An Honor Node in the packaging state delivers the highest performance. It obtains transaction requests to be executed from the transaction queue and verifies the ignature validity and correctness of transactions, e.g. transfer amount, permission for transaction operations, and accurate execution of transactions. All ransactional operations, correct or wrong (wrong transactions will be rolled back), will be written into the block. Wrong transactions will incur a punitive gas fee. Executed transactions are notified to other Honor Nodes along with the block through broadcasting.")]),e._v(" "),a("p",[e._v("An Honor Node in the non-packaging state is mainly responsible for block verification to ensure in-block transactions generated by a packaging node are executed orrectly. In case of an anomaly, it will trigger the exception handling mechanism and IBAX Network will roll back and re-verify the block.")]),e._v(" "),a("p",[e._v("In order to ensure transaction execution efficiency, Honor Nodes collect transaction information constantly.")]),e._v(" "),a("h3",{attrs:{id:"transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transactions"}},[e._v("#")]),e._v(" Transactions")]),e._v(" "),a("p",[e._v("Transactions, including data used to implement "),a("strong",[e._v("smart contracts")]),e._v(", are generated by Weaver.")]),e._v(" "),a("p",[e._v("Transactions are signed by users with a private key. The private key and Weaver's signature function can be stored in browsers, software clients, SIM cards or dedicated physical devices. In the current implementation, the private key is encrypted with the ECDSA algorithm and stored at the Weaver side. All transactions are signed with the ECDSA algorithm.")]),e._v(" "),a("p",[e._v("The structure of a transaction complies with the following format:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("ID - ID of the contract implemented;")])]),e._v(" "),a("li",[a("p",[e._v("Params - parameters sent to the contract;")])]),e._v(" "),a("li",[a("p",[e._v("KeyID - ID of the user sending the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("PublicKey - public key of the honor node;")])]),e._v(" "),a("li",[a("p",[e._v("Time - timestamp generated by the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("EcosystemID - ID of the ecosystem where the transaction is made;")])]),e._v(" "),a("li",[a("p",[e._v("ТokenEcosystem - ID of the ecosystem, 1 by default, and tokens within it are used to cover the transaction costs.")])])]),e._v(" "),a("h3",{attrs:{id:"network-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network-protocol"}},[e._v("#")]),e._v(" Network protocol")]),e._v(" "),a("p",[e._v("Transactions will be sent to honor nodes by users, where they are subject to basic verification to ensure the formats are correct and then are added to the queue. Transactions are also sent to other honor nodes on the network and added to the respective queue.")]),e._v(" "),a("p",[e._v("A honor node is privileged to generate new blocks within a specific time period which is determined by the platform parameter "),a("strong",[e._v("full_nodes")]),e._v(" and a special algorithm. Honor nodes retrieve transactions from queues and send them to the block generator. When generating a new block, transactions in such block will also be processed: each transaction is sent to a virtual machine, where the contract corresponding to the transaction parameters is implemented, thereby updating records in the database.")]),e._v(" "),a("p",[e._v("New blocks should be verified to ensure there are no errors before sending to other honor nodes on other networks.")]),e._v(" "),a("p",[e._v("A new block will be added to the block queue when received by other honor node and, after verification, to the blockchain of the honor node where it is located to process transactions in the block, and thereby updating records in the database.")]),e._v(" "),a("h3",{attrs:{id:"block-and-transaction-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-and-transaction-verification"}},[e._v("#")]),e._v(" Block and transaction verification")]),e._v(" "),a("p",[e._v("After generating or receiving a new block, it will be verified on all other honor nodes, which cover the following:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The first byte of the data received should be 0. If not, the data received will not be considered as a block;")])]),e._v(" "),a("li",[a("p",[e._v("The received block generation timestamp should be before the current timestamp;")])]),e._v(" "),a("li",[a("p",[e._v("The block generation timestamp should correspond to the time interval at which the honor node having privilege to generate new blocks;")])]),e._v(" "),a("li",[a("p",[e._v("The height of a new block should be greater than the height of the largest block on the existing blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the maximum expenses allowed for all transactions in the block;")])]),e._v(" "),a("li",[a("p",[e._v("The block must be properly signed with the secret key of the node which it is located. The signature data should contain:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The height of the block, the hash of the previous block, the timestamp of the block, the ID of the ecosystem where the block is located, and the account address of the honor node of the block;")])]),e._v(" "),a("li",[a("p",[e._v("The position of the honor node in the platform parameter full_nodes array, the Merkel Root (MrklRoot) of all transactions in the block, and the revert hash of the previous block.")])])])])]),e._v(" "),a("p",[e._v("To check the correctness of each transaction in the block with the following methods:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The hash of each transaction must be unique;")])]),e._v(" "),a("li",[a("p",[e._v("A key-signed transaction cannot exceed the limit ("),a("RouterLink",{attrs:{to:"/fr/reference/platform-parameters.html#max-tx-block-per-user"}},[e._v("max_tx_block_per_user")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the limit of the maximum transaction size ("),a("RouterLink",{attrs:{to:"/fr/reference/platform-parameters.html#max-tx-size"}},[e._v("max_tx_size")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("The transaction time can neither be greater than the block generation time nor be greater than the block generation time plus 600 seconds, and it can be no less than the block generation time minus 86400 seconds;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction must be signed properly;")])]),e._v(" "),a("li",[a("p",[e._v("The user who implements the contract must have sufficient tokens in his account to pay for the transaction cost.")])])]),e._v(" "),a("h3",{attrs:{id:"database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database"}},[e._v("#")]),e._v(" Database")]),e._v(" "),a("p",[e._v("The underlying data storage layer of IBAX Network is a "),a("code",[e._v("PGSQL")]),e._v(" database completely open to the public. Based on the permission design of the IBAX Operating System Platform, users do not need to worry about data security. With an object-oriented design philosophy, IBAX Network pre-compiles data through a relational PGSQL database and improves the data processing efficiency.")]),e._v(" "),a("p",[e._v("You may be interested in the following if you are a technical specialist, or just skip it if you are not.\n① All tables without a number prefix in their name belong to permission tables of IBAX Network Basic;\n② All tables with a number prefix in their name belong to permission tables of ecoLibs.")]),e._v(" "),a("h2",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[e._v("#")]),e._v(" ECOLIB")]),e._v(" "),a("p",[e._v("It is quite easy for users, even common users, to create an ecoLib of their own on the IBAX Network System Platform. We have integrated and developed an application where ecoLib creation takes just one click.")]),e._v(" "),a("p",[e._v("When creating an ecoLib, you can configure the ecosystem parameters and rules, and set the administrator account and charging model. Most importantly, to apply the DPoA consensus within ecoLibs better, creators can set it up by writing or importing their own contracts.")]),e._v(" "),a("p",[e._v("We support quick emission of ecoLib tokens by importing contract templates.")]),e._v(" "),a("p",[e._v("Due to the differences in consensus and management permissions, ecoLibs fall into decentralized and centralized ones. They have no specific advantage or disadvantage by type. You should choose the appropriate one against your service needs. What to do if it is OK for now but not for the future? You can change ecoLib parameters, even the consensus mechanism, token, and governance method, on the IBAX Network System Platform. You can leave it all to the self-governance mechanism maintained by the ecoLib administrator or members (depending on the ecoLib type).")]),e._v(" "),a("p",[e._v("On the IBAX Network System Platform, an ecoLib has complete data control permissions and permissions to design and access independent database tables and fields. In the data control permission design, we support triggering when a field satisfies a logical expression. This feature allows for imagination space in special services like monitoring, logic satisfaction, and triggering by time and specific conditions.")]),e._v(" "),a("p",[e._v("There may be multiple DApps in an ecoLib, and each of them can have independent parameters. An ecoLib is like a platform where you can implement anything you want.")]),e._v(" "),a("p",[e._v("In order to better support ecosystem developers, we provide the editing, management, and development tool Weaver. It will reduce the ecosystem development, maintenance, and management costs greatly.")]),e._v(" "),a("h3",{attrs:{id:"ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[e._v("#")]),e._v(" IDE")]),e._v(" "),a("p",[e._v("Weaver has a complete integrated development environment (IDE) for creating blockchain applications, which does not require software developers to have a deep understanding of the blockchain technology.")]),e._v(" "),a("p",[e._v("Weaver provides a table management tool, contract editor, page editor and other functions needed to create applications in the ecosystem, without the support of any software module.")]),e._v(" "),a("p",[e._v("The IDE mainly includes the following parts:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("list of ecosystem parameters;")])]),e._v(" "),a("li",[a("p",[e._v("contract editor;")])]),e._v(" "),a("li",[a("p",[e._v("table management tool;")])]),e._v(" "),a("li",[a("p",[e._v("page editor and visual page designer;")])]),e._v(" "),a("li",[a("p",[e._v("multi-language resources editor;")])]),e._v(" "),a("li",[a("p",[e._v("application import/export functions.")])])]),e._v(" "),a("h3",{attrs:{id:"applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#applications"}},[e._v("#")]),e._v(" Applications")]),e._v(" "),a("p",[e._v("An application is a collection of elements such as database tables, smart contracts, and user pages with access rights for configuration. The ecosystem to which the application element belongs is indicated by the prefix in the element name, such as "),a("code",[e._v("@1ElementName")]),e._v(", where the ecosystem ID is indicated by the number "),a("code",[e._v("1")]),e._v(" after the "),a("code",[e._v("@")]),e._v(" symbol. When using application elements in the current ecosystem, the prefix "),a("code",[e._v("@1")]),e._v(" can be omitted. These applications can perform useful functions or implement various services.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("In IBAX's database, each ecosystem can create an unlimited number of tables. Tables of a specific ecosystem can be identified by a prefix containing the ecosystem ID, which will not be displayed in Weaver.")]),e._v(" "),a("p",[e._v("A table is not bound in any way and belongs to a certain contract. It can be used by all applications within the scope of the table's access rights.")]),e._v(" "),a("p",[e._v("Each ecosystem can create a set of data tables for developing its applications or may, possibly, access data tables of other ecosystems by specifying the table name prefix.")]),e._v(" "),a("p",[e._v("By configuring access rights through smart laws, data are logged into tables. Smart laws are used for rights management.")]),e._v(" "),a("blockquote",[a("p",[e._v("Table table management tool")])]),e._v(" "),a("p",[e._v("You can find the table management tool in Weaver menu Table, which cover the following functions:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("View the list of tables and their entries;")])]),e._v(" "),a("li",[a("p",[e._v("Create new tables;")])]),e._v(" "),a("li",[a("p",[e._v("Add a table field and specify its data type, such as "),a("code",[e._v("Text, Date/Time, Varchar, Character, JSON, Number, Money, Double, Binary")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Manage privileges for insert, update data and change table structure.")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Table data manipulation")])]),e._v(" "),a("p",[e._v("For better database manipulation, both Needle and Logicor have the "),a("strong",[e._v("DBFind")]),e._v(" function, which is used to retrieve values and data arrays from tables.")]),e._v(" "),a("p",[e._v("The contract language "),a("strong",[e._v("DBInsert")]),e._v(" function is used to add entries to tables. The "),a("strong",[e._v("DBUpdate")]),e._v(" and "),a("strong",[e._v("DBUpdateExt")]),e._v(" functions are used to update the value of an existing entry. During updating, the corresponding data in tables will be updated, and the blockchain will add new transactions while retaining all historical transactions. Data in tables can only be modified and cannot be deleted.")]),e._v(" "),a("p",[e._v("In order to minimize the contract implementation time, the "),a("strong",[e._v("DBFind")]),e._v(" function cannot query multiple tables simultaneously, and JOIN is not supported. Therefore, we recommend not to normalize application tables, but to store all available information in entries or repeat the information available in other tables. This is not mandatory but necessary for a blockchain application. In this case, data should be stored fully, which cannot be updated even if the same data in other tables is updated, though it is updated synchronously in a relational database.")]),e._v(" "),a("h3",{attrs:{id:"ecosystem-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-parameters"}},[e._v("#")]),e._v(" Ecosystem Parameters")]),e._v(" "),a("p",[e._v("You may view and edit the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") in Weaver's menu. Ecosystem parameters can be divided into the following groups:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("General parameters: the account of the ecosystem creator (founder_account) and other information;")])]),e._v(" "),a("li",[a("p",[e._v("Access rights parameters: used to define access permissions for application elements")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("change the table structure (changing_tables);")])]),e._v(" "),a("li",[a("p",[e._v("change the contract (changing_contracts);")])]),e._v(" "),a("li",[a("p",[e._v("change the user page (changing_page);")])]),e._v(" "),a("li",[a("p",[e._v("change the menu (changing_menu);")])]),e._v(" "),a("li",[a("p",[e._v("change the multi-language resources (changing_language).")])])])]),e._v(" "),a("li",[a("p",[e._v("Technical parameters: used to define the user styles (stylesheet);")])]),e._v(" "),a("li",[a("p",[e._v("User parameters: used to define constants or lists (separated by commas) required for application operation.")])])]),e._v(" "),a("p",[e._v("You may specify the edit permission for parameters of each ecosystem.")]),e._v(" "),a("p",[e._v("You may use the EcosysParam function to retrieve the value of an ecosystem parameter by passing the ecosystem parameter title as a parameter to it.")]),e._v(" "),a("h2",{attrs:{id:"access-rights-control-mechanism"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-control-mechanism"}},[e._v("#")]),e._v(" Access rights control mechanism")]),e._v(" "),a("p",[e._v("IBAX has a multi-level access permission management system. By configuring access rights, you can create and change any application element, such as the contracts, tables, user pages, ecosystem parameters. You may also change the access rights through configuration.")]),e._v(" "),a("p",[e._v("By default, all rights in the IBAX ecosystem are managed by its creator, which is defined in the MainCondition contract of each ecosystem. But after creating smart laws, access control can be transferred to all or a group of ecosystem members.\nAccess rights control")]),e._v(" "),a("p",[e._v("The access rights are defined in contract tables ("),a("strong",[e._v("1_contracts")]),e._v(" ), data tables ("),a("strong",[e._v("1_tables")]),e._v(" ), user page tables ("),a("strong",[e._v("1_pages")]),e._v(" ), menu tables ("),a("strong",[e._v("1_menu")]),e._v(" ), and code block tables ("),a("strong",[e._v("1_blocks")]),e._v(" ). You can find the corresponding menus in Weaver.")]),e._v(" "),a("h3",{attrs:{id:"access-rights-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-management"}},[e._v("#")]),e._v(" Access rights management")]),e._v(" "),a("p",[e._v("The rules of access rights are configured by filling in the corresponding contract expressions "),a("strong",[e._v("ContractConditions(“@1MainCondition”)")]),e._v(", "),a("strong",[e._v("ContractAccess(“@1MainCondition”)")]),e._v(" or logical expressions in the permission field. If the result of the request expression passes (true ), then access is granted. Otherwise, access is denied and related operations are terminated.")]),e._v(" "),a("p",[e._v("The easy way to define rights is to enter a logical expression in the right field. For example, "),a("code",[e._v("$key_id == 8919730491904441614")]),e._v(", where "),a("strong",[e._v("$keyid")]),e._v(" represents the ID of an ecosystem member.")]),e._v(" "),a("p",[e._v("The most common and recommended way to define rights is to use the "),a("code",[e._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),e._v(" function. The contract name "),a("strong",[e._v("ContractsName")]),e._v(" is passed to the function as a parameter, and the contract result must be the result of a logical expression (true or false).")]),e._v(" "),a("p",[e._v("Another way to define rights is to use the "),a("code",[e._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),e._v(" function. The contract "),a("strong",[e._v("ContractsName")]),e._v(" qualified to implement the corresponding operation can be passed to the function as a parameter. For example, if the right field of the amount column is configured as "),a("code",[e._v('ContractAccess("@1TokenTransfer")')]),e._v(", then you can only implement the contract "),a("strong",[e._v("@1TokenTransfer")]),e._v(" if you want to change the value in the amount column. The right to access the contract itself can be managed in the conditions section, which are quite complex and may contain many other contracts.")]),e._v(" "),a("h3",{attrs:{id:"exclusive-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exclusive-rights"}},[e._v("#")]),e._v(" Exclusive rights")]),e._v(" "),a("p",[e._v("In case of emergencies or situations that are critical to the operation of an ecosystem, there are many special parameters in the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") (such as "),a("em",[e._v("changing_contracts")]),e._v(", "),a("em",[e._v("changing_pages")]),e._v(" ), etc., which defines rights to access all contracts, data tables, and pages of the current ecosystem. These rights are configured by key contracts.")]),e._v(" "),a("h2",{attrs:{id:"virtual-private-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecosystem"}},[e._v("#")]),e._v(" Virtual private ecosystem")]),e._v(" "),a("p",[e._v("In IBAX, you can create a virtual private ecosystem - "),a("strong",[e._v("Cross Ledgers Base (CLB)")]),e._v(". A CLB has the full functionality of the standard ecosystem, but operates outside the blockchain. In CLB, you can use and create contracts and template languages, tables, and use Weaver to create applications. You may call contracts on the blockchain ecosystem via API.")]),e._v(" "),a("h3",{attrs:{id:"requests-to-web-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requests-to-web-resources"}},[e._v("#")]),e._v(" Requests to web resources")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The main difference between a CLB and a standard ecosystem is that you can use contract functions ([HTTPRequest](../topics/script.md#httprequest)) and ([HTTPPostJSON](../topics/script.md#httppostjson)) to request any web resource within the contract via HTTP / HTTPS requests. Parameters passed to this function include: URLs, request methods (GET or POST), request headers and request parameters.\n")])])]),a("h3",{attrs:{id:"rights-to-read-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rights-to-read-data"}},[e._v("#")]),e._v(" Rights to read data")]),e._v(" "),a("p",[e._v("Though it is readable, data in CLB is not saved within the blockchain. You can choose to grant the read permission to database tables. You can set rights to read for individual columns, or for any row using a special contract.")]),e._v(" "),a("h3",{attrs:{id:"clb-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-creation"}},[e._v("#")]),e._v(" CLB creation")]),e._v(" "),a("p",[e._v("You may create a CLB node on the network. As predefined, the CLB node administrator is privileged to use the ecosystem list with the CLB functionality, and designate a user with ecosystem creator privileges to install applications, receive new members and configure the resources access permissions.")]),e._v(" "),a("h3",{attrs:{id:"clb-usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-usage"}},[e._v("#")]),e._v(" CLB usage")]),e._v(" "),a("p",[e._v("You may use a CLB to create registration forms, send verification information to users via email or phone, and store publicly accessible data. You can write and test applications, and then import them into the blockchain ecosystem. In a CLB, you may use scheduling contract tasks, create oracle machines to receive data from web resources and send such data to the blockchain ecosystem.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/51.b4b41ad6.js b/assets/js/51.229db107.js similarity index 99% rename from assets/js/51.b4b41ad6.js rename to assets/js/51.229db107.js index 85a36c9..2a4d47b 100644 --- a/assets/js/51.b4b41ad6.js +++ b/assets/js/51.229db107.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{431:function(e,t,a){"use strict";a.r(t);var i=a(51),o=Object(i.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"the-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[e._v("#")]),e._v(" The IBAX Network")]),e._v(" "),a("p",[e._v("In this section, we will brief you how to use IBAX.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-ibax-network"}},[e._v("The IBAX Network")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#application-developers"}},[e._v("Application developers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[e._v("ECOLIB members")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("ECOLIB applications and platform applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#underlying-model"}},[e._v("Underlying model")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#implementation"}},[e._v("Implementation")])])])])]),e._v(" "),a("p",[e._v("If you are interested in the development, use or management of applications in IBAX, then you may not need to understand it at all.")]),e._v(" "),a("p",[e._v("In IBAX, the blockchain and the blockchain network are hidden from ECOLIB members, administrators, and application developers. IBAX offers "),a("RouterLink",{attrs:{to:"/fr/reference/api2.html"}},[e._v("RESTful API")]),e._v(" for all user groups, which provide a tamper-proof and distributed access to the "),a("strong",[e._v("global state")]),e._v(" of the blockchain.")],1),e._v(" "),a("h2",{attrs:{id:"application-developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-developers"}},[e._v("#")]),e._v(" Application developers")]),e._v(" "),a("p",[e._v("In technical terms, the "),a("strong",[e._v("global state")]),e._v(" is a set of data, which is implemented via IBAX's database. From the perspective of application developers, an application interacts with the database by querying, inserting and updating tables.")]),e._v(" "),a("p",[e._v("In IBAX, transactions are written into the blockchain by implementing various contracts. These transactions will call contract codes implemented by blockchain network nodes, which will update the global state (database) accordingly.")]),e._v(" "),a("p",[e._v("For application developers, a contract is a function that data will be written to the database when it is implemented. Pages are like scripts and the page code is a set of page "),a("RouterLink",{attrs:{to:"/fr/topics/templates2.html"}},[e._v("template")]),e._v(" functions, some of these functions display page elements, while other data comes from the database. Application developers do not need to understand what are transactions, block generation and consensus algorithms, just use it.")],1),e._v(" "),a("h2",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[e._v("#")]),e._v(" ECOLIB members")]),e._v(" "),a("p",[e._v("Applications written by developers run in an environment called "),a("RouterLink",{attrs:{to:"/fr/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(". An application usually serves a specific purpose and complete various tasks together with several other applications.")],1),e._v(" "),a("p",[e._v("A user must become a member of an ECOLIB if wants to access applications in it, and it can be a member of multiple different ECOLIBs at the same time.")]),e._v(" "),a("p",[e._v("ECOLIB members can view and modify the database from application pages, just like filling out forms, clicking buttons and navigating pages in a common web application.")]),e._v(" "),a("h2",{attrs:{id:"ecolib-applications-and-platform-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("#")]),e._v(" ECOLIB applications and platform applications")]),e._v(" "),a("p",[e._v("Applications may fall into "),a("strong",[e._v("ECOLIB applications")]),e._v(" and "),a("strong",[e._v("platform applications")]),e._v(".")]),e._v(" "),a("p",[e._v("ECOLIB applications")]),e._v(" "),a("p",[e._v("An ECOLIB application implements certain unique functions or business processes of an ECOLIB, but it is only available in that ECOLIB.\nPlatform applications")]),e._v(" "),a("p",[e._v("A platform application is applicable to all ECOLIBs. Any application could be developed as a platform application. IBAX developers would provide platform applications that support the core functions for ECOLIB governance, such as voting, notification, and ECOLIB member role management.")]),e._v(" "),a("h2",{attrs:{id:"underlying-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#underlying-model"}},[e._v("#")]),e._v(" Underlying model")]),e._v(" "),a("p",[e._v("Definition of layers")]),e._v(" "),a("p",[e._v("IBAX consists of several layers:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("User interaction layer")]),e._v(" "),a("p",[e._v("ECOLIB members interact with the application through pages and page elements.")])]),e._v(" "),a("li",[a("p",[e._v("Application layer")]),e._v(" "),a("p",[e._v("Application developers interact with the global state (data tables) through contract codes and page codes.")])]),e._v(" "),a("li",[a("p",[e._v("Global state layer")]),e._v(" "),a("p",[e._v("Update and synchronize the global state (database) based on operations written to the distributed ledger (blockchain)")])]),e._v(" "),a("li",[a("p",[e._v("Blockchain layer")]),e._v(" "),a("p",[e._v("Update the distributed ledger with new blocks. Operations (transactions) saved in new blocks must be performed on the global state.")])]),e._v(" "),a("li",[a("p",[e._v("Node network layer")]),e._v(" "),a("p",[e._v("It implemented the IBAX Network protocol, which distributes, verifies transactions and generates new blocks on the node network. Similarly, new blocks are distributed and verified by the node network.")]),e._v(" "),a("p",[e._v("The distributed ledger of all nodes is kept in sync. If having conflicts in a node, the node will identify which blockchains are considered valid and invalid blockchains will be rolled back accordingly.")])]),e._v(" "),a("li",[a("p",[e._v("Transaction layer")]),e._v(" "),a("p",[e._v("Transactions are the basis for generating blocks and blockchain protocols, and transactions themselves are the results of operations performed at the user interaction layer. Transactions are generated by Weaver.")]),e._v(" "),a("p",[e._v("When a user or developer performs an operation such as clicking a button on a page or implement a contract from the code editor, Weaver will convert this operation into a transaction and send it to the network node connected to it.")])])]),e._v(" "),a("p",[e._v("Therefore, the flow of transactions is as follows:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("A user operation in a user page will become a transaction;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction is contained in a block;")])]),e._v(" "),a("li",[a("p",[e._v("The block is included in the blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("The change of operation will cause the global state of the blockchain to change, and such operation will be applied to the database;")])]),e._v(" "),a("li",[a("p",[e._v("Any database change will be reflected in the application.")])])]),e._v(" "),a("h2",{attrs:{id:"implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),a("p",[e._v("IBAX has two major components, i.e. server "),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),a("OutboundLink")],1),e._v(" and Weaver "),a("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source code"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Weaver:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Providing the user pages;")])]),e._v(" "),a("li",[a("p",[e._v("Providing the IDE for application development;")])]),e._v(" "),a("li",[a("p",[e._v("Storing public keys of user accounts and perform authorization;")])]),e._v(" "),a("li",[a("p",[e._v("Requesting database data from application pages and display application pages to users;")])]),e._v(" "),a("li",[a("p",[e._v("Sending transactions to the server through "),a("RouterLink",{attrs:{to:"/fr/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),a("p",[e._v("In order to automatically create transactions against user operations, Weaver will convert such operations into transactions when application developers implement a contract from the IDE.")])])]),e._v(" "),a("p",[e._v("Server:")]),e._v(" "),a("ul",[a("li",[e._v("Keeping the global state (database) of the node;")]),e._v(" "),a("li",[e._v("Implementation of the blockchain protocol;")]),e._v(" "),a("li",[e._v("Implementation of contract codes in the IBAX "),a("RouterLink",{attrs:{to:"/fr/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of page codes in the "),a("RouterLink",{attrs:{to:"/fr/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of "),a("RouterLink",{attrs:{to:"/fr/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{430:function(e,t,a){"use strict";a.r(t);var i=a(51),o=Object(i.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"the-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[e._v("#")]),e._v(" The IBAX Network")]),e._v(" "),a("p",[e._v("In this section, we will brief you how to use IBAX.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-ibax-network"}},[e._v("The IBAX Network")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#application-developers"}},[e._v("Application developers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[e._v("ECOLIB members")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("ECOLIB applications and platform applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#underlying-model"}},[e._v("Underlying model")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#implementation"}},[e._v("Implementation")])])])])]),e._v(" "),a("p",[e._v("If you are interested in the development, use or management of applications in IBAX, then you may not need to understand it at all.")]),e._v(" "),a("p",[e._v("In IBAX, the blockchain and the blockchain network are hidden from ECOLIB members, administrators, and application developers. IBAX offers "),a("RouterLink",{attrs:{to:"/fr/reference/api2.html"}},[e._v("RESTful API")]),e._v(" for all user groups, which provide a tamper-proof and distributed access to the "),a("strong",[e._v("global state")]),e._v(" of the blockchain.")],1),e._v(" "),a("h2",{attrs:{id:"application-developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-developers"}},[e._v("#")]),e._v(" Application developers")]),e._v(" "),a("p",[e._v("In technical terms, the "),a("strong",[e._v("global state")]),e._v(" is a set of data, which is implemented via IBAX's database. From the perspective of application developers, an application interacts with the database by querying, inserting and updating tables.")]),e._v(" "),a("p",[e._v("In IBAX, transactions are written into the blockchain by implementing various contracts. These transactions will call contract codes implemented by blockchain network nodes, which will update the global state (database) accordingly.")]),e._v(" "),a("p",[e._v("For application developers, a contract is a function that data will be written to the database when it is implemented. Pages are like scripts and the page code is a set of page "),a("RouterLink",{attrs:{to:"/fr/topics/templates2.html"}},[e._v("template")]),e._v(" functions, some of these functions display page elements, while other data comes from the database. Application developers do not need to understand what are transactions, block generation and consensus algorithms, just use it.")],1),e._v(" "),a("h2",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[e._v("#")]),e._v(" ECOLIB members")]),e._v(" "),a("p",[e._v("Applications written by developers run in an environment called "),a("RouterLink",{attrs:{to:"/fr/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(". An application usually serves a specific purpose and complete various tasks together with several other applications.")],1),e._v(" "),a("p",[e._v("A user must become a member of an ECOLIB if wants to access applications in it, and it can be a member of multiple different ECOLIBs at the same time.")]),e._v(" "),a("p",[e._v("ECOLIB members can view and modify the database from application pages, just like filling out forms, clicking buttons and navigating pages in a common web application.")]),e._v(" "),a("h2",{attrs:{id:"ecolib-applications-and-platform-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("#")]),e._v(" ECOLIB applications and platform applications")]),e._v(" "),a("p",[e._v("Applications may fall into "),a("strong",[e._v("ECOLIB applications")]),e._v(" and "),a("strong",[e._v("platform applications")]),e._v(".")]),e._v(" "),a("p",[e._v("ECOLIB applications")]),e._v(" "),a("p",[e._v("An ECOLIB application implements certain unique functions or business processes of an ECOLIB, but it is only available in that ECOLIB.\nPlatform applications")]),e._v(" "),a("p",[e._v("A platform application is applicable to all ECOLIBs. Any application could be developed as a platform application. IBAX developers would provide platform applications that support the core functions for ECOLIB governance, such as voting, notification, and ECOLIB member role management.")]),e._v(" "),a("h2",{attrs:{id:"underlying-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#underlying-model"}},[e._v("#")]),e._v(" Underlying model")]),e._v(" "),a("p",[e._v("Definition of layers")]),e._v(" "),a("p",[e._v("IBAX consists of several layers:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("User interaction layer")]),e._v(" "),a("p",[e._v("ECOLIB members interact with the application through pages and page elements.")])]),e._v(" "),a("li",[a("p",[e._v("Application layer")]),e._v(" "),a("p",[e._v("Application developers interact with the global state (data tables) through contract codes and page codes.")])]),e._v(" "),a("li",[a("p",[e._v("Global state layer")]),e._v(" "),a("p",[e._v("Update and synchronize the global state (database) based on operations written to the distributed ledger (blockchain)")])]),e._v(" "),a("li",[a("p",[e._v("Blockchain layer")]),e._v(" "),a("p",[e._v("Update the distributed ledger with new blocks. Operations (transactions) saved in new blocks must be performed on the global state.")])]),e._v(" "),a("li",[a("p",[e._v("Node network layer")]),e._v(" "),a("p",[e._v("It implemented the IBAX Network protocol, which distributes, verifies transactions and generates new blocks on the node network. Similarly, new blocks are distributed and verified by the node network.")]),e._v(" "),a("p",[e._v("The distributed ledger of all nodes is kept in sync. If having conflicts in a node, the node will identify which blockchains are considered valid and invalid blockchains will be rolled back accordingly.")])]),e._v(" "),a("li",[a("p",[e._v("Transaction layer")]),e._v(" "),a("p",[e._v("Transactions are the basis for generating blocks and blockchain protocols, and transactions themselves are the results of operations performed at the user interaction layer. Transactions are generated by Weaver.")]),e._v(" "),a("p",[e._v("When a user or developer performs an operation such as clicking a button on a page or implement a contract from the code editor, Weaver will convert this operation into a transaction and send it to the network node connected to it.")])])]),e._v(" "),a("p",[e._v("Therefore, the flow of transactions is as follows:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("A user operation in a user page will become a transaction;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction is contained in a block;")])]),e._v(" "),a("li",[a("p",[e._v("The block is included in the blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("The change of operation will cause the global state of the blockchain to change, and such operation will be applied to the database;")])]),e._v(" "),a("li",[a("p",[e._v("Any database change will be reflected in the application.")])])]),e._v(" "),a("h2",{attrs:{id:"implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),a("p",[e._v("IBAX has two major components, i.e. server "),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),a("OutboundLink")],1),e._v(" and Weaver "),a("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source code"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Weaver:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Providing the user pages;")])]),e._v(" "),a("li",[a("p",[e._v("Providing the IDE for application development;")])]),e._v(" "),a("li",[a("p",[e._v("Storing public keys of user accounts and perform authorization;")])]),e._v(" "),a("li",[a("p",[e._v("Requesting database data from application pages and display application pages to users;")])]),e._v(" "),a("li",[a("p",[e._v("Sending transactions to the server through "),a("RouterLink",{attrs:{to:"/fr/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),a("p",[e._v("In order to automatically create transactions against user operations, Weaver will convert such operations into transactions when application developers implement a contract from the IDE.")])])]),e._v(" "),a("p",[e._v("Server:")]),e._v(" "),a("ul",[a("li",[e._v("Keeping the global state (database) of the node;")]),e._v(" "),a("li",[e._v("Implementation of the blockchain protocol;")]),e._v(" "),a("li",[e._v("Implementation of contract codes in the IBAX "),a("RouterLink",{attrs:{to:"/fr/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of page codes in the "),a("RouterLink",{attrs:{to:"/fr/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of "),a("RouterLink",{attrs:{to:"/fr/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/38.059132ee.js b/assets/js/56.f888d1d5.js similarity index 99% rename from assets/js/38.059132ee.js rename to assets/js/56.f888d1d5.js index 3234c25..82c1ad8 100644 --- a/assets/js/38.059132ee.js +++ b/assets/js/56.f888d1d5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{418:function(e,t,a){"use strict";a.r(t);var s=a(51),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[e._v("#")]),e._v(" RESTful API v2")]),e._v(" "),a("p",[e._v("Weaver\nAll functions provided, including authentication, ecosystem data reception, error handling, database table manipulation, page and contract execution are available through\nIBAX Blockchain Platform's REST API is available.")]),e._v(" "),a("p",[e._v("By using the REST API, developers can access any of the platform's features without using Weaver.")]),e._v(" "),a("p",[e._v("API command calls are executed by addressing "),a("code",[e._v("/api/v2/command/[param]")]),e._v(", where "),a("code",[e._v("command")]),e._v("\nis the command name and "),a("code",[e._v("param")]),e._v(" is the additional parameter. The request parameters must be specified using the\n"),a("code",[e._v("Content-Type: x-www-form-urlencoded")]),e._v("\nThe format is sent. The server response result is in JSON format.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-response-handling"}},[e._v("Error response handling")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-list"}},[e._v("Error list")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#request-type"}},[e._v("Request Type")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#authentication-interface"}},[e._v("Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[e._v("getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#login"}},[e._v("login")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#server-side-command-interface"}},[e._v("Server Side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#version"}},[e._v("version")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-request-function-interface"}},[e._v("Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#balance"}},[e._v("balance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blocks"}},[e._v("blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#keyinfo"}},[e._v("keyinfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#wallethistory"}},[e._v("walletHistory")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#get-metrics-interface"}},[e._v("Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-honornodes"}},[e._v("metrics/honornodes")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-interface"}},[e._v("Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ecosystemname"}},[e._v("ecosystemname")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[e._v("appparams/{appID}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparams"}},[e._v("ecosystemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-name"}},[e._v("table/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-column-id"}},[e._v("row/{name}/{column}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#systemparams"}},[e._v("systemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-function-interface"}},[e._v("Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sendtx"}},[e._v("sendTX")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[e._v("txstatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[e._v("txinfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content"}},[e._v("content")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[e._v("maxblockid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[e._v("block/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[e._v("updnotificator")])])])])]),e._v(" "),a("h2",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Return status in case of successful request execution\n"),a("code",[e._v("200")]),e._v(". If an error occurs, in addition to the error status, a JSON object with the following fields will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("error")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error identifier.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("msg")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error text message.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")])]),e._v(" "),a("blockquote",[a("p",[e._v("An array of additional parameters that can be placed in the error message.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('400 (Bad request)\nContent-Type: application/json\n{\n "err": "E_INVALIDWALLET",\n "msg": "Wallet 1234-5678-9012-3444-3488 is not valid",\n "params": ["1234-5678-9012-3444-3488"]\n}\n')])])]),a("h3",{attrs:{id:"error-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-list"}},[e._v("#")]),e._v(" Error list")]),e._v(" "),a("blockquote",[a("p",[e._v("E_CONTRACT")])]),e._v(" "),a("p",[e._v("No "),a("code",[e._v("%s")]),e._v(" contract exists")]),e._v(" "),a("blockquote",[a("p",[e._v("E_DBNIL")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database is empty\n")])])]),a("blockquote",[a("p",[e._v("E_DELETEDKEY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address is frozen\n")])])]),a("blockquote",[a("p",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Ecosystem `%d` does not exist\n")])])]),a("blockquote",[a("p",[e._v("E_EMPTYPUBLIC")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Invalid account public key\n")])])]),a("blockquote",[a("p",[e._v("E_KEYNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address not found\n")])])]),a("blockquote",[a("p",[e._v("E_HASHWRONG")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect hash\n")])])]),a("blockquote",[a("p",[e._v("E_HASHNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Hash not found\n")])])]),a("blockquote",[a("p",[e._v("E_HEAVYPAGE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Too much page loading\n")])])]),a("blockquote",[a("p",[e._v("E_INVALIDWALLET")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Wallet address `%s` Invalid\n")])])]),a("blockquote",[a("p",[e._v("E_LIMITTXSIZE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The transaction size has exceeded the limit\n")])])]),a("blockquote",[a("p",[e._v("E_NOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Page or menu content not found\n")])])]),a("blockquote",[a("p",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Parameters not found\n")])])]),a("blockquote",[a("p",[e._v("E_PERMISSION")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("No permission\n")])])]),a("blockquote",[a("p",[e._v("E_QUERY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database query error\n")])])]),a("blockquote",[a("p",[e._v("E_RECOVERED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("API panic error occurs.\n\nIf a panic error occurs, an error is returned.\n\nThis error means that you have encountered a bug that needs to be found and fixed.\n")])])]),a("blockquote",[a("p",[e._v("E_SERVER")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Server error.\n\nReturn if there is an error in the golang library function. The \\*msg\\* field contains the error text message.\n\n**E_SERVER** may appear in response to any command Error. \nIf it occurs due to an incorrect input parameter, it can be changed to a related error. In another case, this error reports an invalid operation or incorrect system configuration, which requires a more detailed investigation report.\n")])])]),a("blockquote",[a("p",[e._v("E_SIGNATURE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect signature\n")])])]),a("blockquote",[a("p",[e._v("E_STATELOGIN")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("`%s` is not a member of the ecosystem `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Data sheet `%s` not found\n")])])]),a("blockquote",[a("p",[e._v("E_TOKENEXPIRED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The session has expired `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_UNAUTHORIZED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unauthorized.\n\nIn case no login is performed or the session expires, \nexcept for `getuid, login` Any command other than **E_UNAUTHORIZED** returns an error.\n")])])]),a("blockquote",[a("p",[e._v("E_UNKNOWNUID")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unknown UID\n")])])]),a("blockquote",[a("p",[e._v("E_UPDATING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Nodes are updating the blockchain\n")])])]),a("blockquote",[a("p",[e._v("E_STOPPING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Node is stopped\n")])])]),a("blockquote",[a("p",[e._v("E_NOTIMPLEMENTED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Not yet achieved\n")])])]),a("blockquote",[a("p",[e._v("E_BANNED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("This account address is prohibited in `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_CHECKROLE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Access denied\n\nCLB Unavailable Interface\n")])])]),a("hr"),e._v(" "),a("blockquote",[a("p",[e._v("Interface requests for which the CLB node is not available.")])]),e._v(" "),a("ul",[a("li",[e._v("metrics")]),e._v(" "),a("li",[e._v("txinfo")]),e._v(" "),a("li",[e._v("txinfoMultiple")]),e._v(" "),a("li",[e._v("appparam")]),e._v(" "),a("li",[e._v("appparams")]),e._v(" "),a("li",[e._v("appcontent")]),e._v(" "),a("li",[e._v("history")]),e._v(" "),a("li",[e._v("balance")]),e._v(" "),a("li",[e._v("block")]),e._v(" "),a("li",[e._v("maxblockid")]),e._v(" "),a("li",[e._v("blocks")]),e._v(" "),a("li",[e._v("detailed_blocks")]),e._v(" "),a("li",[e._v("ecosystemparams")]),e._v(" "),a("li",[e._v("systemparams")]),e._v(" "),a("li",[e._v("ecosystems")]),e._v(" "),a("li",[e._v("ecosystemparam")]),e._v(" "),a("li",[e._v("ecosystemname")]),e._v(" "),a("li",[e._v("walletHistory")]),e._v(" "),a("li",[e._v("tx_record")])]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request Type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("application/x-www-form-urlencoded")])]),e._v(" "),a("h2",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://jwt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("JWT token"),a("OutboundLink")],1),e._v("\nUsed for authentication. The JWT token must be placed in each request header after it is received: "),a("code",[e._v("Authorization: Bearer TOKEN_HERE")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[e._v("#")]),e._v(" getuid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ returns a unique value, signs it with the private key, and then uses\nThe "),a("a",{attrs:{href:"#login"}},[e._v("login")]),e._v(" command sends it back to the server.")]),e._v(" "),a("p",[e._v("Generate a temporary JWT token that needs to be passed to "),a("strong",[e._v("Authorization")]),e._v(" when calling "),a("strong",[e._v("login")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/getuid\n")])])]),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("uid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Signature number.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("The temporary token passed during login.")]),e._v(" "),a("p",[e._v("The life cycle of a temporary token is 5 seconds.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("cryptoer")])]),e._v(" "),a("blockquote",[a("p",[e._v("Elliptic curve algorithm.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hasher")])]),e._v(" "),a("blockquote",[a("p",[e._v("hash algorithm.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-1"}},[e._v("#")]),e._v(" Response Example 1")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "uid": "4999317241855959593",\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....... .I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"\n "network_id": "4717243765193692211"\n}\n')])])]),a("p",[e._v("In the case that no authorization is required (the request contains "),a("strong",[e._v("Authorization")]),e._v("), the following message will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("expire")])]),e._v(" "),a("blockquote",[a("p",[e._v("Expiration time.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-2"}},[e._v("#")]),e._v(" Response Example 2")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "expire": "2159h59m49.4310543s",\n "ecosystem_id": "1",\n "key_id": "-654321",\n "address": "1196-...... -3496",\n "network_id": "1"\n}\n')])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[e._v("#")]),e._v(" login")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/ User authentication.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("getuid")]),e._v(" should be called first\ncommand in order to receive the unique value and sign it. getuid's temporary JWT token needs to be passed in the request header.")]),e._v(" "),a("p",[e._v("If the request is successful, the token received in the response is contained in "),a("strong",[e._v("Authorization")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/login\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")]),e._v(" "),a("p",[e._v("If not specified, defaults to the first ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[expire]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Lifecycle of the JWT token, in seconds, default is 28800.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[pubkey]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal account public key.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[key_id]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("signature")])]),e._v(" "),a("blockquote",[a("p",[e._v("The uid signature received via getuid.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("JWT token.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account Address ID")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("account")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("notify_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Notification ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isnode")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isowner")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the creator of the ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("clb")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the logged-in ecosystem is CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role list: "),a("code",[e._v("[{Role ID,Role Name}]")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-3"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.....30l665h3v7lH85rs5jgk0",\n "ecosystem_id": "1",\n "key_id": "-54321",\n "account": "1285-... -7743-4282",\n "notify_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..... _JTFfheD0K4CfMbvVNpOJVMNDPx25zIDGir9g3ZZM0w",\n "timestamp": "1451309883",\n "roles": [\n {\n "role_id": 1,\n "role_name": "Developer"\n }\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")])]),e._v(" "),a("h2",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" Server Side command interface")]),e._v(" "),a("h3",{attrs:{id:"version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[e._v("#")]),e._v(" version")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current server version.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/version\n")])])]),a("h4",{attrs:{id:"response-example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-4"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n"1.3.0 branch.main commit.790..757 time.2021-08-23-08:20:19(UTC)"\n')])])]),a("h2",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[e._v("#")]),e._v(" balance")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Requests the balance of the account address in the current ecosystem.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/balance/{wallet}\n")])])]),a("ul",[a("li",[a("p",[e._v("*wallet")]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(". Look up the address in the ecosystem where the user is currently logged in.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default eco1")]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem id.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("amount")])]),e._v(" "),a("blockquote",[a("p",[e._v("The minimum unit of contract account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("money")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("utxo")])]),e._v(" "),a("blockquote",[a("p",[e._v("UTXO account balance.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-5"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "amount": "877450000000000",\n "money": "877.45",\n "total": "877450000000000",\n "utxo": "0"\n} \n')])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[e._v("#")]),e._v(" blocks")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing additional information related to the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-5"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET \n/api/v2/blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information for each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("contract_name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("params")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of contract parameters.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("For the first block, it is the account address of the first block that signed the transaction.")])]),e._v(" "),a("blockquote",[a("p",[e._v("For all other blocks, is the address of the account that signed the transaction.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-6"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "1":\n [{"hash": "O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"detailed-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detailed-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-6"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/detailed_blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("blockhead")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block header contains the following fields.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("block_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block height.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for the block.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("node_position")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("The location of the node that generated the block in the honor node list.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("version")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block structure version.")])])])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block Hashing.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("node_position")])])]),e._v(" "),a("p",[e._v("the location of the node that generated the block in the honor node list.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("time")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("tx_count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of transactions within the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("size")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block size.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("rollback_hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("merkle_root")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block deals with the Merkle tree.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bin_data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("trading")])])]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information about each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trading hash.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("contract_name")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract name.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("params")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract parameters.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for this transaction.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("type")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction type.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("size")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trade Size.")])])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-7"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"1":\n {"header":\n {"block_id":1,\n "time":1551069320,\n "ecosystem_id":0,\n "key_id":-118432674655542910,\n "node_position":0,\n "version":1},\n "hash":"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI=",\n "ecosystem_id":0,\n "node_position":0,\n "key_id":-118432674655542910,\n "time":1551069320,\n "tx_count":1,\n "size": "1.69KiB",\n "rollbacks_hash":"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k=",\n "mrkl_root":"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg==",\n "bin_data":null,\n "sys_update":false,\n "gen_block":false,\n "stop_count":0,\n "transactions":[\n {\n "hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":0,\n "time":0,\n "type":0,\n "size": "300.00B"\n }\n ]}\n}\n')])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystems with roles registered to the specified address.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-7"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{key_id}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("The request is queried in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-6"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of roles with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-8"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"data-id-data-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-id-data-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matching the data in the binary watch, field, and records, this request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-8"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{id}/data/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-7"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-9"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\n{\n "name": "NFT Miner",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "data": [\n {\n "Type": "contracts",\n "Name": "NewNFTMiner",\n },\n ...\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matches the data in the specified table, field, and records, the request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-9"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{table}/id/{column}/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("table")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name, only one")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-8"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-10"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\nContent-Disposition: attachment\n\nSetVar(this_page, @1voting_list).(this_table, @1votings)\nInclude(@1pager_header)\n\nSetTitle("$@1voting_list$")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: "$@1votings_list_desc$"))\nAddToolButton(Title: $@1templates_list$, Page: @1voting_templates_list, Icon: icon-pin)\nAddToolButton(Title: $@1create$, Page: @1voting_create, Icon: icon-plus).Popup(60, $@1new_voting$)\n\n')])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo-2"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to a list of ecosystems, which contains the role of registered the specified address.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-10"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{address}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, you can specify "),a("code",[e._v("int64, uint64, xxxx -...-xxxx")]),e._v(".")]),e._v(" "),a("p",[e._v("This request is query in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-9"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecological system name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("Activities with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-11"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"wallethistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallethistory"}},[e._v("#")]),e._v(" walletHistory")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the current account transaction history record, find it according to the ID of the ID")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-11"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("searchType")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find Type (Income: Turn into Outcom: Turn out all: All, default).")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[page]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find the number of pages, the first page default, min: 1")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 20 articles. min: 1, MAX: 500")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/walletHistory?searchType=all&page=1&limit=10\n")])])]),a("h4",{attrs:{id:"response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-10"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("page")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of current page.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("limit")])]),e._v(" "),a("blockquote",[a("p",[e._v("Currently find the number of bars.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("sender_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Send key_id")])])]),e._v(" "),a("li",[a("em",[e._v("sender_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Send the account address")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept key_id")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept the account address")])])]),e._v(" "),a("li",[a("em",[e._v("amount")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])]),e._v(" "),a("li",[a("em",[e._v("comment")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading remarks")])])]),e._v(" "),a("li",[a("em",[e._v("block_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Block height")])])]),e._v(" "),a("li",[a("em",[e._v("tx_hash")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading hash")])])]),e._v(" "),a("li",[a("em",[e._v("created_at")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction creation time, millisecond time stamp")])])]),e._v(" "),a("li",[a("em",[e._v("money")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-12"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "page": 1,\n "limit": 10,\n "total": 617,\n "list": [\n {\n "id": 650,\n "sender_id": 666081971617879...,\n "sender_add": "0666-0819-7161-xxxx-5186",\n "recipient_id": 666081971617879...,\n "recipient_add": "0666-0819-7161-xxxx-5186",\n "amount": "242250000",\n "comment": "taxes for execution of @1Export contract",\n "block_id": 209,\n "tx_hash": "a213bc767d710a223856d83515d53518075b56fb9e9c063bce8a256c20ff0775",\n "created_at": 1666001092090,\n "money": "0.00024225"\n }\n ...\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"listwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#listwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-12"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/listWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-11"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-13"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"nodelistwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nodelistwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the specified data table. You can specify columns to be returned. The type in the data table is "),a("strong",[e._v("BYTEA")]),e._v(" Do hexadecimal encoding processing")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-13"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/nodelistWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-12"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-14"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("h3",{attrs:{id:"metrics-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-keys"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystem 1 account addresses.")]),e._v(" "),a("h4",{attrs:{id:"request-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-14"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/keys\n")])])]),a("h4",{attrs:{id:"response-example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-15"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of blocks.")]),e._v(" "),a("h4",{attrs:{id:"request-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-15"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/blocks\n")])])]),a("h4",{attrs:{id:"response-example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-16"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-transactions"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the total number of transactions.")]),e._v(" "),a("h4",{attrs:{id:"request-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-16"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/transactions\n")])])]),a("h4",{attrs:{id:"response-example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-17"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-ecosystems"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystems.")]),e._v(" "),a("h4",{attrs:{id:"request-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-17"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/ecosystems\n")])])]),a("h4",{attrs:{id:"response-example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-18"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-honornodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-honornodes"}},[e._v("#")]),e._v(" metrics/honornodes")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of honor nodes.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/honornodes\n")])])]),a("h4",{attrs:{id:"response-example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-19"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h2",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("h3",{attrs:{id:"ecosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[e._v("#")]),e._v(" ecosystemname")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the name of the ecosystem by its identifier.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemname?id=1\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-20"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "ecosystem_name": "platform_ecosystem"\n}\n')])])]),a("h4",{attrs:{id:"error-response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-13"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparams-appid"}},[e._v("appparams/{appid}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of application parameters in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-18"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparams/{appid}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[appid]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID; if not specified, the current ecosystem parameter will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of received parameters.")]),e._v(" "),a("p",[e._v("You can specify a comma-separated list of parameter names, for example:"),a("code",[e._v("/api/v2/appparams/1?names=name,mypar")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-13"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")]),e._v(", the name of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("value")]),e._v(", the value of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("conditions")]),e._v(", change the permissions of the parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-21"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "mypar",\n "value": "My value",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-14"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the parameter "),a("strong",[e._v("{appid}")]),e._v(" of the application "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem\nThe information related to the")]),e._v(" "),a("h4",{attrs:{id:"request-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-19"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparam/{appid}/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("appid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID (optional parameter).")]),e._v(" "),a("p",[e._v("Returns the current ecosystem by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-14"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-22"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "10",\n "name": "par",\n "value": "My value",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-15"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM, E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[e._v("#")]),e._v(" ecosystemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystem parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-20"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparams/[?ecosystem=... &names=...]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID. if not specified, the current ecosystem ID will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("List of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example: "),a("code",[e._v("/api/v2/ecosystemparams/?names=name,currency,logo")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-15"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter value.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change permissions for parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-23"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "currency",\n "value": "MY",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-16"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the parameter "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-21"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparam/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The default is to return the current ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-16"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-24"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "name": "currency",\n "value": "MYCUR",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-17"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of data tables for the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-22"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 100, maximum 1000.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/tables?limit=... &offset=...\n")])])]),a("h4",{attrs:{id:"response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-17"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("The total number of entries in the data table.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name without prefix.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of entries in the data table.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-25"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "100"\n "list": [{ \n "name": "accounts",\n "count": "10",\n }, \n { \n "name": "citizens",\n "count": "5",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"table-name"}},[e._v("table/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the current ecosystem request data table.")]),e._v(" "),a("h4",{attrs:{id:"request-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-23"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[name]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/table/{table_name}\n")])])]),a("p",[e._v("Returns the following field information.")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("insert")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to add new entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("new_column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Add field permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("update")])]),e._v(" "),a("blockquote",[a("p",[e._v("Change entry permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("columns")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of field-related information.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("type")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field data type.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("perm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permissions for the field value.")])])])])])]),e._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/\nReturns a list of the specified data table entries in the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-24"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/list/mytable?columns=name\n")])])]),a("h4",{attrs:{id:"response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-18"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-26"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "John",\n }, \n { \n "id": "2",\n "name": "Mark",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the "),a("em",[e._v("sections")]),e._v(" of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("h4",{attrs:{id:"request-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-25"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[lang]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("This field specifies the multilingual resource code or localization, e.g., "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g., "),a("em",[e._v("en-US")]),e._v(", then the multilingual resource group in\nSearch in "),a("em",[e._v("en")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/sections\n")])])]),a("h4",{attrs:{id:"response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-19"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("sections")]),e._v(" Total number of table entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains information about all columns in the actions table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-27"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "2"\n "list": [{\n "id": "1",\n "title": "Development",\n "urlpage": "develop",\n ...\n },\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-18"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-id-columns-span"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns-span"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]< /span>")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the entry for the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-26"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/row/mytable/10?columns=name\n")])])]),a("h4",{attrs:{id:"response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-20"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of received column values")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-28"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "values": {\n "id": "10",\n "name": "John",\n }\n} \n')])])]),a("h4",{attrs:{id:"error-response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-19"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-column-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-column-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-colorn-id"}},[e._v("row/{name}/{column}/{id} ")])]),e._v(" "),a("p",[e._v("[Authorization] (#Authorization)")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-27"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Name *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[e._v("*colorn *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data list name.")])])]),e._v(" "),a("li",[a("p",[e._v("*ID *")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[e._v("\\ [columns ] * [omitempty] (#omitempty)")]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request lists is separated by commas. If it is not specified, all columns will be returned. In all cases, the ID column will be returned.")])])])])])]),e._v(" "),a("p",[a("code",[e._v("`default GET /API/V2/ROW/MyTable/name/John? Columns = name")]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-21"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Value *")]),e._v(" "),a("blockquote",[a("p",[e._v("Array of receiving column values\nForecast")]),e._v(" "),a("ul",[a("li",[e._v("*ID *")])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Strip ID.")])])]),e._v(" "),a("ul",[a("li",[e._v("-The sequence of the request column.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-29"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("p",[a("code",[e._v('`default 200 (OK) Content-type: Application/JSON {{ "Values": { "ID": "10", "name": "John", } }')]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"error-response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-20"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[e._v("#")]),e._v(" systemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of platform parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-28"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/systemparams/[?names=...]\n")])])]),a("ul",[a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("*\\[names\\]* [Omitempty](#omitempty)\n\nA list of request parameters, separated by commas. For example\n `/api/v2/systemparams/?names=max_columns,max_indexes`.\n")])])]),a("h4",{attrs:{id:"response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-22"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter values.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-30"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "max_columns",\n "value": "100",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n { \n "name": "max_indexes",\n "value": "1",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-21"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the change record for the entry in the specified data table in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-29"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/history?name=contracts&id=5\n")])])]),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("p",[e._v("Data Table Name.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("h4",{attrs:{id:"response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-23"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("list")])])]),e._v(" "),a("p",[e._v("Each element of the array contains a change record for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"response-example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-31"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [\n {\n "name": "default_page",\n "value": "P(class, Default Ecosystem Page)"\n },\n {\n "menu": "default_menu"\n }\n ]\n}\n')])])]),a("h3",{attrs:{id:"interface-page-menu-snippet-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current ecosystem in the specified data table (pages, menu or snippet) "),a("em",[e._v("name")]),e._v("\nThe entry for the field.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/interface/page/default_page\n/api/v2/interface/menu/default_menu\n/api/v2/interface/snippet/welcome\n")])])]),a("h4",{attrs:{id:"request-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-30"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the name of the entry in the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-24"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("other")])]),e._v(" "),a("blockquote",[a("p",[e._v("Other columns of the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-32"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "1",\n "name": "default_page",\n "value": "P(Page content)",\n "default_menu": "default_menu",\n "validate_count": 1\n} \n')])])]),a("h4",{attrs:{id:"error-response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-22"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_QUERY")]),e._v(", "),a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of contracts in the current ecosystem, with the ability to set offsets and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-31"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contracts\n")])])]),a("h4",{attrs:{id:"response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-25"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract contents.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("wallet_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The account address to which the contract is tied.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("address")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("ecosystem_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("app_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The application ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the contract.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("token_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ID of the ecosystem where the pass is used to pay the contract fee.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-33"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "MainCondition",\n "token_id": "1", \n "wallet_id": "0", \n "value": "contract MainCondition {\nconditions {\n if(EcosysParam(`founder_account`)! =$key_id)\n {\n warning `Sorry, you dont have access to this action.`\n }\n }\n}",\n"address": "0000-0000-0000-0000-0000-0000",\n"conditions": "ContractConditions(`MainCondition`)" \n }, \n...\n ]\n} \n')])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified contract. The default is to query the contract in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-32"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contract/mycontract\n")])])]),a("h4",{attrs:{id:"response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-26"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID in VM.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("state")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the contract.")])])]),e._v(" "),a("li",[a("p",[e._v("*walletid")]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account to which the contract is tied.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tokenid")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the pass that is used to pay for the contract.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tableid")])]),e._v(" "),a("p",[e._v("ID of the entry in the > "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("fields")])])]),e._v(" "),a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("> The array contains structural information for each parameter of the contract **data** section.\n>\n> > - *name*\n> >\n> > > Parameter name.\n> >\n> > - \n> >\n> > *type*\n> >\n> > Parameter type.\n> >\n> > - *optional*\n> >\n> > > Parameter options, \\`true\\` means optional parameters, \\`false\\` means mandatory parameters.\n")])])]),a("h4",{attrs:{id:"response-example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-34"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "fields" : [\n {"name": "amount", "type": "int", "optional": false},\n {"name": "name", "type": "string", "optional": true}\n ],\n "id": 150,\n "name":"@1mycontract",\n "tableid" : 10,\n} \n')])])]),a("h4",{attrs:{id:"error-response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-23"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_CONTRACT")])]),e._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[e._v("#")]),e._v(" sendTX")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReceives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an Error Response.")]),e._v(" "),a("h4",{attrs:{id:"request-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-33"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tx_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction content, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/sendTx\n\nHeaders:\nContent-Type: multipart/form-data\n\nParameters:\ntx1 - Transaction 1\ntxN - Trading N\n")])])]),a("h4",{attrs:{id:"response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-27"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hashes")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash arrays.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("tx1")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading 1 hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("txN")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading N's hash.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-35"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hashes": {\n "tx1": "67afbc435634..... ",\n "txN": "89ce4498eaf7..... ",\n}\n')])])]),a("h4",{attrs:{id:"error-response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-24"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_LIMITTXSIZE")]),e._v(","),a("em",[e._v("E_BANNED")])]),e._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[e._v("#")]),e._v(" txstatus")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReturns the block ID and error message for the specified transaction hash. If the return values for the block ID and error text message are null, then the transaction is not yet contained in the block.")]),e._v(" "),a("h4",{attrs:{id:"request-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-34"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON list of transaction hashes.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/txstatus/\n")])])]),a("h4",{attrs:{id:"response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-28"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("blockid")])])]),e._v(" "),a("p",[e._v("If the transaction execution succeeds, the block ID is returned; if the transaction execution fails, the")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")]),e._v(" for [0]{.title-ref}.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("result")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("errmsg")])])]),e._v(" "),a("p",[e._v("Returns an error text message if the execution of the transaction fails.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-36"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n {\n "hash1": {\n "blockid": "3123",\n "result": "",\n },\n "hash2": {\n "blockid": "3124",\n "result": "",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-25"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG, E_HASHNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. Also returns the contract name and its associated parameters, if optional parameters are specified.")]),e._v(" "),a("h4",{attrs:{id:"request-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-35"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1\n")])])]),a("h4",{attrs:{id:"response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-29"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("blockid")])]),e._v(" "),a("blockquote",[a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("confirm")])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("data")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-37"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "blockid": "9",\n "confirm": 11,\n "data": {\n "block": "9",\n "contract": "@1NewContract",\n "params": {\n "ApplicationId": 1,\n "Conditions": "true",\n "Value": "contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t\\t}"\n }\n }\n}\n')])])]),a("h4",{attrs:{id:"error-response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-26"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[e._v("#")]),e._v(" txinfoMultiple")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns the transaction-related information for the specified hash.")]),e._v(" "),a("h4",{attrs:{id:"request-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-36"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hashes")])])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of transaction hashes.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('data: {"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfoMultiple\n")])])]),a("h4",{attrs:{id:"response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-30"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")])])])]),e._v(" "),a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[a("em",[e._v("confirm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-38"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n { \n "hash1": {\n "blockid": "3123",\n "confirm": "5",\n },\n "hash2": {\n "blockid": "3124",\n "confirm": "3",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-27"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"request-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-37"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, then search in the first ecosystem page by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/page/validators_count/@2page_name\n")])])]),a("h4",{attrs:{id:"response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-31"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("validate_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the number of nodes to be validated for the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-39"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-28"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a tree of code JSON objects for the specified page or menu name, which is the result of processing by the template engine.")]),e._v(" "),a("h4",{attrs:{id:"request-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-38"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name or menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current ecosystem page or menu by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/page/default\n")])])]),a("h4",{attrs:{id:"response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-32"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("menu")]),e._v(" || "),a("em",[e._v("title")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The name of the menu to which the page belongs when requesting it.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("menutree")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The page's menu JSON object tree when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("title")]),e._v("--head for the menu "),a("em",[e._v("content/menu/...")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/menu/...")]),e._v(" Menu title when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page or menu JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-40"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-29"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v('Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.\nRequest """""""')]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current eco-page by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-33"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/source/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree of the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-41"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-30"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page cannot be found.")]),e._v(" "),a("p",[e._v("This request does not require login authorization. To receive the correct hash when making requests to other nodes, you must also pass\n"),a("em",[e._v("ecosystem,keyID,roleID,isMobile")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-39"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/hash/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the page with the ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("keyID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roleID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isMobile")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter identification of the mobile platform.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-34"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-42"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n} \n')])])]),a("h4",{attrs:{id:"error-response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-31"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")])]),e._v(" "),a("h3",{attrs:{id:"content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content"}},[e._v("#")]),e._v(" content")]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" is specified as\n"),a("code",[e._v("true or 1")]),e._v(", then this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-40"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("template")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page code.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[source]")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("true or 1")]),e._v(" is specified, the JSON object tree does not perform any functions and receives data.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content\n")])])]),a("h4",{attrs:{id:"response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-35"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-43"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-32"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[e._v("#")]),e._v(" maxblockid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the highest block ID on the current node.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-41"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/maxblockid\n")])])]),a("h4",{attrs:{id:"response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-36"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("max_block_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The highest block ID on the current node.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-44"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "max_block_id" : 341,\n}\n')])])]),a("h4",{attrs:{id:"error-response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-33"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"block-id"}},[e._v("block/{id}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified block ID.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-42"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/block/32\n")])])]),a("h4",{attrs:{id:"response-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-37"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("time")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tx_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of transactions in the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("rollbacks_hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("node_position")])]),e._v(" "),a("blockquote",[a("p",[e._v("The position of the block in the honor node list.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-45"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek=",\n "key_id": -118432674655542910,\n "time": 1551145365,\n "tx_count": 3,\n "rollbacks_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",\n "node_position": 0,\n} \n')])])]),a("h4",{attrs:{id:"error-response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-34"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the avatar of the user in the "),a("em",[e._v("member")]),e._v(" table (available without login).")]),e._v(" "),a("h4",{attrs:{id:"request-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-43"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("member")])]),e._v(" "),a("blockquote",[a("p",[e._v("The user's account address. (xxxx-... -xxxx)")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/avatar/1/1234-2134-... -4321\n")])])]),a("h4",{attrs:{id:"response-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-38"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The request header "),a("em",[e._v("Content-Type")]),e._v(" is the image type and the image data is returned in the response body.")]),e._v(" "),a("h4",{attrs:{id:"response-example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-46"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("200 (OK)\nContent-Type: image/png \n")])])]),a("h4",{attrs:{id:"error-response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-35"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")]),e._v(" "),a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the host address and port of centrifugo.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-44"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/config/centrifugo\n")])])]),a("h4",{attrs:{id:"response-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-39"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Response result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-36"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[e._v("#")]),e._v(" updnotificator")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/")]),e._v(" "),a("p",[e._v("(Discarded)")]),e._v(" "),a("p",[e._v("Sends all messages that have not yet been sent to the centrifugo notification service. Sends only messages for the specified ecosystem and members.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-45"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Member's account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/updnotificator\n")])])]),a("h4",{attrs:{id:"response-example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-47"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "result": true\n} \n')])])]),a("h3",{attrs:{id:"special-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-instructions"}},[e._v("#")]),e._v(" Special instructions")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("If the field has an omitempty attribute, it means that the field is an optional parameter")]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("If the interface with Authorization tag, that this interface requires login authorization, add Authorization to the request header, example.")]),e._v(" "),a("p",[e._v('key = Authorization\nvalue = "Bearer + '),a("a",{attrs:{href:"#login"}},[e._v("login token")]),e._v('"')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Authorization Bearer eyJhbGciOiJI..... kBZgGIlPhfXNZJ73RiZtM\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{438:function(e,t,a){"use strict";a.r(t);var s=a(51),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[e._v("#")]),e._v(" RESTful API v2")]),e._v(" "),a("p",[e._v("Weaver\nAll functions provided, including authentication, ecosystem data reception, error handling, database table manipulation, page and contract execution are available through\nIBAX Blockchain Platform's REST API is available.")]),e._v(" "),a("p",[e._v("By using the REST API, developers can access any of the platform's features without using Weaver.")]),e._v(" "),a("p",[e._v("API command calls are executed by addressing "),a("code",[e._v("/api/v2/command/[param]")]),e._v(", where "),a("code",[e._v("command")]),e._v("\nis the command name and "),a("code",[e._v("param")]),e._v(" is the additional parameter. The request parameters must be specified using the\n"),a("code",[e._v("Content-Type: x-www-form-urlencoded")]),e._v("\nThe format is sent. The server response result is in JSON format.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-response-handling"}},[e._v("Error response handling")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-list"}},[e._v("Error list")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#request-type"}},[e._v("Request Type")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#authentication-interface"}},[e._v("Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[e._v("getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#login"}},[e._v("login")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#server-side-command-interface"}},[e._v("Server Side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#version"}},[e._v("version")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-request-function-interface"}},[e._v("Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#balance"}},[e._v("balance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blocks"}},[e._v("blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#keyinfo"}},[e._v("keyinfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#wallethistory"}},[e._v("walletHistory")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#get-metrics-interface"}},[e._v("Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-honornodes"}},[e._v("metrics/honornodes")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-interface"}},[e._v("Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ecosystemname"}},[e._v("ecosystemname")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[e._v("appparams/{appID}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparams"}},[e._v("ecosystemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-name"}},[e._v("table/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-column-id"}},[e._v("row/{name}/{column}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#systemparams"}},[e._v("systemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-function-interface"}},[e._v("Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sendtx"}},[e._v("sendTX")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[e._v("txstatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[e._v("txinfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content"}},[e._v("content")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[e._v("maxblockid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[e._v("block/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[e._v("updnotificator")])])])])]),e._v(" "),a("h2",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Return status in case of successful request execution\n"),a("code",[e._v("200")]),e._v(". If an error occurs, in addition to the error status, a JSON object with the following fields will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("error")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error identifier.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("msg")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error text message.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")])]),e._v(" "),a("blockquote",[a("p",[e._v("An array of additional parameters that can be placed in the error message.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('400 (Bad request)\nContent-Type: application/json\n{\n "err": "E_INVALIDWALLET",\n "msg": "Wallet 1234-5678-9012-3444-3488 is not valid",\n "params": ["1234-5678-9012-3444-3488"]\n}\n')])])]),a("h3",{attrs:{id:"error-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-list"}},[e._v("#")]),e._v(" Error list")]),e._v(" "),a("blockquote",[a("p",[e._v("E_CONTRACT")])]),e._v(" "),a("p",[e._v("No "),a("code",[e._v("%s")]),e._v(" contract exists")]),e._v(" "),a("blockquote",[a("p",[e._v("E_DBNIL")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database is empty\n")])])]),a("blockquote",[a("p",[e._v("E_DELETEDKEY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address is frozen\n")])])]),a("blockquote",[a("p",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Ecosystem `%d` does not exist\n")])])]),a("blockquote",[a("p",[e._v("E_EMPTYPUBLIC")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Invalid account public key\n")])])]),a("blockquote",[a("p",[e._v("E_KEYNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address not found\n")])])]),a("blockquote",[a("p",[e._v("E_HASHWRONG")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect hash\n")])])]),a("blockquote",[a("p",[e._v("E_HASHNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Hash not found\n")])])]),a("blockquote",[a("p",[e._v("E_HEAVYPAGE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Too much page loading\n")])])]),a("blockquote",[a("p",[e._v("E_INVALIDWALLET")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Wallet address `%s` Invalid\n")])])]),a("blockquote",[a("p",[e._v("E_LIMITTXSIZE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The transaction size has exceeded the limit\n")])])]),a("blockquote",[a("p",[e._v("E_NOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Page or menu content not found\n")])])]),a("blockquote",[a("p",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Parameters not found\n")])])]),a("blockquote",[a("p",[e._v("E_PERMISSION")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("No permission\n")])])]),a("blockquote",[a("p",[e._v("E_QUERY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database query error\n")])])]),a("blockquote",[a("p",[e._v("E_RECOVERED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("API panic error occurs.\n\nIf a panic error occurs, an error is returned.\n\nThis error means that you have encountered a bug that needs to be found and fixed.\n")])])]),a("blockquote",[a("p",[e._v("E_SERVER")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Server error.\n\nReturn if there is an error in the golang library function. The \\*msg\\* field contains the error text message.\n\n**E_SERVER** may appear in response to any command Error. \nIf it occurs due to an incorrect input parameter, it can be changed to a related error. In another case, this error reports an invalid operation or incorrect system configuration, which requires a more detailed investigation report.\n")])])]),a("blockquote",[a("p",[e._v("E_SIGNATURE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect signature\n")])])]),a("blockquote",[a("p",[e._v("E_STATELOGIN")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("`%s` is not a member of the ecosystem `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Data sheet `%s` not found\n")])])]),a("blockquote",[a("p",[e._v("E_TOKENEXPIRED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The session has expired `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_UNAUTHORIZED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unauthorized.\n\nIn case no login is performed or the session expires, \nexcept for `getuid, login` Any command other than **E_UNAUTHORIZED** returns an error.\n")])])]),a("blockquote",[a("p",[e._v("E_UNKNOWNUID")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unknown UID\n")])])]),a("blockquote",[a("p",[e._v("E_UPDATING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Nodes are updating the blockchain\n")])])]),a("blockquote",[a("p",[e._v("E_STOPPING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Node is stopped\n")])])]),a("blockquote",[a("p",[e._v("E_NOTIMPLEMENTED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Not yet achieved\n")])])]),a("blockquote",[a("p",[e._v("E_BANNED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("This account address is prohibited in `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_CHECKROLE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Access denied\n\nCLB Unavailable Interface\n")])])]),a("hr"),e._v(" "),a("blockquote",[a("p",[e._v("Interface requests for which the CLB node is not available.")])]),e._v(" "),a("ul",[a("li",[e._v("metrics")]),e._v(" "),a("li",[e._v("txinfo")]),e._v(" "),a("li",[e._v("txinfoMultiple")]),e._v(" "),a("li",[e._v("appparam")]),e._v(" "),a("li",[e._v("appparams")]),e._v(" "),a("li",[e._v("appcontent")]),e._v(" "),a("li",[e._v("history")]),e._v(" "),a("li",[e._v("balance")]),e._v(" "),a("li",[e._v("block")]),e._v(" "),a("li",[e._v("maxblockid")]),e._v(" "),a("li",[e._v("blocks")]),e._v(" "),a("li",[e._v("detailed_blocks")]),e._v(" "),a("li",[e._v("ecosystemparams")]),e._v(" "),a("li",[e._v("systemparams")]),e._v(" "),a("li",[e._v("ecosystems")]),e._v(" "),a("li",[e._v("ecosystemparam")]),e._v(" "),a("li",[e._v("ecosystemname")]),e._v(" "),a("li",[e._v("walletHistory")]),e._v(" "),a("li",[e._v("tx_record")])]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request Type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("application/x-www-form-urlencoded")])]),e._v(" "),a("h2",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://jwt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("JWT token"),a("OutboundLink")],1),e._v("\nUsed for authentication. The JWT token must be placed in each request header after it is received: "),a("code",[e._v("Authorization: Bearer TOKEN_HERE")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[e._v("#")]),e._v(" getuid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ returns a unique value, signs it with the private key, and then uses\nThe "),a("a",{attrs:{href:"#login"}},[e._v("login")]),e._v(" command sends it back to the server.")]),e._v(" "),a("p",[e._v("Generate a temporary JWT token that needs to be passed to "),a("strong",[e._v("Authorization")]),e._v(" when calling "),a("strong",[e._v("login")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/getuid\n")])])]),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("uid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Signature number.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("The temporary token passed during login.")]),e._v(" "),a("p",[e._v("The life cycle of a temporary token is 5 seconds.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("cryptoer")])]),e._v(" "),a("blockquote",[a("p",[e._v("Elliptic curve algorithm.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hasher")])]),e._v(" "),a("blockquote",[a("p",[e._v("hash algorithm.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-1"}},[e._v("#")]),e._v(" Response Example 1")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "uid": "4999317241855959593",\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....... .I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"\n "network_id": "4717243765193692211"\n}\n')])])]),a("p",[e._v("In the case that no authorization is required (the request contains "),a("strong",[e._v("Authorization")]),e._v("), the following message will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("expire")])]),e._v(" "),a("blockquote",[a("p",[e._v("Expiration time.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-2"}},[e._v("#")]),e._v(" Response Example 2")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "expire": "2159h59m49.4310543s",\n "ecosystem_id": "1",\n "key_id": "-654321",\n "address": "1196-...... -3496",\n "network_id": "1"\n}\n')])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[e._v("#")]),e._v(" login")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/ User authentication.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("getuid")]),e._v(" should be called first\ncommand in order to receive the unique value and sign it. getuid's temporary JWT token needs to be passed in the request header.")]),e._v(" "),a("p",[e._v("If the request is successful, the token received in the response is contained in "),a("strong",[e._v("Authorization")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/login\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")]),e._v(" "),a("p",[e._v("If not specified, defaults to the first ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[expire]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Lifecycle of the JWT token, in seconds, default is 28800.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[pubkey]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal account public key.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[key_id]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("signature")])]),e._v(" "),a("blockquote",[a("p",[e._v("The uid signature received via getuid.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("JWT token.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account Address ID")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("account")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("notify_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Notification ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isnode")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isowner")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the creator of the ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("clb")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the logged-in ecosystem is CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role list: "),a("code",[e._v("[{Role ID,Role Name}]")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-3"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.....30l665h3v7lH85rs5jgk0",\n "ecosystem_id": "1",\n "key_id": "-54321",\n "account": "1285-... -7743-4282",\n "notify_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..... _JTFfheD0K4CfMbvVNpOJVMNDPx25zIDGir9g3ZZM0w",\n "timestamp": "1451309883",\n "roles": [\n {\n "role_id": 1,\n "role_name": "Developer"\n }\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")])]),e._v(" "),a("h2",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" Server Side command interface")]),e._v(" "),a("h3",{attrs:{id:"version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[e._v("#")]),e._v(" version")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current server version.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/version\n")])])]),a("h4",{attrs:{id:"response-example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-4"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n"1.3.0 branch.main commit.790..757 time.2021-08-23-08:20:19(UTC)"\n')])])]),a("h2",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[e._v("#")]),e._v(" balance")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Requests the balance of the account address in the current ecosystem.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/balance/{wallet}\n")])])]),a("ul",[a("li",[a("p",[e._v("*wallet")]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(". Look up the address in the ecosystem where the user is currently logged in.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default eco1")]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem id.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("amount")])]),e._v(" "),a("blockquote",[a("p",[e._v("The minimum unit of contract account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("money")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("utxo")])]),e._v(" "),a("blockquote",[a("p",[e._v("UTXO account balance.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-5"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "amount": "877450000000000",\n "money": "877.45",\n "total": "877450000000000",\n "utxo": "0"\n} \n')])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[e._v("#")]),e._v(" blocks")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing additional information related to the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-5"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET \n/api/v2/blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information for each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("contract_name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("params")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of contract parameters.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("For the first block, it is the account address of the first block that signed the transaction.")])]),e._v(" "),a("blockquote",[a("p",[e._v("For all other blocks, is the address of the account that signed the transaction.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-6"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "1":\n [{"hash": "O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"detailed-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detailed-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-6"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/detailed_blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("blockhead")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block header contains the following fields.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("block_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block height.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for the block.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("node_position")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("The location of the node that generated the block in the honor node list.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("version")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block structure version.")])])])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block Hashing.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("node_position")])])]),e._v(" "),a("p",[e._v("the location of the node that generated the block in the honor node list.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("time")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("tx_count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of transactions within the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("size")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block size.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("rollback_hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("merkle_root")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block deals with the Merkle tree.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bin_data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("trading")])])]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information about each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trading hash.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("contract_name")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract name.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("params")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract parameters.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for this transaction.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("type")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction type.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("size")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trade Size.")])])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-7"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"1":\n {"header":\n {"block_id":1,\n "time":1551069320,\n "ecosystem_id":0,\n "key_id":-118432674655542910,\n "node_position":0,\n "version":1},\n "hash":"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI=",\n "ecosystem_id":0,\n "node_position":0,\n "key_id":-118432674655542910,\n "time":1551069320,\n "tx_count":1,\n "size": "1.69KiB",\n "rollbacks_hash":"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k=",\n "mrkl_root":"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg==",\n "bin_data":null,\n "sys_update":false,\n "gen_block":false,\n "stop_count":0,\n "transactions":[\n {\n "hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":0,\n "time":0,\n "type":0,\n "size": "300.00B"\n }\n ]}\n}\n')])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystems with roles registered to the specified address.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-7"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{key_id}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("The request is queried in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-6"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of roles with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-8"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"data-id-data-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-id-data-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matching the data in the binary watch, field, and records, this request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-8"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{id}/data/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-7"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-9"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\n{\n "name": "NFT Miner",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "data": [\n {\n "Type": "contracts",\n "Name": "NewNFTMiner",\n },\n ...\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matches the data in the specified table, field, and records, the request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-9"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{table}/id/{column}/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("table")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name, only one")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-8"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-10"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\nContent-Disposition: attachment\n\nSetVar(this_page, @1voting_list).(this_table, @1votings)\nInclude(@1pager_header)\n\nSetTitle("$@1voting_list$")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: "$@1votings_list_desc$"))\nAddToolButton(Title: $@1templates_list$, Page: @1voting_templates_list, Icon: icon-pin)\nAddToolButton(Title: $@1create$, Page: @1voting_create, Icon: icon-plus).Popup(60, $@1new_voting$)\n\n')])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo-2"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to a list of ecosystems, which contains the role of registered the specified address.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-10"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{address}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, you can specify "),a("code",[e._v("int64, uint64, xxxx -...-xxxx")]),e._v(".")]),e._v(" "),a("p",[e._v("This request is query in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-9"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecological system name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("Activities with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-11"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"wallethistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallethistory"}},[e._v("#")]),e._v(" walletHistory")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the current account transaction history record, find it according to the ID of the ID")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-11"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("searchType")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find Type (Income: Turn into Outcom: Turn out all: All, default).")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[page]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find the number of pages, the first page default, min: 1")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 20 articles. min: 1, MAX: 500")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/walletHistory?searchType=all&page=1&limit=10\n")])])]),a("h4",{attrs:{id:"response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-10"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("page")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of current page.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("limit")])]),e._v(" "),a("blockquote",[a("p",[e._v("Currently find the number of bars.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("sender_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Send key_id")])])]),e._v(" "),a("li",[a("em",[e._v("sender_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Send the account address")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept key_id")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept the account address")])])]),e._v(" "),a("li",[a("em",[e._v("amount")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])]),e._v(" "),a("li",[a("em",[e._v("comment")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading remarks")])])]),e._v(" "),a("li",[a("em",[e._v("block_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Block height")])])]),e._v(" "),a("li",[a("em",[e._v("tx_hash")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading hash")])])]),e._v(" "),a("li",[a("em",[e._v("created_at")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction creation time, millisecond time stamp")])])]),e._v(" "),a("li",[a("em",[e._v("money")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-12"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "page": 1,\n "limit": 10,\n "total": 617,\n "list": [\n {\n "id": 650,\n "sender_id": 666081971617879...,\n "sender_add": "0666-0819-7161-xxxx-5186",\n "recipient_id": 666081971617879...,\n "recipient_add": "0666-0819-7161-xxxx-5186",\n "amount": "242250000",\n "comment": "taxes for execution of @1Export contract",\n "block_id": 209,\n "tx_hash": "a213bc767d710a223856d83515d53518075b56fb9e9c063bce8a256c20ff0775",\n "created_at": 1666001092090,\n "money": "0.00024225"\n }\n ...\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"listwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#listwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-12"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/listWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-11"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-13"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"nodelistwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nodelistwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the specified data table. You can specify columns to be returned. The type in the data table is "),a("strong",[e._v("BYTEA")]),e._v(" Do hexadecimal encoding processing")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-13"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/nodelistWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-12"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-14"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("h3",{attrs:{id:"metrics-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-keys"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystem 1 account addresses.")]),e._v(" "),a("h4",{attrs:{id:"request-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-14"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/keys\n")])])]),a("h4",{attrs:{id:"response-example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-15"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of blocks.")]),e._v(" "),a("h4",{attrs:{id:"request-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-15"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/blocks\n")])])]),a("h4",{attrs:{id:"response-example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-16"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-transactions"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the total number of transactions.")]),e._v(" "),a("h4",{attrs:{id:"request-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-16"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/transactions\n")])])]),a("h4",{attrs:{id:"response-example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-17"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-ecosystems"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystems.")]),e._v(" "),a("h4",{attrs:{id:"request-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-17"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/ecosystems\n")])])]),a("h4",{attrs:{id:"response-example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-18"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-honornodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-honornodes"}},[e._v("#")]),e._v(" metrics/honornodes")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of honor nodes.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/honornodes\n")])])]),a("h4",{attrs:{id:"response-example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-19"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h2",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("h3",{attrs:{id:"ecosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[e._v("#")]),e._v(" ecosystemname")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the name of the ecosystem by its identifier.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemname?id=1\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-20"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "ecosystem_name": "platform_ecosystem"\n}\n')])])]),a("h4",{attrs:{id:"error-response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-13"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparams-appid"}},[e._v("appparams/{appid}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of application parameters in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-18"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparams/{appid}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[appid]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID; if not specified, the current ecosystem parameter will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of received parameters.")]),e._v(" "),a("p",[e._v("You can specify a comma-separated list of parameter names, for example:"),a("code",[e._v("/api/v2/appparams/1?names=name,mypar")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-13"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")]),e._v(", the name of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("value")]),e._v(", the value of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("conditions")]),e._v(", change the permissions of the parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-21"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "mypar",\n "value": "My value",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-14"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the parameter "),a("strong",[e._v("{appid}")]),e._v(" of the application "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem\nThe information related to the")]),e._v(" "),a("h4",{attrs:{id:"request-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-19"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparam/{appid}/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("appid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID (optional parameter).")]),e._v(" "),a("p",[e._v("Returns the current ecosystem by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-14"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-22"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "10",\n "name": "par",\n "value": "My value",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-15"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM, E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[e._v("#")]),e._v(" ecosystemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystem parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-20"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparams/[?ecosystem=... &names=...]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID. if not specified, the current ecosystem ID will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("List of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example: "),a("code",[e._v("/api/v2/ecosystemparams/?names=name,currency,logo")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-15"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter value.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change permissions for parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-23"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "currency",\n "value": "MY",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-16"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the parameter "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-21"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparam/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The default is to return the current ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-16"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-24"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "name": "currency",\n "value": "MYCUR",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-17"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of data tables for the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-22"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 100, maximum 1000.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/tables?limit=... &offset=...\n")])])]),a("h4",{attrs:{id:"response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-17"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("The total number of entries in the data table.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name without prefix.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of entries in the data table.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-25"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "100"\n "list": [{ \n "name": "accounts",\n "count": "10",\n }, \n { \n "name": "citizens",\n "count": "5",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"table-name"}},[e._v("table/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the current ecosystem request data table.")]),e._v(" "),a("h4",{attrs:{id:"request-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-23"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[name]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/table/{table_name}\n")])])]),a("p",[e._v("Returns the following field information.")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("insert")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to add new entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("new_column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Add field permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("update")])]),e._v(" "),a("blockquote",[a("p",[e._v("Change entry permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("columns")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of field-related information.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("type")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field data type.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("perm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permissions for the field value.")])])])])])]),e._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/\nReturns a list of the specified data table entries in the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-24"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/list/mytable?columns=name\n")])])]),a("h4",{attrs:{id:"response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-18"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-26"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "John",\n }, \n { \n "id": "2",\n "name": "Mark",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the "),a("em",[e._v("sections")]),e._v(" of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("h4",{attrs:{id:"request-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-25"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[lang]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("This field specifies the multilingual resource code or localization, e.g., "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g., "),a("em",[e._v("en-US")]),e._v(", then the multilingual resource group in\nSearch in "),a("em",[e._v("en")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/sections\n")])])]),a("h4",{attrs:{id:"response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-19"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("sections")]),e._v(" Total number of table entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains information about all columns in the actions table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-27"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "2"\n "list": [{\n "id": "1",\n "title": "Development",\n "urlpage": "develop",\n ...\n },\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-18"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-id-columns-span"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns-span"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]< /span>")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the entry for the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-26"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/row/mytable/10?columns=name\n")])])]),a("h4",{attrs:{id:"response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-20"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of received column values")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-28"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "values": {\n "id": "10",\n "name": "John",\n }\n} \n')])])]),a("h4",{attrs:{id:"error-response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-19"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-column-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-column-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-colorn-id"}},[e._v("row/{name}/{column}/{id} ")])]),e._v(" "),a("p",[e._v("[Authorization] (#Authorization)")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-27"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Name *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[e._v("*colorn *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data list name.")])])]),e._v(" "),a("li",[a("p",[e._v("*ID *")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[e._v("\\ [columns ] * [omitempty] (#omitempty)")]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request lists is separated by commas. If it is not specified, all columns will be returned. In all cases, the ID column will be returned.")])])])])])]),e._v(" "),a("p",[a("code",[e._v("`default GET /API/V2/ROW/MyTable/name/John? Columns = name")]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-21"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Value *")]),e._v(" "),a("blockquote",[a("p",[e._v("Array of receiving column values\nForecast")]),e._v(" "),a("ul",[a("li",[e._v("*ID *")])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Strip ID.")])])]),e._v(" "),a("ul",[a("li",[e._v("-The sequence of the request column.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-29"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("p",[a("code",[e._v('`default 200 (OK) Content-type: Application/JSON {{ "Values": { "ID": "10", "name": "John", } }')]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"error-response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-20"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[e._v("#")]),e._v(" systemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of platform parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-28"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/systemparams/[?names=...]\n")])])]),a("ul",[a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("*\\[names\\]* [Omitempty](#omitempty)\n\nA list of request parameters, separated by commas. For example\n `/api/v2/systemparams/?names=max_columns,max_indexes`.\n")])])]),a("h4",{attrs:{id:"response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-22"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter values.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-30"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "max_columns",\n "value": "100",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n { \n "name": "max_indexes",\n "value": "1",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-21"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the change record for the entry in the specified data table in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-29"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/history?name=contracts&id=5\n")])])]),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("p",[e._v("Data Table Name.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("h4",{attrs:{id:"response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-23"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("list")])])]),e._v(" "),a("p",[e._v("Each element of the array contains a change record for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"response-example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-31"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [\n {\n "name": "default_page",\n "value": "P(class, Default Ecosystem Page)"\n },\n {\n "menu": "default_menu"\n }\n ]\n}\n')])])]),a("h3",{attrs:{id:"interface-page-menu-snippet-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current ecosystem in the specified data table (pages, menu or snippet) "),a("em",[e._v("name")]),e._v("\nThe entry for the field.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/interface/page/default_page\n/api/v2/interface/menu/default_menu\n/api/v2/interface/snippet/welcome\n")])])]),a("h4",{attrs:{id:"request-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-30"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the name of the entry in the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-24"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("other")])]),e._v(" "),a("blockquote",[a("p",[e._v("Other columns of the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-32"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "1",\n "name": "default_page",\n "value": "P(Page content)",\n "default_menu": "default_menu",\n "validate_count": 1\n} \n')])])]),a("h4",{attrs:{id:"error-response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-22"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_QUERY")]),e._v(", "),a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of contracts in the current ecosystem, with the ability to set offsets and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-31"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contracts\n")])])]),a("h4",{attrs:{id:"response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-25"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract contents.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("wallet_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The account address to which the contract is tied.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("address")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("ecosystem_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("app_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The application ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the contract.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("token_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ID of the ecosystem where the pass is used to pay the contract fee.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-33"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "MainCondition",\n "token_id": "1", \n "wallet_id": "0", \n "value": "contract MainCondition {\nconditions {\n if(EcosysParam(`founder_account`)! =$key_id)\n {\n warning `Sorry, you dont have access to this action.`\n }\n }\n}",\n"address": "0000-0000-0000-0000-0000-0000",\n"conditions": "ContractConditions(`MainCondition`)" \n }, \n...\n ]\n} \n')])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified contract. The default is to query the contract in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-32"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contract/mycontract\n")])])]),a("h4",{attrs:{id:"response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-26"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID in VM.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("state")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the contract.")])])]),e._v(" "),a("li",[a("p",[e._v("*walletid")]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account to which the contract is tied.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tokenid")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the pass that is used to pay for the contract.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tableid")])]),e._v(" "),a("p",[e._v("ID of the entry in the > "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("fields")])])]),e._v(" "),a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("> The array contains structural information for each parameter of the contract **data** section.\n>\n> > - *name*\n> >\n> > > Parameter name.\n> >\n> > - \n> >\n> > *type*\n> >\n> > Parameter type.\n> >\n> > - *optional*\n> >\n> > > Parameter options, \\`true\\` means optional parameters, \\`false\\` means mandatory parameters.\n")])])]),a("h4",{attrs:{id:"response-example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-34"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "fields" : [\n {"name": "amount", "type": "int", "optional": false},\n {"name": "name", "type": "string", "optional": true}\n ],\n "id": 150,\n "name":"@1mycontract",\n "tableid" : 10,\n} \n')])])]),a("h4",{attrs:{id:"error-response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-23"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_CONTRACT")])]),e._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[e._v("#")]),e._v(" sendTX")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReceives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an Error Response.")]),e._v(" "),a("h4",{attrs:{id:"request-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-33"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tx_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction content, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/sendTx\n\nHeaders:\nContent-Type: multipart/form-data\n\nParameters:\ntx1 - Transaction 1\ntxN - Trading N\n")])])]),a("h4",{attrs:{id:"response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-27"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hashes")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash arrays.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("tx1")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading 1 hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("txN")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading N's hash.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-35"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hashes": {\n "tx1": "67afbc435634..... ",\n "txN": "89ce4498eaf7..... ",\n}\n')])])]),a("h4",{attrs:{id:"error-response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-24"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_LIMITTXSIZE")]),e._v(","),a("em",[e._v("E_BANNED")])]),e._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[e._v("#")]),e._v(" txstatus")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReturns the block ID and error message for the specified transaction hash. If the return values for the block ID and error text message are null, then the transaction is not yet contained in the block.")]),e._v(" "),a("h4",{attrs:{id:"request-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-34"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON list of transaction hashes.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/txstatus/\n")])])]),a("h4",{attrs:{id:"response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-28"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("blockid")])])]),e._v(" "),a("p",[e._v("If the transaction execution succeeds, the block ID is returned; if the transaction execution fails, the")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")]),e._v(" for [0]{.title-ref}.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("result")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("errmsg")])])]),e._v(" "),a("p",[e._v("Returns an error text message if the execution of the transaction fails.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-36"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n {\n "hash1": {\n "blockid": "3123",\n "result": "",\n },\n "hash2": {\n "blockid": "3124",\n "result": "",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-25"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG, E_HASHNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. Also returns the contract name and its associated parameters, if optional parameters are specified.")]),e._v(" "),a("h4",{attrs:{id:"request-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-35"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1\n")])])]),a("h4",{attrs:{id:"response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-29"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("blockid")])]),e._v(" "),a("blockquote",[a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("confirm")])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("data")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-37"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "blockid": "9",\n "confirm": 11,\n "data": {\n "block": "9",\n "contract": "@1NewContract",\n "params": {\n "ApplicationId": 1,\n "Conditions": "true",\n "Value": "contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t\\t}"\n }\n }\n}\n')])])]),a("h4",{attrs:{id:"error-response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-26"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[e._v("#")]),e._v(" txinfoMultiple")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns the transaction-related information for the specified hash.")]),e._v(" "),a("h4",{attrs:{id:"request-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-36"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hashes")])])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of transaction hashes.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('data: {"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfoMultiple\n")])])]),a("h4",{attrs:{id:"response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-30"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")])])])]),e._v(" "),a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[a("em",[e._v("confirm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-38"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n { \n "hash1": {\n "blockid": "3123",\n "confirm": "5",\n },\n "hash2": {\n "blockid": "3124",\n "confirm": "3",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-27"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"request-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-37"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, then search in the first ecosystem page by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/page/validators_count/@2page_name\n")])])]),a("h4",{attrs:{id:"response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-31"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("validate_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the number of nodes to be validated for the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-39"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-28"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a tree of code JSON objects for the specified page or menu name, which is the result of processing by the template engine.")]),e._v(" "),a("h4",{attrs:{id:"request-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-38"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name or menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current ecosystem page or menu by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/page/default\n")])])]),a("h4",{attrs:{id:"response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-32"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("menu")]),e._v(" || "),a("em",[e._v("title")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The name of the menu to which the page belongs when requesting it.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("menutree")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The page's menu JSON object tree when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("title")]),e._v("--head for the menu "),a("em",[e._v("content/menu/...")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/menu/...")]),e._v(" Menu title when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page or menu JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-40"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-29"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v('Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.\nRequest """""""')]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current eco-page by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-33"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/source/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree of the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-41"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-30"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page cannot be found.")]),e._v(" "),a("p",[e._v("This request does not require login authorization. To receive the correct hash when making requests to other nodes, you must also pass\n"),a("em",[e._v("ecosystem,keyID,roleID,isMobile")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-39"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/hash/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the page with the ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("keyID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roleID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isMobile")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter identification of the mobile platform.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-34"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-42"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n} \n')])])]),a("h4",{attrs:{id:"error-response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-31"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")])]),e._v(" "),a("h3",{attrs:{id:"content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content"}},[e._v("#")]),e._v(" content")]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" is specified as\n"),a("code",[e._v("true or 1")]),e._v(", then this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-40"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("template")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page code.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[source]")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("true or 1")]),e._v(" is specified, the JSON object tree does not perform any functions and receives data.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content\n")])])]),a("h4",{attrs:{id:"response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-35"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-43"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-32"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[e._v("#")]),e._v(" maxblockid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the highest block ID on the current node.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-41"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/maxblockid\n")])])]),a("h4",{attrs:{id:"response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-36"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("max_block_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The highest block ID on the current node.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-44"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "max_block_id" : 341,\n}\n')])])]),a("h4",{attrs:{id:"error-response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-33"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"block-id"}},[e._v("block/{id}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified block ID.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-42"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/block/32\n")])])]),a("h4",{attrs:{id:"response-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-37"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("time")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tx_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of transactions in the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("rollbacks_hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("node_position")])]),e._v(" "),a("blockquote",[a("p",[e._v("The position of the block in the honor node list.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-45"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek=",\n "key_id": -118432674655542910,\n "time": 1551145365,\n "tx_count": 3,\n "rollbacks_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",\n "node_position": 0,\n} \n')])])]),a("h4",{attrs:{id:"error-response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-34"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the avatar of the user in the "),a("em",[e._v("member")]),e._v(" table (available without login).")]),e._v(" "),a("h4",{attrs:{id:"request-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-43"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("member")])]),e._v(" "),a("blockquote",[a("p",[e._v("The user's account address. (xxxx-... -xxxx)")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/avatar/1/1234-2134-... -4321\n")])])]),a("h4",{attrs:{id:"response-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-38"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The request header "),a("em",[e._v("Content-Type")]),e._v(" is the image type and the image data is returned in the response body.")]),e._v(" "),a("h4",{attrs:{id:"response-example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-46"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("200 (OK)\nContent-Type: image/png \n")])])]),a("h4",{attrs:{id:"error-response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-35"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")]),e._v(" "),a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the host address and port of centrifugo.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-44"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/config/centrifugo\n")])])]),a("h4",{attrs:{id:"response-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-39"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Response result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-36"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[e._v("#")]),e._v(" updnotificator")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/")]),e._v(" "),a("p",[e._v("(Discarded)")]),e._v(" "),a("p",[e._v("Sends all messages that have not yet been sent to the centrifugo notification service. Sends only messages for the specified ecosystem and members.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-45"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Member's account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/updnotificator\n")])])]),a("h4",{attrs:{id:"response-example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-47"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "result": true\n} \n')])])]),a("h3",{attrs:{id:"special-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-instructions"}},[e._v("#")]),e._v(" Special instructions")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("If the field has an omitempty attribute, it means that the field is an optional parameter")]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("If the interface with Authorization tag, that this interface requires login authorization, add Authorization to the request header, example.")]),e._v(" "),a("p",[e._v('key = Authorization\nvalue = "Bearer + '),a("a",{attrs:{href:"#login"}},[e._v("login token")]),e._v('"')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Authorization Bearer eyJhbGciOiJI..... kBZgGIlPhfXNZJ73RiZtM\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/76.cf457c63.js b/assets/js/57.df15705e.js similarity index 98% rename from assets/js/76.cf457c63.js rename to assets/js/57.df15705e.js index fbeb666..13577cf 100644 --- a/assets/js/76.cf457c63.js +++ b/assets/js/57.df15705e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{455:function(e,t,n){"use strict";n.r(t);var o=n(51),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration-file"}},[e._v("#")]),e._v(" Server Configuration File")]),e._v(" "),n("p",[e._v("In this section, we will introduce parameters in the server configuration file.")]),e._v(" "),n("h2",{attrs:{id:"introduction-to-the-server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#introduction-to-the-server-configuration-file"}},[e._v("#")]),e._v(" Introduction to the server configuration file")]),e._v(" "),n("p",[e._v("The server configuration file defines the node configuration of IBAX.")]),e._v(" "),n("h2",{attrs:{id:"location"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),n("p",[e._v("This file is located in the working directory of the server and is named "),n("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"sections"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sections"}},[e._v("#")]),e._v(" Sections")]),e._v(" "),n("p",[e._v("The configuration file consists the following sections:")]),e._v(" "),n("blockquote",[n("p",[e._v("general section")])]),e._v(" "),n("p",[e._v("It defines the working directory DataDir, the first block directory FirstBlockPath and other parameters.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TCPServer]")])]),e._v(" "),n("p",[e._v("It defines the TCP service parameters.")]),e._v(" "),n("p",[e._v("TCPServer is used for the network interaction between nodes.")]),e._v(" "),n("blockquote",[n("p",[e._v("[HTTP]")])]),e._v(" "),n("p",[e._v("It defines the HTTP service parameters.")]),e._v(" "),n("p",[e._v("HTTPServer provides RESTful APIs.")]),e._v(" "),n("blockquote",[n("p",[e._v("[DB]")])]),e._v(" "),n("p",[e._v("It defines parameters of the PostgreSQL node database.")]),e._v(" "),n("blockquote",[n("p",[e._v("[StatsD]")])]),e._v(" "),n("p",[e._v("It defines parameters of the node operation indicator collector StatsD.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Centrifugo]")])]),e._v(" "),n("p",[e._v("It defines parameters of the notification service Centrifugo.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Log]")])]),e._v(" "),n("p",[e._v("It defines parameters of the log service Log.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TokenMovement]")])]),e._v(" "),n("p",[e._v("It defines parameters of the token circulation service TokenMovement.")]),e._v(" "),n("h2",{attrs:{id:"an-example-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#an-example-configuration-file"}},[e._v("#")]),e._v(" An example configuration file")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{436:function(e,t,n){"use strict";n.r(t);var o=n(51),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration-file"}},[e._v("#")]),e._v(" Server Configuration File")]),e._v(" "),n("p",[e._v("In this section, we will introduce parameters in the server configuration file.")]),e._v(" "),n("h2",{attrs:{id:"introduction-to-the-server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#introduction-to-the-server-configuration-file"}},[e._v("#")]),e._v(" Introduction to the server configuration file")]),e._v(" "),n("p",[e._v("The server configuration file defines the node configuration of IBAX.")]),e._v(" "),n("h2",{attrs:{id:"location"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),n("p",[e._v("This file is located in the working directory of the server and is named "),n("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"sections"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sections"}},[e._v("#")]),e._v(" Sections")]),e._v(" "),n("p",[e._v("The configuration file consists the following sections:")]),e._v(" "),n("blockquote",[n("p",[e._v("general section")])]),e._v(" "),n("p",[e._v("It defines the working directory DataDir, the first block directory FirstBlockPath and other parameters.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TCPServer]")])]),e._v(" "),n("p",[e._v("It defines the TCP service parameters.")]),e._v(" "),n("p",[e._v("TCPServer is used for the network interaction between nodes.")]),e._v(" "),n("blockquote",[n("p",[e._v("[HTTP]")])]),e._v(" "),n("p",[e._v("It defines the HTTP service parameters.")]),e._v(" "),n("p",[e._v("HTTPServer provides RESTful APIs.")]),e._v(" "),n("blockquote",[n("p",[e._v("[DB]")])]),e._v(" "),n("p",[e._v("It defines parameters of the PostgreSQL node database.")]),e._v(" "),n("blockquote",[n("p",[e._v("[StatsD]")])]),e._v(" "),n("p",[e._v("It defines parameters of the node operation indicator collector StatsD.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Centrifugo]")])]),e._v(" "),n("p",[e._v("It defines parameters of the notification service Centrifugo.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Log]")])]),e._v(" "),n("p",[e._v("It defines parameters of the log service Log.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TokenMovement]")])]),e._v(" "),n("p",[e._v("It defines parameters of the token circulation service TokenMovement.")]),e._v(" "),n("h2",{attrs:{id:"an-example-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#an-example-configuration-file"}},[e._v("#")]),e._v(" An example configuration file")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/58.71b16290.js b/assets/js/58.e749d9b2.js similarity index 98% rename from assets/js/58.71b16290.js rename to assets/js/58.e749d9b2.js index e4a5730..062b9c5 100644 --- a/assets/js/58.71b16290.js +++ b/assets/js/58.e749d9b2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{438:function(e,s,t){"use strict";t.r(s);var a=t(51),o=Object(a.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"synchronized-monitoring-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#synchronized-monitoring-tool"}},[e._v("#")]),e._v(" Synchronized Monitoring Tool")]),e._v(" "),t("p",[e._v("Desync_monitor is a special tool that can be used to verify whether the database on the specified node has been synchronized.")]),e._v(" "),t("p",[e._v("The tool can be used as a daemon or can be started to perform a one-time check.")]),e._v(" "),t("p",[e._v("The operating principle of the tool is based on the following:")]),e._v(" "),t("p",[e._v("1.Each block contains the hash of all changes of all transactions, request the specified node to provide its last block ID;\n2.Then request a block with this ID from all nodes and compare the above hashes;\n3.If the hashes are different, a synchronization error message will be sent to the email address specified in the command.")]),e._v(" "),t("h2",{attrs:{id:"location"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),t("p",[e._v("The tool is located in the "),t("code",[e._v("tools/desync_monitor/")]),e._v(" directory.")]),e._v(" "),t("h2",{attrs:{id:"command-prompt-flags"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#command-prompt-flags"}},[e._v("#")]),e._v(" Command prompt flags")]),e._v(" "),t("p",[e._v("The following flags can be used from the command prompt:")]),e._v(" "),t("ul",[t("li",[e._v("confPath - Path of the configuration file. The default file name is "),t("code",[e._v("config.toml")]),e._v(";")]),e._v(" "),t("li",[e._v("nodesList - Node list of the requested block, separated by commas. The default is "),t("code",[e._v("127.0.0.1:7079")]),e._v(";")]),e._v(" "),t("li",[e._v("daemonMode - Started as a daemon and should be used when authentication is required every N seconds. This flag is set to "),t("code",[e._v("false")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("queryingPeriod - If the tool is started as a daemon, this parameter sets the time interval (in seconds) between checks, "),t("code",[e._v("1")]),e._v(" second by default.")]),e._v(" "),t("li",[e._v("alertMessageTo – The email address to which synchronization warning errors will be sent.\n"),t("ul",[t("li",[e._v("alertMessageSubj - Message subject in the warning message, the "),t("code",[e._v("node synchronization")]),e._v(" problem by default;")]),e._v(" "),t("li",[e._v("alertMessageFrom - Address where the message was sent.")]),e._v(" "),t("li",[e._v("smtpHost - SMTP server host, used to send emails, the "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPort - SMTP server port, used to send email messages, "),t("code",[e._v("25")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpUsername - SMTP server username, "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPassword - SMTP server password, "),t("code",[e._v('""')]),e._v(" by default.")])])])]),e._v(" "),t("h2",{attrs:{id:"configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuration"}},[e._v("#")]),e._v(" Configuration")]),e._v(" "),t("p",[e._v("The tool uses a configuration file in toml format.")]),e._v(" "),t("p",[e._v("By default, it will look for the config.toml file in the folder where to start up the binary file.")]),e._v(" "),t("p",[e._v("The file path can be changed with the configPath flag.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('nodes_list = ["http://127.0.0.1:7079", "http://127.0.0.1:7002"]\n\n[daemon]\ndaemon = false\nquerying_period = 1\n\n[alert_message]\nto = ""\nsubject = "problem with xxx nodes"\nfrom = ""\n\n[smtp]\nhost = ""\nport = 25\nusername = ""\npassword = ""\n')])])]),t("h3",{attrs:{id:"nodes-list"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nodes-list"}},[e._v("#")]),e._v(" nodes_list")]),e._v(" "),t("ul",[t("li",[e._v("nodes_list - List of nodes (hosts) requesting information.")])]),e._v(" "),t("h3",{attrs:{id:"daemon"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" [daemon]")]),e._v(" "),t("p",[e._v("Configuration of the daemon mode.")]),e._v(" "),t("ul",[t("li",[e._v("daemon_mode – A tool works as a daemon and performs synchronization checks.")]),e._v(" "),t("li",[e._v("querying_period - Time interval between synchronization checks.")])]),e._v(" "),t("h3",{attrs:{id:"alert-message"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#alert-message"}},[e._v("#")]),e._v(" [alert_message]")]),e._v(" "),t("p",[e._v("Warning message parameters.")]),e._v(" "),t("ul",[t("li",[e._v("to - recipient's e-mail of synchronization error warning messages;")]),e._v(" "),t("li",[e._v("subject - message subject;")]),e._v(" "),t("li",[e._v("from - sender's e-mail.")])]),e._v(" "),t("h3",{attrs:{id:"smtp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#smtp"}},[e._v("#")]),e._v(" [smtp]")]),e._v(" "),t("p",[e._v("Simple Mail Transfer Protocol (SMTP) server parameters, used to send synchronization error messages.")]),e._v(" "),t("ul",[t("li",[e._v("host – SMTP server hose;")]),e._v(" "),t("li",[e._v("port –SMTP server port;")]),e._v(" "),t("li",[e._v("username – SMTP server user name;")]),e._v(" "),t("li",[e._v("password –SMTP server password;")])])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{437:function(e,s,t){"use strict";t.r(s);var a=t(51),o=Object(a.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"synchronized-monitoring-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#synchronized-monitoring-tool"}},[e._v("#")]),e._v(" Synchronized Monitoring Tool")]),e._v(" "),t("p",[e._v("Desync_monitor is a special tool that can be used to verify whether the database on the specified node has been synchronized.")]),e._v(" "),t("p",[e._v("The tool can be used as a daemon or can be started to perform a one-time check.")]),e._v(" "),t("p",[e._v("The operating principle of the tool is based on the following:")]),e._v(" "),t("p",[e._v("1.Each block contains the hash of all changes of all transactions, request the specified node to provide its last block ID;\n2.Then request a block with this ID from all nodes and compare the above hashes;\n3.If the hashes are different, a synchronization error message will be sent to the email address specified in the command.")]),e._v(" "),t("h2",{attrs:{id:"location"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),t("p",[e._v("The tool is located in the "),t("code",[e._v("tools/desync_monitor/")]),e._v(" directory.")]),e._v(" "),t("h2",{attrs:{id:"command-prompt-flags"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#command-prompt-flags"}},[e._v("#")]),e._v(" Command prompt flags")]),e._v(" "),t("p",[e._v("The following flags can be used from the command prompt:")]),e._v(" "),t("ul",[t("li",[e._v("confPath - Path of the configuration file. The default file name is "),t("code",[e._v("config.toml")]),e._v(";")]),e._v(" "),t("li",[e._v("nodesList - Node list of the requested block, separated by commas. The default is "),t("code",[e._v("127.0.0.1:7079")]),e._v(";")]),e._v(" "),t("li",[e._v("daemonMode - Started as a daemon and should be used when authentication is required every N seconds. This flag is set to "),t("code",[e._v("false")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("queryingPeriod - If the tool is started as a daemon, this parameter sets the time interval (in seconds) between checks, "),t("code",[e._v("1")]),e._v(" second by default.")]),e._v(" "),t("li",[e._v("alertMessageTo – The email address to which synchronization warning errors will be sent.\n"),t("ul",[t("li",[e._v("alertMessageSubj - Message subject in the warning message, the "),t("code",[e._v("node synchronization")]),e._v(" problem by default;")]),e._v(" "),t("li",[e._v("alertMessageFrom - Address where the message was sent.")]),e._v(" "),t("li",[e._v("smtpHost - SMTP server host, used to send emails, the "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPort - SMTP server port, used to send email messages, "),t("code",[e._v("25")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpUsername - SMTP server username, "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPassword - SMTP server password, "),t("code",[e._v('""')]),e._v(" by default.")])])])]),e._v(" "),t("h2",{attrs:{id:"configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuration"}},[e._v("#")]),e._v(" Configuration")]),e._v(" "),t("p",[e._v("The tool uses a configuration file in toml format.")]),e._v(" "),t("p",[e._v("By default, it will look for the config.toml file in the folder where to start up the binary file.")]),e._v(" "),t("p",[e._v("The file path can be changed with the configPath flag.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('nodes_list = ["http://127.0.0.1:7079", "http://127.0.0.1:7002"]\n\n[daemon]\ndaemon = false\nquerying_period = 1\n\n[alert_message]\nto = ""\nsubject = "problem with xxx nodes"\nfrom = ""\n\n[smtp]\nhost = ""\nport = 25\nusername = ""\npassword = ""\n')])])]),t("h3",{attrs:{id:"nodes-list"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nodes-list"}},[e._v("#")]),e._v(" nodes_list")]),e._v(" "),t("ul",[t("li",[e._v("nodes_list - List of nodes (hosts) requesting information.")])]),e._v(" "),t("h3",{attrs:{id:"daemon"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" [daemon]")]),e._v(" "),t("p",[e._v("Configuration of the daemon mode.")]),e._v(" "),t("ul",[t("li",[e._v("daemon_mode – A tool works as a daemon and performs synchronization checks.")]),e._v(" "),t("li",[e._v("querying_period - Time interval between synchronization checks.")])]),e._v(" "),t("h3",{attrs:{id:"alert-message"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#alert-message"}},[e._v("#")]),e._v(" [alert_message]")]),e._v(" "),t("p",[e._v("Warning message parameters.")]),e._v(" "),t("ul",[t("li",[e._v("to - recipient's e-mail of synchronization error warning messages;")]),e._v(" "),t("li",[e._v("subject - message subject;")]),e._v(" "),t("li",[e._v("from - sender's e-mail.")])]),e._v(" "),t("h3",{attrs:{id:"smtp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#smtp"}},[e._v("#")]),e._v(" [smtp]")]),e._v(" "),t("p",[e._v("Simple Mail Transfer Protocol (SMTP) server parameters, used to send synchronization error messages.")]),e._v(" "),t("ul",[t("li",[e._v("host – SMTP server hose;")]),e._v(" "),t("li",[e._v("port –SMTP server port;")]),e._v(" "),t("li",[e._v("username – SMTP server user name;")]),e._v(" "),t("li",[e._v("password –SMTP server password;")])])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/59.75f73182.js b/assets/js/59.b36e04a6.js similarity index 99% rename from assets/js/59.75f73182.js rename to assets/js/59.b36e04a6.js index c5adee9..a920340 100644 --- a/assets/js/59.75f73182.js +++ b/assets/js/59.b36e04a6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{441:function(e,t,a){"use strict";a.r(t);var n=a(51),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"json-rpc-application-programming-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-application-programming-interface"}},[e._v("#")]),e._v(" JSON-RPC Application Programming Interface")]),e._v(" "),a("p",[e._v("In order for a software application to interact with the IBAX blockchain (fetch block data or send transactions to the network), it must be connected to an IBAX network node.")]),e._v(" "),a("p",[e._v("Due to the generality and extensibility of the original REST API interface, it will become more and more complex with more and more interfaces and different clients. We realize the importance of interface unification to ensure that all clients can use the same set of specifications, regardless of the specific node and client implementation.")]),e._v(" "),a("p",[e._v("JSON-RPC is a stateless, lightweight remote procedure call (RPC) protocol. It defines a number of data structures and their processing rules. It is transport independent, as these concepts can be used in the same process, via an interface, hypertext transfer protocol, or in many different messaging environments. It uses JSON (RFC 4627) as the data format.")]),e._v(" "),a("p",[e._v("JSON-RPC is compatible with most of the REST API interfaces, retaining the original REST API interface, the client using the REST API interface can easily transfer to the JSON-RPC interface, part of the interface")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/fr/reference/api2.html#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/fr/reference/api2.html#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/fr/reference/api2.html#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])],1)]),e._v(" "),a("p",[e._v("Available through the REST API interface.")]),e._v(" "),a("h2",{attrs:{id:"client-side-implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-side-implementation"}},[e._v("#")]),e._v(" Client-side implementation")]),e._v(" "),a("p",[e._v("Each client can use a different programming language when implementing the JSON-RPC specification, and you can use the\n"),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("GO-SDK"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"curl-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curl-example"}},[e._v("#")]),e._v(" Curl example")]),e._v(" "),a("p",[e._v("The following provides examples of using the JSON RPC API by making curl requests to IBAX nodes. Each example includes a description of the particular endpoint, its parameters, the return type, and a working example of how it should be used.")]),e._v(" "),a("p",[e._v('Curl requests may return an error message related to the content type. This is because the --data option sets the content type to application/x-www-form-urlencoded. If your request has this problem, set the header manually by placing -H "Content-Type: application/json" at the beginning of the call. These examples also do not include the URL/Internet Protocol and port combination that must be the last parameter of the curl (e.g. 127.0.0.1:7079 A full curl request with this additional data takes the form of')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","params":[],"id":1}\' http://127.0.0.1:7079\t\n')])])]),a("h2",{attrs:{id:"covenant"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#covenant"}},[e._v("#")]),e._v(" Covenant")]),e._v(" "),a("h3",{attrs:{id:"hex"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hex"}},[e._v("#")]),e._v(" Hex")]),e._v(" "),a("p",[a("strong",[e._v("Hexadecimal code")])]),e._v(" "),a("p",[e._v("When encoding byte arrays, hashes, and bytecode arrays: the encoding is hexadecimal, two hexadecimal digits per byte.")]),e._v(" "),a("h3",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("Content-Type: application/json")])]),e._v(" "),a("h3",{attrs:{id:"special-markers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-markers"}},[e._v("#")]),e._v(" Special markers")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("This field is an optional parameter.")]),e._v(" "),a("p",[e._v("If there are multiple "),a("code",[e._v("Omitempty")]),e._v(" fields in a row,\nBut only want to pass the value of a certain field, then you need to set the unwanted field to null (the field type null value), Example:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Name")]),e._v(" "),a("li",[a("strong",[e._v("column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Filter column names")])]),e._v(" "),a("p",[e._v("If only the name value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0, "testname"]')]),e._v(" - "),a("em",[e._v("Number")]),e._v(" null value is 0")]),e._v(" "),a("p",[e._v("If only the column value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0,"", "title,page"]')]),e._v(" - "),a("em",[e._v("String")]),e._v(' empty value for ""')]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("Authorization header, add Authorization to the request header, example:")]),e._v(" "),a("p",[a("strong",[e._v("name")]),e._v(" : Authorization "),a("strong",[e._v("value")]),e._v(" : Bearer +"),a("a",{attrs:{href:"#ibax-login"}},[e._v("login token")])]),e._v(" "),a("p",[e._v("Example:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","params":["@1TokensSend"],"id":1}\' http://127.0.0.1:7079\n\n')])])]),a("h4",{attrs:{id:"accountorkeyid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#accountorkeyid"}},[e._v("#")]),e._v(" AccountOrKeyId")]),e._v(" "),a("p",[e._v("For the account address parameter, you can use two formats of addresses, for example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v(" - Account Address "),a("code",[e._v('"XXXX-XXXX-XXXX-XXXX-XXXX"')]),e._v(" or Account Id "),a("code",[e._v('"64842...538120"')]),e._v(' .538120"`')])])]),e._v(" "),a("li",[a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Address object")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Account Id, Example: "),a("code",[e._v('{"key_id":-64842\t38120}')])]),e._v(" "),a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account address, Example: "),a("code",[e._v('{"account": "1196-... -\t-... -3496"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Account Id is preferred when both account address and account Id exist")]),e._v(".")])])]),e._v(" "),a("h4",{attrs:{id:"blockorhash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockorhash"}},[e._v("#")]),e._v(" BlockOrHash")]),e._v(" "),a("p",[e._v("Block height or block HASH, example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v("\t-\tBlock\tHeight\t"),a("code",[e._v('"100"')]),e._v("\tor\tBlock\tHASH"),a("code",[e._v('"4663aa47...a60753c18d9ba9cb4"')])])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - Block information object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height, example: "),a("code",[e._v('{"id":2}')])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v("\t-\t"),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v("\tString")]),e._v("\t-\tBlock\tHASH,\tExample:\t"),a("code",[e._v('{"hash": "d36b8996c\tc616d3043a0d02a0f59"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Block Height and Block HASH can only choose one")]),e._v(".")])])])])]),e._v(" "),a("h3",{attrs:{id:"batch-requests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#batch-requests"}},[e._v("#")]),e._v(" Batch requests")]),e._v(" "),a("p",[e._v("This feature can be used to reduce network latency, especially when acquiring a large number of largely independent data objects.")]),e._v(" "),a("p",[e._v("The following is an example of obtaining the highest block and total number of transactions:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'[{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]},{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":2,"params":[]}]\' http://127.0.0.1:7079\n\n //Response\n [\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149100\n },\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": 797\n }\n ]\n')])])]),a("h3",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Returns status "),a("code",[e._v("200")]),e._v(" in case the request is executed successfully.")]),e._v(" "),a("p",[e._v("If an error occurs, a JSON object with the following fields will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("jsonrpc")]),e._v(" "),a("p",[e._v("Error identifier.")])]),e._v(" "),a("li",[a("p",[e._v("id")]),e._v(" "),a("p",[e._v("Error text message.")])]),e._v(" "),a("li",[a("p",[e._v("error")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("code")]),e._v(" "),a("p",[e._v("Response Status Code")])]),e._v(" "),a("li",[a("p",[e._v("message")]),e._v(" "),a("p",[e._v("Response Status Description")])])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "jsonrpc": "2.0",\n "id": 1,\n "error": {\n "code": -32014,\n "message": "Unauthorized"\n }\n}\n')])])]),a("h2",{attrs:{id:"json-rpc-namespaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-namespaces"}},[e._v("#")]),e._v(" JSON-RPC Namespaces")]),e._v(" "),a("h3",{attrs:{id:"ibax-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-namespace"}},[e._v("#")]),e._v(" ibax Namespace")]),e._v(" "),a("h4",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getuid"}},[e._v("ibax.getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-login"}},[e._v("ibax.login")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getauthstatus"}},[e._v("ibax.getAuthStatus")])])]),e._v(" "),a("h4",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" server-side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getversion"}},[e._v("ibax.getVersion")])])]),e._v(" "),a("h4",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getbalance"}},[e._v("ibax.getBalance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockstxinfo"}},[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblocks"}},[e._v("ibax.detailedBlocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyinfo"}},[e._v("ibax.getKeyInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblock"}},[e._v("ibax.detailedBlock")])])]),e._v(" "),a("h4",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-maxblockid"}},[e._v("ibax.maxBlockId")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyscount"}},[e._v("ibax.getKeysCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettxcount"}},[e._v("ibax.getTxCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettransactioncount"}},[e._v("ibax.getTransactionCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockscountbynode"}},[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-honornodescount"}},[e._v("ibax.honorNodesCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemcount"}},[e._v("ibax.getEcosystemCount")])])]),e._v(" "),a("h4",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-ecosysteminfo"}},[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-appparams"}},[e._v("ibax.appParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemparams"}},[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettablecount"}},[e._v("ibax.getTableCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettable"}},[e._v("ibax.getTable")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getlist"}},[e._v("ibax.getList")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsections"}},[e._v("ibax.getSections")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getrow"}},[e._v("ibax.getRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-systemparams"}},[e._v("ibax.systemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-history"}},[e._v("ibax.history")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagerow"}},[e._v("ibax.getPageRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenurow"}},[e._v("ibax.getMenuRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsnippetrow"}},[e._v("ibax.getSnippetRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getappcontent"}},[e._v("ibax.getAppContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmember"}},[e._v("ibax.getMember")])])]),e._v(" "),a("h4",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getcontracts"}},[e._v("ibax.getContracts")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-sendtx"}},[e._v("ibax.sendTx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfo"}},[e._v("ibax.txInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfomultiple"}},[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpage"}},[e._v("ibax.getPage")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenu"}},[e._v("ibax.getMenu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsource"}},[e._v("ibax.getSource")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagehash"}},[e._v("ibax.getPageHash")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontent"}},[e._v("ibax.getContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockinfo"}},[e._v("ibax.getBlockInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getconfig"}},[e._v("ibax.getConfig")])])]),e._v(" "),a("h3",{attrs:{id:"net-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-namespace"}},[e._v("#")]),e._v(" net Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#net-getnetwork"}},[e._v("net.getNetwork")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#net-status"}},[e._v("net.status")])])]),e._v(" "),a("h3",{attrs:{id:"rpc-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-namespace"}},[e._v("#")]),e._v(" rpc Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rpc-modules"}},[e._v("rpc.modules")])])]),e._v(" "),a("h3",{attrs:{id:"admin-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-namespace"}},[e._v("#")]),e._v(" admin Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#admin-startjsonrpc"}},[e._v("admin.startJsonRpc")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#admin-stopjsonrpc"}},[e._v("admin.stopJsonRpc")])])]),e._v(" "),a("h3",{attrs:{id:"debug-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-namespace"}},[e._v("#")]),e._v(" debug Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#debug-getnodebanstat"}},[e._v("debug.getNodeBanStat")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#debug-getmemstat"}},[e._v("debug.getMemStat")])])]),e._v(" "),a("h2",{attrs:{id:"json-rpc-interface-methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-interface-methods"}},[e._v("#")]),e._v(" JSON-RPC Interface Methods")]),e._v(" "),a("h3",{attrs:{id:"ibax-getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getuid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getUid")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Generate a temporary JWT token,\twhich needs to be passed to "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(" when calling "),a("strong",[a("a",{attrs:{href:"#ibax-login"}},[e._v("login")])])]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("uid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The signature number.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - temporary token passed during login (temporary token has a 5 second lifespan).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("cryptoer")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Elliptic curve algorithm.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hasher")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - hash algorithm.")])])]),e._v(" "),a("p",[e._v("In the case that no authorization is required(the request contains "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(", the following message will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Expiration time.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])])]),e._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response1\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "uid": "5823391950439015186",\n "token": "ey....",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response2\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "expire": "7h59m49.5361126s",\n "ecosystem_id": "1",\n "key_id": "6667782293976713160",\n "address": "0666-7782-2939-7671-3160",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-login"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.login")])]),e._v(" "),a("p",[e._v("User authentication. "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"#ibax-getuid"}},[a("strong",[e._v("ibax.getUid")])]),e._v(" command should be called first in order to receive the unique value and sign it.\nThe temporary JWT token for getuid needs to be passed in the request header.\nIf the request is successful, the token received in the response is contained in "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication call object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID. if not specified, defaults to the first ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The lifecycle of the JWT token in seconds, default is 28800,8 hours.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Hexadecimal account public key.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -")]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("signature")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nUse the private key to sign the uid received by getuid.")]),e._v(" "),a("p",[e._v("Signature data content:LOGIN+{$network_id}+uid")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID, default role 0")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-2"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - JWT token.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("notify_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The notification ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isnode")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isowner")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the creator of this ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("clb")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the logged-in ecosystem is a CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("timestamp")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - current timestamp")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" list of roles, if there are no roles, the field is nil")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID")]),e._v(" "),a("li",[a("strong",[e._v("role_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Role name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.login","params":[{"ecosystem_id":1,"public_key":"04....","signature","46...","role_id":0}],"id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "token": "ey...",\n "ecosystem_id": "1",\n "key_id": "6660819716178795186",\n "account": "0666-xxxx-xxxx-xxxx-5186",\n "notify_key": "ey....",\n "isnode": false,\n "isowner": false,\n "clb": false,\n "timestamp": "1678336163",\n "roles": nil //[{"role_id": 1, "role_name": "Developer"},{"role_id": 2, "role_name": "DevelopGovernancerer"}]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getauthstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getauthstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAuthStatus")])]),e._v(" "),a("p",[e._v("User authentication status\n"),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-3"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication status object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("active")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - The current user authentication status. Values: "),a("code",[e._v("true,false")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("exp")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Token validity cutoff timestamp")])])]),e._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getAuthStatus","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "active": true,\n "exp": 1678354136\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getversion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getversion"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getVersion")])]),e._v(" "),a("p",[e._v("Returns the current server version.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-4"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("vesion")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - version number ("),a("code",[e._v("big Version")]),e._v(" + "),a("code",[e._v("branch name")]),e._v(" + "),a("code",[e._v("git commit")]),e._v(" + "),a("code",[e._v("time")]),e._v(" + "),a("code",[e._v("node status")]),e._v(")")])]),e._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getVersion","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "1.3.0 branch.main commit.b57d4194 time.2023-03-08-09:30:29(UTC) node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"ibax-getbalance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getbalance"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBalance")])]),e._v(" "),a("p",[e._v("Get the account address balance.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("key_id or account")]),e._v(" - "),a("a",{attrs:{href:"#accountorkeyid"}},[a("em",[e._v("AccountOrKeyId")])]),e._v(" - account address "),a("code",[e._v("XXXX- XXXX-XXXX-XXXX-XXXX")]),e._v(" or account ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default 1")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-5"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the balance object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the minimum unit of the contract account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("total")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the total balance of the minimum unit account (amount + utxo).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("utxo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Minimum unit UTXO account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")])])]),e._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["648...8120"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["1196-...-...-...-3496",1]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":[{"key_id":{$key_id}},1]}\' http://127.0.0.1:7079 //keyId or account\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "amount": "9915319240441612",\n "digits": 12,\n "total": "9915319240441612",\n "utxo": "0",\n "token_symbol": "IBXC"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockstxinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockstxinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("p",[e._v("Returns a list containing additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the starting block height to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-6"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block information object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height")])]),e._v(" "),a("li",[a("p",[e._v("List of transactions in the block and additional information for each transaction:")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" -\nFor the first block, it is the account address of the first block that signed the transaction.")]),e._v(" "),a("p",[e._v("For all other blocks, it is the address of the account that signed the transaction.")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksTxInfo","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": [ //block_id\n {\n "hash": "uXSaSrMWlbHpNlu049J5BDypC6MzBQ0/5VEfGQf+5aQ=",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160\n }\n ],\n "2": [ //block_id\n {\n "hash": "r8U9IKjtZ5Be5D4ak3zxLlDwn36CTdfIAsVvQhx7P3w=",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblocks"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlocks")])]),e._v(" "),a("p",[e._v("Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the starting block to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-7"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height\n"),a("ul",[a("li",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")]),e._v(" "),a("li",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")]),e._v(" "),a("li",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")]),e._v(" "),a("li",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")]),e._v(" "),a("li",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlocks","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": { //block id\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f73497ede8f22d678bc4be6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "36373332663064383331353264316333653639346431656436383734373634363463616363616564636632353232646335633736643066623737343931366363",\n "bin_data": "Cp4BCAEQppm...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n },\n "2": { //block id\n "header": {\n "block_id": 2,\n "time": 1676536235,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "dd13a30661d35e01df82027a6e6607eb47ee00765d69767dbb99e151676c2c96",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676536235,\n "tx_count": 1,\n "size": "1.53KiB",\n "rollbacks_hash": "9041312d69e6bcd37c91a2bfa066abaeb53b8398708937a618a89960bfadab3d",\n "merkle_root": "65366537383931353662613230356565396466353061316538656538643636323332316636616265623764633539616166346635343030383135386538643130",\n "bin_data": "Cp4BCAIQq9O...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "afc53d20a8ed67905ee43e1a937cf12e50f09f7e824dd7c802c56f421c7b3f7c",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160,\n "time": 1676536233945,\n "type": 3,\n "size": "390.00B"\n }\n ]\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeyInfo")])]),e._v(" "),a("p",[e._v("Returns a list of ecosystems with roles that are registered to the specified address.")]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")])]),e._v(" "),a("h4",{attrs:{id:"return-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-8"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Specify the address eco-list object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystems")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Eco-List\n"),a("ul",[a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - list of roles.\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - role id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Character name")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeyInfo","id":1,"params":["0666-XXXX-XXXX-XXXX-5186"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "account": "0666-XXXX-XXXX-XXXX-5186",\n "ecosystems": [\n {\n "ecosystem": "1",\n "name": "platform ecosystem",\n "digits": 12,\n "roles": [\n {\n "id": "1",\n "name": "Developer"\n },\n {\n "id": "2",\n "name": "Governancer"\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblock"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlock")])]),e._v(" "),a("p",[e._v("Returns a detailed list of additional information about the transactions in the block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block or Hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - Block Height or Block Hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-9"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["1"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91"]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":[{"id":1}]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "3637333266306438333135...623737343931366363",\n "bin_data": "Cp4BCAEQppm2nwYgyI/8gLSVrsRcMkAFGTK6nxD86hfhgQX0dWzO8aYZExDN9UPm8sKkqeUbwrNliYuCJHvvdX+txINnM7+gDqtMF/1K43kc0gYC0u8uOiANfVG0wUusv0XYEvc0l+3o8i1ni8S+bmhIGT87cmKskUIgBEhSsqZwreVAfnj7KGPFHen8uWVCoHGG/jrtpruKEW1IA1ABYAESRDogQBBdW8EBBcF/1yuTqPczaeLubu5NRxS3v3vzwvFW5gFCIARIUrKmcK3lQH54+yhjxR3p/LllQqBxhv467aa7ihFtGkA2NzMyZjBkODMxNTJkMWMzZTY5NGQxZWQ2ODc0NzY0NjRjYWNjYWVkY2YyNTIyZGM1Yzc2ZDBmYjc3NDkxNmNjKugCeJxibFvmk5+enlp0YK1LUkhRYl5xYnJJZn7egSUuiSWJ7Uu9Uys9XS7HdOxY7SDPfmJJSGZu6mUGBgaG5Lc9y1YGlCblZCZ7p1YecejvOPzyp63tWeYpWS+nxBTv3biTOUTqg7vfgedPuXdbnjsmYX49a9mXA025NT4TbjQ65bQwbloQcjbQRG3ZudjjUxuL1/rlp6QimTfLcZNH0o/bie/SfiskTNm1tPrfmrrlbdfMklamXHR53XpxwSODSb1hX3Kvyb1fU+awbZVG8yaXmGqtO3wR8jPsP6y7vTW4JL/AL7WkPL8o2zm1qMSpNC8lJ/XAkpDU4hKwBxgYGBg3BhRlliWWpDrl5CdnJ2ckZuadh0oxrAT5tLgkMbfgMgMDY1v42yy2ZSEVHonFGUcUdpbM8tosNnXjS7PoLY8vVbLYrORebMzKa/80UF6S/d/TJcsDEitz8hNTjvwaueEHCAAA//+pZRGv",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-maxblockid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.maxBlockId")])]),e._v(" "),a("p",[e._v("Get the highest block ID on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-10"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block Id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The highest block on the current node")])]),e._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 774\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeysCount")])]),e._v(" "),a("p",[e._v("Get the total number of addresses on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-11"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of addresses")])]),e._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeysCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 11\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettxcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettxcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTxCount")])]),e._v(" "),a("p",[e._v("Get the total number of transactions in the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-12"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of transactions")])]),e._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149068\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettransactioncount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettransactioncount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTransactionCount")])]),e._v(" "),a("p",[e._v("Get the number of block transactions")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block or hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - block height or block hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-13"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("h4",{attrs:{id:"example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTransactionCount","id":1,"params":["efc386f7573269610a34af9cc722f775cca8183ccaa0ed7a96db61ef0bde6d1c"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 337\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockscountbynode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockscountbynode"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("p",[e._v("Get the number of node location packing blocks")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("nodePosition")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensusMode")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Consensus Mode, parameters (1: Creator Management Mode 2: DAO Governance Mode)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-14"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the node subscript packing number object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("total_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("partial_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of node subscript packing blocks")])])]),e._v(" "),a("h4",{attrs:{id:"example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksCountByNode","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "total_count": 774,\n "partial_count": 774\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-honornodescount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-honornodescount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.honorNodesCount")])]),e._v(" "),a("p",[e._v("Get number of honor nodes")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-15"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of nodes")])]),e._v(" "),a("h4",{attrs:{id:"example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.honorNodesCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 1\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemCount")])]),e._v(" "),a("p",[e._v("Number of ecosystem acquisitions")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-16"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecological number")])]),e._v(" "),a("h4",{attrs:{id:"example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 2\n }\n')])])]),a("h3",{attrs:{id:"ibax-ecosysteminfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ecosysteminfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("p",[e._v("Access to ecological information")]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ecosystem id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecological ID")])]),e._v(" "),a("h4",{attrs:{id:"return-value-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-17"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Eco-ID")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecological name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")]),e._v(" "),a("li",[a("strong",[e._v("token_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the token")]),e._v(" "),a("li",[a("strong",[e._v("total_amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the number of issues (first issue, or "),a("code",[e._v('"0"')]),e._v(" if not issued)")]),e._v(" "),a("li",[a("strong",[e._v("is_withdraw")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - destructible "),a("code",[e._v("true:destructible false:undestructible")])]),e._v(" "),a("li",[a("strong",[e._v("withdraw")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - amount of destruction ("),a("code",[e._v('"0"')]),e._v(" if not destructible, or not destroyed)")]),e._v(" "),a("li",[a("strong",[e._v("is_emission")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - may be incremented "),a("code",[e._v("true:may be incremented false:may not be incremented")])]),e._v(" "),a("li",[a("strong",[e._v("emission")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - increment ("),a("code",[e._v('"0"')]),e._v(" if no increment is available, or if no increment is available)")]),e._v(" "),a("li",[a("strong",[e._v("introduction")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco Introduction")]),e._v(" "),a("li",[a("strong",[e._v("logo")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoLogo Id (corresponds to Binary table id), available through the RESTFUL API")]),e._v(" "),a("li",[a("strong",[e._v("creator")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco-creator")])]),e._v(" "),a("h4",{attrs:{id:"example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.ecosystemInfo","id":1,"params":[1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "id": 5,\n "name": "test name",\n "digits": 6,\n "token_symbol": "test",\n "token_name": "test Coin",\n "total_amount": "10000",\n "is_withdraw": true,\n "withdraw": "100000000000900000",\n "is_emission": true,\n "emission": "100000000001000000",\n "introduction": "this is a test introduction",\n "logo": 6,\n "creator": "0666-0819-7161-7879-5186"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-appparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-appparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.appParams")])]),e._v(" "),a("p",[e._v("Returns a list of application parameters in the current or specified ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("appid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the application ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID;")]),e._v(" "),a("p",[e._v("If unspecified or 0, the parameters of the current ecosystem will be returned.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Filter the application parameter names.")]),e._v(" "),a("p",[e._v("A comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-18"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Array")]),e._v(" - List of application parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application ID")]),e._v(" "),a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Each element of the array contains the following parameters\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - parameter ID, unique;")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the parameter;")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the parameter value;")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.appParams","id":1,"params":[1,1,"role_developer,role_governancer"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "app_id": 1,\n "list": [\n {\n "id": "4",\n "name": "role_developer",\n "value": "1",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n },\n {\n "id": "5",\n "name": "role_governancer",\n "value": "2",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("p",[e._v("Get a list of ecosystem parameters")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID")]),e._v(" "),a("p",[e._v("If 0 or no such parameter, default: current ecid.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The name of the filter parameter.")]),e._v(" "),a("p",[e._v("Comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")])]),e._v(" "),a("p",[e._v("The "),a("em",[e._v("offset")]),e._v(" and "),a("em",[e._v("limit")]),e._v(" parameters are invalid when there is a filter parameter.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-19"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The id of the parameter, unique.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemParams","id":1,"params":[0,"changing_app_params,changing_language"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "9",\n "name": "changing_app_params",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n },\n {\n "id": "4",\n "name": "changing_language",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettablecount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettablecount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTableCount")])]),e._v(" "),a("p",[e._v("Returns a list of data tables for the current ecosystem.")]),e._v(" "),a("p",[e._v("Offset and number of entries can be set")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-20"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The total number of sheets of the current ecological data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table without prefix.")]),e._v(" "),a("li",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The number of entries in the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTableCount","id":1,"params":[0,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 32,\n "list": [\n {\n "name": "app_params",\n "count": "41"\n },\n {\n "name": "applications",\n "count": "7"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettable"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTable")])]),e._v(" "),a("p",[e._v("Returns information about the current ecosystem request data table.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Data table name")])]),e._v(" "),a("h4",{attrs:{id:"return-value-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-21"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("insert")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add permission to add an entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("new_column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add new field permission.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("update")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change entry permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The application id.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Conditions for changing permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of information related to data table fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the field.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The field data type.")]),e._v(" "),a("li",[a("strong",[e._v("perm")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Permission to change the value of this field.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTable","id":1,"params":["app_params"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "name": "app_params",\n "insert": "ContractConditions(\\"DeveloperCondition\\")",\n "new_column": "ContractConditions(\\"@1MainCondition\\")",\n "update": "ContractAccess(\\"@1EditAppParam\\")",\n "conditions": "ContractConditions(\\"@1MainCondition\\")",\n "app_id": "1",\n "columns": [\n {\n "name": "value",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "app_id",\n "type": "number",\n "perm": "ContractAccess(\\"@1ItemChangeAppId\\")"\n },\n {\n "name": "ecosystem",\n "type": "number",\n "perm": "false"\n },\n {\n "name": "conditions",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "permissions",\n "type": "json",\n "perm": "ContractConditions(\\"@1MainCondition\\")"\n },\n {\n "name": "name",\n "type": "varchar",\n "perm": "false"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getlist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getlist"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getList")])]),e._v(" "),a("p",[e._v("Returns the entry of the specified data table.")]),e._v(" "),a("p",[e._v("You can specify the columns to be returned.")]),e._v(" "),a("p",[e._v("You can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("You can set the query criteria.")]),e._v(" "),a("p",[e._v("Hex encoding of data tables of type "),a("em",[e._v("BYTEA")]),e._v(" (byte arrays, hashes, byte code arrays)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the data table object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("order")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Sort by, default id ASC.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("where")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Query criteria")]),e._v(" "),a("p",[e._v("Example:If you want to query id>2 and name = john")]),e._v(" "),a("p",[e._v("You can use "),a("code",[e._v('where:{"id":{"$gt":2}, "name":{"$eq": "john"}}')])]),e._v(" "),a("p",[e._v("For details, please refer to "),a("RouterLink",{attrs:{to:"/fr/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" where syntax")],1)])]),e._v(" "),a("h4",{attrs:{id:"return-value-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-22"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - Other columns of the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getList","id":1,"params":[{"name":"@1history","where":{"$and": [{"id":{"$gt": 2}}, {"id":{"$lt": 5}}]}}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "amount": "1000000000000000000",\n "block_id": "4",\n "comment": "UTXO",\n "created_at": "1676538080433",\n "ecosystem": "1",\n "id": "3",\n "recipient_balance": "1000000000000000000",\n "recipient_id": "666...160",\n "sender_balance": "1000000000000000000",\n "sender_id": "666...3160",\n "status": "0",\n "txhash": "2ac156c0ce55c10fd485cb9d59f50e3f9b269fb9bb69571d3c2eeae033d6c6cc",\n "type": "24",\n "value_detail": "NULL"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsections"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsections"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSections")])]),e._v(" "),a("p",[e._v("Return to the tab of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Get the actions request object\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The number of entries, default 25 entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("lang")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" -")]),e._v(" "),a("p",[e._v("This field specifies the multilingual resource code or localization, e.g. "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g. "),a("em",[e._v("en-US")]),e._v(", then search in the Multilingual Resources group, "),a("strong",[e._v("default")]),e._v(": "),a("strong",[e._v("en")]),e._v(".")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-23"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of tab entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains information about all columns in the sections table.")])])]),e._v(" "),a("h4",{attrs:{id:"example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSections","id":1,"params":[{"offset":0,"limit":2}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "ecosystem": "1",\n "id": "1",\n "page": "default_page",\n "roles_access": "[]",\n "status": "2",\n "title": "Home",\n "urlname": "home"\n },\n {\n "ecosystem": "1",\n "id": "2",\n "page": "developer_index",\n "roles_access": "[]",\n "status": "1",\n "title": "Developer",\n "urlname": "developer"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getRow")])]),e._v(" "),a("p",[e._v("Returns the entries of the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v('If you do not filter, you can place a blank "".')]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("whereColumn")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Find column name (only Number type columns can be found)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-24"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("value")]),e._v("- "),a("em",[e._v("Object")]),e._v(" - object that receives column values\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - The sequence of requested columns.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getRow","id":1,"params":["@1history",4,"id,sender_id,recipient_id,amount,ecosystem,created_at","id"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "value": {\n "amount": "680388766240",\n "created_at": "1677222830899",\n "ecosystem": "1",\n "id": "296",\n "recipient_id": "6667782293976713160",\n "sender_id": "6660819716178795186"\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-systemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.systemParams")])]),e._v(" "),a("p",[e._v("Returns the list of platform parameters.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - A list of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example "),a("code",[e._v('names="name1,name2"')]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-25"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unique id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.systemParams","id":1,"params":["gap_between_blocks,honor_nodes"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "4",\n "name": "gap_between_blocks",\n "value": "2",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n },\n {\n "id": "6",\n "name": "honor_nodes",\n "value": "",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-history"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.history")])]),e._v(" "),a("p",[e._v("Returns the changed records of the entries of the specified data table in the current ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")]),e._v(" "),a("li",[a("strong",[e._v("tableId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-26"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains change records for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.history","id":1,"params":["contracts",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "conditions": "ContractConditions(\\"MainCondition\\")",\n "ecosystem": "1",\n "value": "// This contract is used to set \\"developer\\" rights....."\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagerow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagerow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystempages data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-27"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Directory.")]),e._v(" "),a("li",[a("strong",[e._v("nodesCount")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of nodes the page needs to validate")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application Id")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPageRow","id":1,"params":["default_page"]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5,\n "name": "default_page",\n "value": "If(#account_id# == #guest_account#){\\n Include(@1apps_description)\\n}.Else{\\n Include(@1profile)\\n}",\n "menu": "default_menu",\n "nodesCount": 1,\n "app_id": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenurow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenurow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenuRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem menu data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-28"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The title.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenuRow","id":1,"params":["default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 2,\n "name": "default_menu",\n "title": "default",\n "value": "\\nMenuItem.....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsnippetrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsnippetrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSnippetRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem snippet data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-29"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])]),e._v(" "),a("h4",{attrs:{id:"example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSnippetRow","id":1,"params":["welcome"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 12,\n "name": "welcome",\n "value": "Div(content-wrapper)....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getappcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getappcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAppContent")])]),e._v(" "),a("p",[e._v("Get application related information (including page, snippet, menu)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application id")])]),e._v(" "),a("h4",{attrs:{id:"return-value-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-30"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("snippets")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of code snippet information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Code snippet name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("pages")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of page information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contracts")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - an array of contract information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "snippets": [ //if not app snippets is null array,example:[]\n {\n "id": 2,\n "name": "developer_link"\n },\n {\n "id": 3,\n "name": "export_info"\n }\n ],\n "pages": [ //if not app pages is null array,example:[]\n {\n "id": 6,\n "name": "menus_list"\n },\n {\n "id": 7,\n "name": "params_edit"\n }\n ],\n "contracts": [ //if not app contracts is null array,example:[]\n {\n "id": 2,\n "name": "MainCondition"\n },\n {\n "id": 33,\n "name": "NodeOwnerCondition"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmember"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmember"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMember")])]),e._v(" "),a("p",[e._v("Get member information")]),e._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Member Information")]),e._v(" "),a("p",[a("strong",[e._v("ecosystemId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoid")]),e._v(" "),a("h4",{attrs:{id:"return-value-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-31"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - member id")]),e._v(" "),a("li",[a("strong",[e._v("member_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Name")]),e._v(" "),a("li",[a("strong",[e._v("image_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Avatar id")]),e._v(" "),a("li",[a("strong",[e._v("member_info")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Introduction")])]),e._v(" "),a("h4",{attrs:{id:"example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}}" -d \'{"jsonrpc":"2.0","method":"ibax.getMember","id":1,"params":["1497-2036-4953-3607-1121",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 14,\n "member_name": "som",\n "image_id": 5, \n "member_info": "{\\"information\\": \\"Everything will be okay in the end. If it\'s not okay, it\'s not the end.\\"}"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontracts"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContracts")])]),e._v(" "),a("p",[e._v("Get the list of contracts in the current ecosystem, you can set the offset and the number of entries.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")]),e._v(" "),a("li",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-32"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract ID.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("wallet_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The address of the account to which the contract is bound.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the application to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change the permissions of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("token_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the ecosystem where the pass is used as a payment for the contract.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContracts","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 293,\n "list": [\n {\n "address": "0000-0000-0000-0000-0000",\n "app_id": "1",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "ecosystem_id": "1",\n "id": "1",\n "name": "DeveloperCondition",\n "token_id": "1",\n "value": "// This contract is used to ...",\n "wallet_id": "0"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontractinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontractinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContractInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified contract.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("contractName")]),e._v("\t-\t"),a("em",[e._v("String")]),e._v("\t-\tThe\tname\tof\tthe\tcontract.\tThe\tformat\tis "),a("code",[e._v("@ecosystem_id%%contractName%")]),e._v(", e.g. @1contractName (the specified eco1contract name contractName) or contractName (the current eco-contract name contractName).")])]),e._v(" "),a("h4",{attrs:{id:"return-value-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-33"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the contract ID in the VM.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("state")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("walletid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the account to which the contract is bound")]),e._v(" "),a("li",[a("strong",[e._v("tokenid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the ecosystem ID of the pass that is used as the payment for the contract.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("tableid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - ID of the entry in the "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")]),e._v(" "),a("li",[a("strong",[e._v("fields")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - array containing structural information for each parameter of the contract "),a("strong",[e._v("data")]),e._v(" section:\n"),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The type of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("optional")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - parameter options, "),a("code",[e._v("true")]),e._v(" means optional parameters, "),a("code",[e._v("false")]),e._v(" means mandatory parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","id":1,"params":["@1TokensSend"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5098,\n "state": 1,\n "tableid": "98",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Amount",\n "type": "money",\n "optional": false\n },\n {\n "name": "Recipient",\n "type": "string",\n "optional": true\n },\n {\n "name": "iName",\n "type": "string",\n "optional": true\n },\n {\n "name": "Comment",\n "type": "string",\n "optional": true\n },\n {\n "name": "Ecosystem",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1TokensSend"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-sendtx"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.sendTx")])]),e._v(" "),a("p",[e._v("Receives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an error response.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Transaction data object\n"),a("ul",[a("li",[a("strong",[e._v("tx_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the content of the transaction, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-34"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - transaction hash arrays:\n"),a("ul",[a("li",[a("strong",[e._v("tx1")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction 1.")]),e._v(" "),a("li",[a("strong",[e._v("txN")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction N.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.sendTx","id":1,"params":[{"tx1":...,"txN":...}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hashes":[\n {"hash1":"hash1"},\n {"hashN":"hashN"}\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txStatus")])]),e._v(" "),a("p",[e._v("Gets the block ID and error message of the specified transaction hash. If the return value of the block ID and error text message is null, then the transaction is not yet contained in the block.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash, split using "),a("code",[e._v(",")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"return-value-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-35"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - returns the block ID if the transaction was executed successfully;")]),e._v(" "),a("p",[e._v("If the transaction execution fails, "),a("em",[e._v("blockid")]),e._v(" will be "),a("code",[e._v("0")]),e._v(", and the corresponding block ID will be returned if the transaction execution error is penalized.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("result")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("errmsg")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Returns an error text message if the execution of the transaction failed.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Error type")]),e._v(" "),a("li",[a("strong",[e._v("error")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - error message")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("penalty")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - if the transaction execution fails, (0: no penalty 1: penalty)")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.txStatus","id":1,"params":["cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9,4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": "793",\n "result": "",\n "penalty": 0\n },\n "cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9": {\n "blockid": "793",\n "errmsg": {\n "type": "warning",\n "error": "platform ecosystem can not be burning Tokens"\n },\n "result": "",\n "penalty": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfo")])]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. If optional parameters are specified, the contract name and its associated parameters can also be returned.")]),e._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-36"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction.\nIf the value is "),a("code",[e._v("0")]),e._v(", no transactions are found for this hash.\nIf the transaction occurred on the current node, it can be obtained via "),a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of node confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Returns contract details if "),a("code",[e._v("contentinfo=true")]),e._v(" is specified. null if not specified")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])]),e._v(" "),a("h4",{attrs:{id:"example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.txInfo","id":1,"params":["020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "blockid": "796",\n "confirm": 0,\n "data": {\n "block_id": 796,\n "block_hash": "bccbc3cf47b49bee5fb7321810884db49b73f5114b0a6fcd234dd3fdf9c22ef4",\n "address": "0666-7782-2939-7671-3160",\n "ecosystem": 2,\n "hash": "020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "1000000000000",\n "Recipient": "0666-7782-2939-7671-3160"\n },\n "created_at": 1678774455841,\n "size": "213.00B",\n "status": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfomultiple"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("p",[e._v("Returns transaction-related information for the specified hash list.")]),e._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - A list of transaction hashes.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-37"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("results")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Data dictionary with transaction hash as key and transaction details as value.\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction. if the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("li",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - If "),a("code",[e._v("contentinfo=true")]),e._v("is specified, the contract details are returned to this parameter. null when not specified\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v("- "),a("em",[e._v("Number")]),e._v(" - Block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":[["1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284","4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"],true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "results": {\n "1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284": {\n "blockid": 0,\n "confirm": 0,\n "data": null\n },\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": 793,\n "confirm": 0,\n "data": {\n "block_id": 793,\n "block_hash": "ef3b2f2e18662e0b8bba136a209e30c5aae76d9a82e0b21209786f62fe5676e4",\n "address": "0666-0819-7161-7879-5186",\n "ecosystem": 1,\n "hash": "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "200",\n "Comment": "Hello Dear",\n "Recipient": "1196-2490-5275-7101-3496"\n },\n "created_at": 1678765099072,\n "size": "297.00B",\n "status": 0\n }\n }\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagevalidatorscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. @1params_list (specifying ecology 1 page name params_list) or params_list (current ecology page name params_list)")])]),e._v(" "),a("h4",{attrs:{id:"return-value-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-38"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("validate_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Specifies the number of nodes to be validated by the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "validate_count": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpage"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPage")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified page name, which is the result of processing by the templating engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the page with the ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".")]),e._v(" "),a("p",[e._v("If you don't have an ecosystem ID, the default is to find the current ecological page, e.g. "),a("code",[e._v("main_page")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-39"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the menu to which the page belongs.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("menutree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree of the page's menus.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - page JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPage","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "menu": "developer_menu",\n "menutree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ],\n "tree": [\n {\n ....\n }\n ...\n ],\n "nodesCount": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenu"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenu")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified menu name, which is the result of processing by the template engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\n"),a("blockquote",[a("p",[e._v("Menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%menu_name%")]),e._v(", e.g.\n"),a("code",[e._v("@1main_menu")]),e._v(".\nIf you don't bring the ecosystem ID, the menu of the current ecology will be found by default, for example\n"),a("code",[e._v("main_menu")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-40"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the menu title.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Menu JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenu","id":1,"params":["@1default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "title": "default",\n "tree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsource"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSource")])]),e._v(" "),a("p",[e._v("Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nPage name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", for example "),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, the default is to find the current ecological page e.g. "),a("code",[e._v("main_page")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-41"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree for the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSource","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": [\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1applications"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"name\\": \\"System\\"}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "setvar",\n "attr": {\n "name": "role_developer_id",\n "value": "AppParam(Ecosystem: #ecosystem_id#, App: #application_id#, Name: role_developer)"\n }\n },\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1roles_participants"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"$and\\": [{\\"role->id\\": {\\"$in\\": [#role_developer_id#]}}, {\\"role->id\\": \\"#role_id#\\"}], \\"member->account\\": \\"#account_id#\\", \\"deleted\\": 0}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "if",\n "attr": {\n "condition": "#developer_access_id#>0"\n },\n "children": [\n {\n "tag": "setvar",\n "attr": {\n "name": "this_page",\n "value": "@1params_list"\n }\n }\n\t\t\t\t\t\t...\n ],\n "tail": [\n {\n "tag": "else",\n "children": [\n {\n "tag": "settitle",\n "attr": {\n "title": "$@1ecosystem_parameters$"\n }\n }\n\t\t\t\t\t\t\t\t...\n ]\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagehash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagehash"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageHash")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page is not found.")]),e._v(" "),a("p",[e._v("To receive the correct hash when making requests to other nodes, you must also pass the\n"),a("em",[e._v("ecosystem,key_id,role_id")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the page with the ecosystem ID. The format is "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. "),a("code",[e._v("@1main_page")]),e._v(", you can specify the eco ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Get the specified page object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")]),e._v(" "),a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The role ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-42"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" -\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageHash","id":1,"params":["@1params_list",0,{"role_id":"1","key_id":"-6484253546138538120"}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "fc5ed3b5e879dd5521dfb792e815019bd8411851e850e75a3590d71e950a0465"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContent")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" Specified as "),a("code",[e._v("true")]),e._v(", this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("template")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page code.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("source")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - If specified as "),a("code",[e._v("true")]),e._v(", the JSON object tree does not perform any functions and receives data.")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-43"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - JSON object tree.")])]),e._v(" "),a("h4",{attrs:{id:"example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-43"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getContent","id":1,"params":[{"template","..."source":true}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": {\n "type":"......", \n "children": [\n {...},\n {...}\n ]\n }\n }\n }\n \n')])])]),a("h3",{attrs:{id:"ibax-getblockinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlockInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified block ID.")]),e._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-44"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block hash value.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollbacks_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensus_mode")]),e._v(" "),a("em",[e._v("Number")]),e._v(" - Consensus mode, parameters (1: creator management mode 2: DAO governance mode)")])])]),e._v(" "),a("h4",{attrs:{id:"example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-44"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlockInfo","id":1,"params":[12]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "Hl+/VvYFFu4iq4zLrRDGHBhm7DM7llEAfEJyaX2Q3is=",\n "key_id": 6667782293976713160,\n "time": 1677134955,\n "tx_count": 1,\n "rollbacks_hash": "o37QAighKMb8WqbEHAqCQb5bOfMvOqV0WoTaN631q74=",\n "node_position": 0,\n "consensus_mode": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getconfig"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getConfig")])]),e._v(" "),a("p",[e._v("Get the host address and port of centrifugo")]),e._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("option")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Configuration item")]),e._v(" "),a("ol",[a("li",[e._v('"centrifugo" - messaging service')])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-45"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("centrifugo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" host address and port of centrifugo Result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-45"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getConfig","id":1,"params":["centrifugo"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "centrifugo":"http://127.0.0.1:8100"\n }\n }\n')])])]),a("h3",{attrs:{id:"net-getnetwork"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-getnetwork"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.getNetwork")])]),e._v(" "),a("p",[e._v("Get node information")]),e._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-46"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")]),e._v(" "),a("li",[a("strong",[e._v("centrifugo_url")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - centrifugo message service address")]),e._v(" "),a("li",[a("strong",[e._v("test")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether it is a test chain")]),e._v(" "),a("li",[a("strong",[e._v("private")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether the chain is private")]),e._v(" "),a("li",[a("strong",[e._v("honor_nodes")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - List of honor nodes\n"),a("ul",[a("li",[a("strong",[e._v("tcp_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - tcp address")]),e._v(" "),a("li",[a("strong",[e._v("api_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - api address")]),e._v(" "),a("li",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - node public key")]),e._v(" "),a("li",[a("strong",[e._v("unban_time")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unlock time")])])])]),e._v(" "),a("h4",{attrs:{id:"example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-46"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.getNetwork","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "network_id": "1",\n "centrifugo_url": "127.0.0.1",\n "test": false,\n "private": false,\n "honor_nodes": [\n {\n "tcp_address": "127.0.0.1:7078",\n "api_address": "http://127.0.0.1:7078",\n "public_key": "049a41b24862f8db61ee66fb206094baa57bfeac7ea786d63662a964d144eb85d1a0e230928d56f46dd61eefac7640b6aa2883b2445c7b2adc0e581f983ff0aedb",\n "unban_time": "-62135596800"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"net-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-status"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.status")])]),e._v(" "),a("p",[e._v("Get the current node status")]),e._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-47"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - Node Status\n"node server status is running" - the node is running\n"node server is updating" - node is being updated\n"node server is stopped" - node suspended')])]),e._v(" "),a("h4",{attrs:{id:"example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-47"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.status","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"rpc-modules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-modules"}},[e._v("#")]),e._v(" "),a("strong",[e._v("rpc.modules")])]),e._v(" "),a("p",[e._v("Get the currently registered JSON-RPC interface")]),e._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-48"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Array")]),e._v(" - JSON-RPC interface array")])]),e._v(" "),a("h4",{attrs:{id:"example-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-48"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"rpc.modules","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n "net.getNetwork",\n "ibax.getAppContent",\n "ibax.honorNodesCount",\n "ibax.maxBlockId",\n "ibax.detailedBlock",\n "ibax.getConfig",\n "ibax.getTableCount",\n "ibax.getMenu"\n ]\n }\n')])])]),a("h3",{attrs:{id:"admin-startjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-startjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.startJsonRpc")])]),e._v(" "),a("p",[e._v("Can be used to switch between JSON-RPC change namespace services")]),e._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("methods")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - JSON-RPC module, default: "ibax,net"')]),e._v(" "),a("h4",{attrs:{id:"return-value-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-49"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-49"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.startJsonRpc","id":1,"params":["ibax,net,admin"]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"admin-stopjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-stopjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.stopJsonRpc")])]),e._v(" "),a("p",[e._v("Close the JSON-RPC service")]),e._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-50"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-50"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.stopJsonRpc","id":1,"params":[]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"debug-getnodebanstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getnodebanstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getNodeBanStat")])]),e._v(" "),a("p",[e._v("Get node disable status")]),e._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-51"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript\n"),a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Disable status, "),a("code",[e._v("true")]),e._v(" ban status, "),a("code",[e._v("false")]),e._v(" not disabled")]),e._v(" "),a("h4",{attrs:{id:"example-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-51"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getNodeBanStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n {\n "node_position": 0,\n "status": true\n }\n ]\n }\n')])])]),a("h3",{attrs:{id:"debug-getmemstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getmemstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getMemStat")])]),e._v(" "),a("p",[e._v("Get the current node memory usage")]),e._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-52"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("alloc")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes requested and still in use")]),e._v(" "),a("li",[a("strong",[e._v("sys")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes fetched from the system")])]),e._v(" "),a("h4",{attrs:{id:"example-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-52"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getMemStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "alloc": 11537432,\n "sys": 35329248\n }\n }\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{439:function(e,t,a){"use strict";a.r(t);var n=a(51),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"json-rpc-application-programming-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-application-programming-interface"}},[e._v("#")]),e._v(" JSON-RPC Application Programming Interface")]),e._v(" "),a("p",[e._v("In order for a software application to interact with the IBAX blockchain (fetch block data or send transactions to the network), it must be connected to an IBAX network node.")]),e._v(" "),a("p",[e._v("Due to the generality and extensibility of the original REST API interface, it will become more and more complex with more and more interfaces and different clients. We realize the importance of interface unification to ensure that all clients can use the same set of specifications, regardless of the specific node and client implementation.")]),e._v(" "),a("p",[e._v("JSON-RPC is a stateless, lightweight remote procedure call (RPC) protocol. It defines a number of data structures and their processing rules. It is transport independent, as these concepts can be used in the same process, via an interface, hypertext transfer protocol, or in many different messaging environments. It uses JSON (RFC 4627) as the data format.")]),e._v(" "),a("p",[e._v("JSON-RPC is compatible with most of the REST API interfaces, retaining the original REST API interface, the client using the REST API interface can easily transfer to the JSON-RPC interface, part of the interface")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/fr/reference/api2.html#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/fr/reference/api2.html#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/fr/reference/api2.html#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])],1)]),e._v(" "),a("p",[e._v("Available through the REST API interface.")]),e._v(" "),a("h2",{attrs:{id:"client-side-implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-side-implementation"}},[e._v("#")]),e._v(" Client-side implementation")]),e._v(" "),a("p",[e._v("Each client can use a different programming language when implementing the JSON-RPC specification, and you can use the\n"),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("GO-SDK"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"curl-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curl-example"}},[e._v("#")]),e._v(" Curl example")]),e._v(" "),a("p",[e._v("The following provides examples of using the JSON RPC API by making curl requests to IBAX nodes. Each example includes a description of the particular endpoint, its parameters, the return type, and a working example of how it should be used.")]),e._v(" "),a("p",[e._v('Curl requests may return an error message related to the content type. This is because the --data option sets the content type to application/x-www-form-urlencoded. If your request has this problem, set the header manually by placing -H "Content-Type: application/json" at the beginning of the call. These examples also do not include the URL/Internet Protocol and port combination that must be the last parameter of the curl (e.g. 127.0.0.1:7079 A full curl request with this additional data takes the form of')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","params":[],"id":1}\' http://127.0.0.1:7079\t\n')])])]),a("h2",{attrs:{id:"covenant"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#covenant"}},[e._v("#")]),e._v(" Covenant")]),e._v(" "),a("h3",{attrs:{id:"hex"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hex"}},[e._v("#")]),e._v(" Hex")]),e._v(" "),a("p",[a("strong",[e._v("Hexadecimal code")])]),e._v(" "),a("p",[e._v("When encoding byte arrays, hashes, and bytecode arrays: the encoding is hexadecimal, two hexadecimal digits per byte.")]),e._v(" "),a("h3",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("Content-Type: application/json")])]),e._v(" "),a("h3",{attrs:{id:"special-markers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-markers"}},[e._v("#")]),e._v(" Special markers")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("This field is an optional parameter.")]),e._v(" "),a("p",[e._v("If there are multiple "),a("code",[e._v("Omitempty")]),e._v(" fields in a row,\nBut only want to pass the value of a certain field, then you need to set the unwanted field to null (the field type null value), Example:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Name")]),e._v(" "),a("li",[a("strong",[e._v("column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Filter column names")])]),e._v(" "),a("p",[e._v("If only the name value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0, "testname"]')]),e._v(" - "),a("em",[e._v("Number")]),e._v(" null value is 0")]),e._v(" "),a("p",[e._v("If only the column value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0,"", "title,page"]')]),e._v(" - "),a("em",[e._v("String")]),e._v(' empty value for ""')]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("Authorization header, add Authorization to the request header, example:")]),e._v(" "),a("p",[a("strong",[e._v("name")]),e._v(" : Authorization "),a("strong",[e._v("value")]),e._v(" : Bearer +"),a("a",{attrs:{href:"#ibax-login"}},[e._v("login token")])]),e._v(" "),a("p",[e._v("Example:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","params":["@1TokensSend"],"id":1}\' http://127.0.0.1:7079\n\n')])])]),a("h4",{attrs:{id:"accountorkeyid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#accountorkeyid"}},[e._v("#")]),e._v(" AccountOrKeyId")]),e._v(" "),a("p",[e._v("For the account address parameter, you can use two formats of addresses, for example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v(" - Account Address "),a("code",[e._v('"XXXX-XXXX-XXXX-XXXX-XXXX"')]),e._v(" or Account Id "),a("code",[e._v('"64842...538120"')]),e._v(' .538120"`')])])]),e._v(" "),a("li",[a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Address object")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Account Id, Example: "),a("code",[e._v('{"key_id":-64842\t38120}')])]),e._v(" "),a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account address, Example: "),a("code",[e._v('{"account": "1196-... -\t-... -3496"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Account Id is preferred when both account address and account Id exist")]),e._v(".")])])]),e._v(" "),a("h4",{attrs:{id:"blockorhash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockorhash"}},[e._v("#")]),e._v(" BlockOrHash")]),e._v(" "),a("p",[e._v("Block height or block HASH, example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v("\t-\tBlock\tHeight\t"),a("code",[e._v('"100"')]),e._v("\tor\tBlock\tHASH"),a("code",[e._v('"4663aa47...a60753c18d9ba9cb4"')])])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - Block information object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height, example: "),a("code",[e._v('{"id":2}')])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v("\t-\t"),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v("\tString")]),e._v("\t-\tBlock\tHASH,\tExample:\t"),a("code",[e._v('{"hash": "d36b8996c\tc616d3043a0d02a0f59"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Block Height and Block HASH can only choose one")]),e._v(".")])])])])]),e._v(" "),a("h3",{attrs:{id:"batch-requests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#batch-requests"}},[e._v("#")]),e._v(" Batch requests")]),e._v(" "),a("p",[e._v("This feature can be used to reduce network latency, especially when acquiring a large number of largely independent data objects.")]),e._v(" "),a("p",[e._v("The following is an example of obtaining the highest block and total number of transactions:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'[{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]},{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":2,"params":[]}]\' http://127.0.0.1:7079\n\n //Response\n [\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149100\n },\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": 797\n }\n ]\n')])])]),a("h3",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Returns status "),a("code",[e._v("200")]),e._v(" in case the request is executed successfully.")]),e._v(" "),a("p",[e._v("If an error occurs, a JSON object with the following fields will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("jsonrpc")]),e._v(" "),a("p",[e._v("Error identifier.")])]),e._v(" "),a("li",[a("p",[e._v("id")]),e._v(" "),a("p",[e._v("Error text message.")])]),e._v(" "),a("li",[a("p",[e._v("error")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("code")]),e._v(" "),a("p",[e._v("Response Status Code")])]),e._v(" "),a("li",[a("p",[e._v("message")]),e._v(" "),a("p",[e._v("Response Status Description")])])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "jsonrpc": "2.0",\n "id": 1,\n "error": {\n "code": -32014,\n "message": "Unauthorized"\n }\n}\n')])])]),a("h2",{attrs:{id:"json-rpc-namespaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-namespaces"}},[e._v("#")]),e._v(" JSON-RPC Namespaces")]),e._v(" "),a("h3",{attrs:{id:"ibax-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-namespace"}},[e._v("#")]),e._v(" ibax Namespace")]),e._v(" "),a("h4",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getuid"}},[e._v("ibax.getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-login"}},[e._v("ibax.login")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getauthstatus"}},[e._v("ibax.getAuthStatus")])])]),e._v(" "),a("h4",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" server-side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getversion"}},[e._v("ibax.getVersion")])])]),e._v(" "),a("h4",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getbalance"}},[e._v("ibax.getBalance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockstxinfo"}},[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblocks"}},[e._v("ibax.detailedBlocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyinfo"}},[e._v("ibax.getKeyInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblock"}},[e._v("ibax.detailedBlock")])])]),e._v(" "),a("h4",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-maxblockid"}},[e._v("ibax.maxBlockId")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyscount"}},[e._v("ibax.getKeysCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettxcount"}},[e._v("ibax.getTxCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettransactioncount"}},[e._v("ibax.getTransactionCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockscountbynode"}},[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-honornodescount"}},[e._v("ibax.honorNodesCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemcount"}},[e._v("ibax.getEcosystemCount")])])]),e._v(" "),a("h4",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-ecosysteminfo"}},[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-appparams"}},[e._v("ibax.appParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemparams"}},[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettablecount"}},[e._v("ibax.getTableCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettable"}},[e._v("ibax.getTable")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getlist"}},[e._v("ibax.getList")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsections"}},[e._v("ibax.getSections")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getrow"}},[e._v("ibax.getRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-systemparams"}},[e._v("ibax.systemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-history"}},[e._v("ibax.history")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagerow"}},[e._v("ibax.getPageRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenurow"}},[e._v("ibax.getMenuRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsnippetrow"}},[e._v("ibax.getSnippetRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getappcontent"}},[e._v("ibax.getAppContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmember"}},[e._v("ibax.getMember")])])]),e._v(" "),a("h4",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getcontracts"}},[e._v("ibax.getContracts")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-sendtx"}},[e._v("ibax.sendTx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfo"}},[e._v("ibax.txInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfomultiple"}},[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpage"}},[e._v("ibax.getPage")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenu"}},[e._v("ibax.getMenu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsource"}},[e._v("ibax.getSource")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagehash"}},[e._v("ibax.getPageHash")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontent"}},[e._v("ibax.getContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockinfo"}},[e._v("ibax.getBlockInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getconfig"}},[e._v("ibax.getConfig")])])]),e._v(" "),a("h3",{attrs:{id:"net-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-namespace"}},[e._v("#")]),e._v(" net Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#net-getnetwork"}},[e._v("net.getNetwork")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#net-status"}},[e._v("net.status")])])]),e._v(" "),a("h3",{attrs:{id:"rpc-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-namespace"}},[e._v("#")]),e._v(" rpc Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rpc-modules"}},[e._v("rpc.modules")])])]),e._v(" "),a("h3",{attrs:{id:"admin-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-namespace"}},[e._v("#")]),e._v(" admin Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#admin-startjsonrpc"}},[e._v("admin.startJsonRpc")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#admin-stopjsonrpc"}},[e._v("admin.stopJsonRpc")])])]),e._v(" "),a("h3",{attrs:{id:"debug-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-namespace"}},[e._v("#")]),e._v(" debug Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#debug-getnodebanstat"}},[e._v("debug.getNodeBanStat")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#debug-getmemstat"}},[e._v("debug.getMemStat")])])]),e._v(" "),a("h2",{attrs:{id:"json-rpc-interface-methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-interface-methods"}},[e._v("#")]),e._v(" JSON-RPC Interface Methods")]),e._v(" "),a("h3",{attrs:{id:"ibax-getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getuid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getUid")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Generate a temporary JWT token,\twhich needs to be passed to "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(" when calling "),a("strong",[a("a",{attrs:{href:"#ibax-login"}},[e._v("login")])])]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("uid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The signature number.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - temporary token passed during login (temporary token has a 5 second lifespan).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("cryptoer")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Elliptic curve algorithm.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hasher")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - hash algorithm.")])])]),e._v(" "),a("p",[e._v("In the case that no authorization is required(the request contains "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(", the following message will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Expiration time.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])])]),e._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response1\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "uid": "5823391950439015186",\n "token": "ey....",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response2\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "expire": "7h59m49.5361126s",\n "ecosystem_id": "1",\n "key_id": "6667782293976713160",\n "address": "0666-7782-2939-7671-3160",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-login"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.login")])]),e._v(" "),a("p",[e._v("User authentication. "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"#ibax-getuid"}},[a("strong",[e._v("ibax.getUid")])]),e._v(" command should be called first in order to receive the unique value and sign it.\nThe temporary JWT token for getuid needs to be passed in the request header.\nIf the request is successful, the token received in the response is contained in "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication call object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID. if not specified, defaults to the first ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The lifecycle of the JWT token in seconds, default is 28800,8 hours.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Hexadecimal account public key.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -")]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("signature")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nUse the private key to sign the uid received by getuid.")]),e._v(" "),a("p",[e._v("Signature data content:LOGIN+{$network_id}+uid")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID, default role 0")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-2"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - JWT token.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("notify_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The notification ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isnode")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isowner")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the creator of this ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("clb")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the logged-in ecosystem is a CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("timestamp")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - current timestamp")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" list of roles, if there are no roles, the field is nil")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID")]),e._v(" "),a("li",[a("strong",[e._v("role_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Role name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.login","params":[{"ecosystem_id":1,"public_key":"04....","signature","46...","role_id":0}],"id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "token": "ey...",\n "ecosystem_id": "1",\n "key_id": "6660819716178795186",\n "account": "0666-xxxx-xxxx-xxxx-5186",\n "notify_key": "ey....",\n "isnode": false,\n "isowner": false,\n "clb": false,\n "timestamp": "1678336163",\n "roles": nil //[{"role_id": 1, "role_name": "Developer"},{"role_id": 2, "role_name": "DevelopGovernancerer"}]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getauthstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getauthstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAuthStatus")])]),e._v(" "),a("p",[e._v("User authentication status\n"),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-3"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication status object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("active")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - The current user authentication status. Values: "),a("code",[e._v("true,false")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("exp")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Token validity cutoff timestamp")])])]),e._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getAuthStatus","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "active": true,\n "exp": 1678354136\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getversion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getversion"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getVersion")])]),e._v(" "),a("p",[e._v("Returns the current server version.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-4"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("vesion")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - version number ("),a("code",[e._v("big Version")]),e._v(" + "),a("code",[e._v("branch name")]),e._v(" + "),a("code",[e._v("git commit")]),e._v(" + "),a("code",[e._v("time")]),e._v(" + "),a("code",[e._v("node status")]),e._v(")")])]),e._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getVersion","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "1.3.0 branch.main commit.b57d4194 time.2023-03-08-09:30:29(UTC) node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"ibax-getbalance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getbalance"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBalance")])]),e._v(" "),a("p",[e._v("Get the account address balance.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("key_id or account")]),e._v(" - "),a("a",{attrs:{href:"#accountorkeyid"}},[a("em",[e._v("AccountOrKeyId")])]),e._v(" - account address "),a("code",[e._v("XXXX- XXXX-XXXX-XXXX-XXXX")]),e._v(" or account ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default 1")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-5"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the balance object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the minimum unit of the contract account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("total")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the total balance of the minimum unit account (amount + utxo).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("utxo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Minimum unit UTXO account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")])])]),e._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["648...8120"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["1196-...-...-...-3496",1]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":[{"key_id":{$key_id}},1]}\' http://127.0.0.1:7079 //keyId or account\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "amount": "9915319240441612",\n "digits": 12,\n "total": "9915319240441612",\n "utxo": "0",\n "token_symbol": "IBXC"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockstxinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockstxinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("p",[e._v("Returns a list containing additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the starting block height to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-6"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block information object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height")])]),e._v(" "),a("li",[a("p",[e._v("List of transactions in the block and additional information for each transaction:")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" -\nFor the first block, it is the account address of the first block that signed the transaction.")]),e._v(" "),a("p",[e._v("For all other blocks, it is the address of the account that signed the transaction.")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksTxInfo","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": [ //block_id\n {\n "hash": "uXSaSrMWlbHpNlu049J5BDypC6MzBQ0/5VEfGQf+5aQ=",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160\n }\n ],\n "2": [ //block_id\n {\n "hash": "r8U9IKjtZ5Be5D4ak3zxLlDwn36CTdfIAsVvQhx7P3w=",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblocks"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlocks")])]),e._v(" "),a("p",[e._v("Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the starting block to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-7"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height\n"),a("ul",[a("li",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")]),e._v(" "),a("li",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")]),e._v(" "),a("li",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")]),e._v(" "),a("li",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")]),e._v(" "),a("li",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlocks","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": { //block id\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f73497ede8f22d678bc4be6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "36373332663064383331353264316333653639346431656436383734373634363463616363616564636632353232646335633736643066623737343931366363",\n "bin_data": "Cp4BCAEQppm...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n },\n "2": { //block id\n "header": {\n "block_id": 2,\n "time": 1676536235,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "dd13a30661d35e01df82027a6e6607eb47ee00765d69767dbb99e151676c2c96",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676536235,\n "tx_count": 1,\n "size": "1.53KiB",\n "rollbacks_hash": "9041312d69e6bcd37c91a2bfa066abaeb53b8398708937a618a89960bfadab3d",\n "merkle_root": "65366537383931353662613230356565396466353061316538656538643636323332316636616265623764633539616166346635343030383135386538643130",\n "bin_data": "Cp4BCAIQq9O...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "afc53d20a8ed67905ee43e1a937cf12e50f09f7e824dd7c802c56f421c7b3f7c",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160,\n "time": 1676536233945,\n "type": 3,\n "size": "390.00B"\n }\n ]\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeyInfo")])]),e._v(" "),a("p",[e._v("Returns a list of ecosystems with roles that are registered to the specified address.")]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")])]),e._v(" "),a("h4",{attrs:{id:"return-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-8"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Specify the address eco-list object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystems")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Eco-List\n"),a("ul",[a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - list of roles.\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - role id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Character name")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeyInfo","id":1,"params":["0666-XXXX-XXXX-XXXX-5186"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "account": "0666-XXXX-XXXX-XXXX-5186",\n "ecosystems": [\n {\n "ecosystem": "1",\n "name": "platform ecosystem",\n "digits": 12,\n "roles": [\n {\n "id": "1",\n "name": "Developer"\n },\n {\n "id": "2",\n "name": "Governancer"\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblock"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlock")])]),e._v(" "),a("p",[e._v("Returns a detailed list of additional information about the transactions in the block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block or Hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - Block Height or Block Hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-9"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["1"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91"]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":[{"id":1}]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "3637333266306438333135...623737343931366363",\n "bin_data": "Cp4BCAEQppm2nwYgyI/8gLSVrsRcMkAFGTK6nxD86hfhgQX0dWzO8aYZExDN9UPm8sKkqeUbwrNliYuCJHvvdX+txINnM7+gDqtMF/1K43kc0gYC0u8uOiANfVG0wUusv0XYEvc0l+3o8i1ni8S+bmhIGT87cmKskUIgBEhSsqZwreVAfnj7KGPFHen8uWVCoHGG/jrtpruKEW1IA1ABYAESRDogQBBdW8EBBcF/1yuTqPczaeLubu5NRxS3v3vzwvFW5gFCIARIUrKmcK3lQH54+yhjxR3p/LllQqBxhv467aa7ihFtGkA2NzMyZjBkODMxNTJkMWMzZTY5NGQxZWQ2ODc0NzY0NjRjYWNjYWVkY2YyNTIyZGM1Yzc2ZDBmYjc3NDkxNmNjKugCeJxibFvmk5+enlp0YK1LUkhRYl5xYnJJZn7egSUuiSWJ7Uu9Uys9XS7HdOxY7SDPfmJJSGZu6mUGBgaG5Lc9y1YGlCblZCZ7p1YecejvOPzyp63tWeYpWS+nxBTv3biTOUTqg7vfgedPuXdbnjsmYX49a9mXA025NT4TbjQ65bQwbloQcjbQRG3ZudjjUxuL1/rlp6QimTfLcZNH0o/bie/SfiskTNm1tPrfmrrlbdfMklamXHR53XpxwSODSb1hX3Kvyb1fU+awbZVG8yaXmGqtO3wR8jPsP6y7vTW4JL/AL7WkPL8o2zm1qMSpNC8lJ/XAkpDU4hKwBxgYGBg3BhRlliWWpDrl5CdnJ2ckZuadh0oxrAT5tLgkMbfgMgMDY1v42yy2ZSEVHonFGUcUdpbM8tosNnXjS7PoLY8vVbLYrORebMzKa/80UF6S/d/TJcsDEitz8hNTjvwaueEHCAAA//+pZRGv",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-maxblockid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.maxBlockId")])]),e._v(" "),a("p",[e._v("Get the highest block ID on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-10"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block Id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The highest block on the current node")])]),e._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 774\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeysCount")])]),e._v(" "),a("p",[e._v("Get the total number of addresses on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-11"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of addresses")])]),e._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeysCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 11\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettxcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettxcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTxCount")])]),e._v(" "),a("p",[e._v("Get the total number of transactions in the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-12"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of transactions")])]),e._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149068\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettransactioncount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettransactioncount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTransactionCount")])]),e._v(" "),a("p",[e._v("Get the number of block transactions")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block or hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - block height or block hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-13"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("h4",{attrs:{id:"example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTransactionCount","id":1,"params":["efc386f7573269610a34af9cc722f775cca8183ccaa0ed7a96db61ef0bde6d1c"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 337\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockscountbynode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockscountbynode"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("p",[e._v("Get the number of node location packing blocks")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("nodePosition")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensusMode")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Consensus Mode, parameters (1: Creator Management Mode 2: DAO Governance Mode)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-14"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the node subscript packing number object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("total_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("partial_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of node subscript packing blocks")])])]),e._v(" "),a("h4",{attrs:{id:"example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksCountByNode","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "total_count": 774,\n "partial_count": 774\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-honornodescount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-honornodescount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.honorNodesCount")])]),e._v(" "),a("p",[e._v("Get number of honor nodes")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-15"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of nodes")])]),e._v(" "),a("h4",{attrs:{id:"example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.honorNodesCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 1\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemCount")])]),e._v(" "),a("p",[e._v("Number of ecosystem acquisitions")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-16"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecological number")])]),e._v(" "),a("h4",{attrs:{id:"example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 2\n }\n')])])]),a("h3",{attrs:{id:"ibax-ecosysteminfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ecosysteminfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("p",[e._v("Access to ecological information")]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ecosystem id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecological ID")])]),e._v(" "),a("h4",{attrs:{id:"return-value-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-17"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Eco-ID")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecological name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")]),e._v(" "),a("li",[a("strong",[e._v("token_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the token")]),e._v(" "),a("li",[a("strong",[e._v("total_amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the number of issues (first issue, or "),a("code",[e._v('"0"')]),e._v(" if not issued)")]),e._v(" "),a("li",[a("strong",[e._v("is_withdraw")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - destructible "),a("code",[e._v("true:destructible false:undestructible")])]),e._v(" "),a("li",[a("strong",[e._v("withdraw")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - amount of destruction ("),a("code",[e._v('"0"')]),e._v(" if not destructible, or not destroyed)")]),e._v(" "),a("li",[a("strong",[e._v("is_emission")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - may be incremented "),a("code",[e._v("true:may be incremented false:may not be incremented")])]),e._v(" "),a("li",[a("strong",[e._v("emission")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - increment ("),a("code",[e._v('"0"')]),e._v(" if no increment is available, or if no increment is available)")]),e._v(" "),a("li",[a("strong",[e._v("introduction")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco Introduction")]),e._v(" "),a("li",[a("strong",[e._v("logo")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoLogo Id (corresponds to Binary table id), available through the RESTFUL API")]),e._v(" "),a("li",[a("strong",[e._v("creator")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco-creator")])]),e._v(" "),a("h4",{attrs:{id:"example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.ecosystemInfo","id":1,"params":[1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "id": 5,\n "name": "test name",\n "digits": 6,\n "token_symbol": "test",\n "token_name": "test Coin",\n "total_amount": "10000",\n "is_withdraw": true,\n "withdraw": "100000000000900000",\n "is_emission": true,\n "emission": "100000000001000000",\n "introduction": "this is a test introduction",\n "logo": 6,\n "creator": "0666-0819-7161-7879-5186"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-appparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-appparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.appParams")])]),e._v(" "),a("p",[e._v("Returns a list of application parameters in the current or specified ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("appid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the application ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID;")]),e._v(" "),a("p",[e._v("If unspecified or 0, the parameters of the current ecosystem will be returned.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Filter the application parameter names.")]),e._v(" "),a("p",[e._v("A comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-18"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Array")]),e._v(" - List of application parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application ID")]),e._v(" "),a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Each element of the array contains the following parameters\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - parameter ID, unique;")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the parameter;")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the parameter value;")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.appParams","id":1,"params":[1,1,"role_developer,role_governancer"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "app_id": 1,\n "list": [\n {\n "id": "4",\n "name": "role_developer",\n "value": "1",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n },\n {\n "id": "5",\n "name": "role_governancer",\n "value": "2",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("p",[e._v("Get a list of ecosystem parameters")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID")]),e._v(" "),a("p",[e._v("If 0 or no such parameter, default: current ecid.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The name of the filter parameter.")]),e._v(" "),a("p",[e._v("Comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")])]),e._v(" "),a("p",[e._v("The "),a("em",[e._v("offset")]),e._v(" and "),a("em",[e._v("limit")]),e._v(" parameters are invalid when there is a filter parameter.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-19"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The id of the parameter, unique.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemParams","id":1,"params":[0,"changing_app_params,changing_language"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "9",\n "name": "changing_app_params",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n },\n {\n "id": "4",\n "name": "changing_language",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettablecount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettablecount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTableCount")])]),e._v(" "),a("p",[e._v("Returns a list of data tables for the current ecosystem.")]),e._v(" "),a("p",[e._v("Offset and number of entries can be set")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-20"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The total number of sheets of the current ecological data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table without prefix.")]),e._v(" "),a("li",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The number of entries in the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTableCount","id":1,"params":[0,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 32,\n "list": [\n {\n "name": "app_params",\n "count": "41"\n },\n {\n "name": "applications",\n "count": "7"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettable"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTable")])]),e._v(" "),a("p",[e._v("Returns information about the current ecosystem request data table.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Data table name")])]),e._v(" "),a("h4",{attrs:{id:"return-value-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-21"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("insert")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add permission to add an entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("new_column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add new field permission.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("update")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change entry permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The application id.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Conditions for changing permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of information related to data table fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the field.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The field data type.")]),e._v(" "),a("li",[a("strong",[e._v("perm")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Permission to change the value of this field.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTable","id":1,"params":["app_params"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "name": "app_params",\n "insert": "ContractConditions(\\"DeveloperCondition\\")",\n "new_column": "ContractConditions(\\"@1MainCondition\\")",\n "update": "ContractAccess(\\"@1EditAppParam\\")",\n "conditions": "ContractConditions(\\"@1MainCondition\\")",\n "app_id": "1",\n "columns": [\n {\n "name": "value",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "app_id",\n "type": "number",\n "perm": "ContractAccess(\\"@1ItemChangeAppId\\")"\n },\n {\n "name": "ecosystem",\n "type": "number",\n "perm": "false"\n },\n {\n "name": "conditions",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "permissions",\n "type": "json",\n "perm": "ContractConditions(\\"@1MainCondition\\")"\n },\n {\n "name": "name",\n "type": "varchar",\n "perm": "false"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getlist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getlist"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getList")])]),e._v(" "),a("p",[e._v("Returns the entry of the specified data table.")]),e._v(" "),a("p",[e._v("You can specify the columns to be returned.")]),e._v(" "),a("p",[e._v("You can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("You can set the query criteria.")]),e._v(" "),a("p",[e._v("Hex encoding of data tables of type "),a("em",[e._v("BYTEA")]),e._v(" (byte arrays, hashes, byte code arrays)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the data table object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("order")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Sort by, default id ASC.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("where")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Query criteria")]),e._v(" "),a("p",[e._v("Example:If you want to query id>2 and name = john")]),e._v(" "),a("p",[e._v("You can use "),a("code",[e._v('where:{"id":{"$gt":2}, "name":{"$eq": "john"}}')])]),e._v(" "),a("p",[e._v("For details, please refer to "),a("RouterLink",{attrs:{to:"/fr/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" where syntax")],1)])]),e._v(" "),a("h4",{attrs:{id:"return-value-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-22"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - Other columns of the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getList","id":1,"params":[{"name":"@1history","where":{"$and": [{"id":{"$gt": 2}}, {"id":{"$lt": 5}}]}}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "amount": "1000000000000000000",\n "block_id": "4",\n "comment": "UTXO",\n "created_at": "1676538080433",\n "ecosystem": "1",\n "id": "3",\n "recipient_balance": "1000000000000000000",\n "recipient_id": "666...160",\n "sender_balance": "1000000000000000000",\n "sender_id": "666...3160",\n "status": "0",\n "txhash": "2ac156c0ce55c10fd485cb9d59f50e3f9b269fb9bb69571d3c2eeae033d6c6cc",\n "type": "24",\n "value_detail": "NULL"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsections"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsections"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSections")])]),e._v(" "),a("p",[e._v("Return to the tab of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Get the actions request object\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The number of entries, default 25 entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("lang")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" -")]),e._v(" "),a("p",[e._v("This field specifies the multilingual resource code or localization, e.g. "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g. "),a("em",[e._v("en-US")]),e._v(", then search in the Multilingual Resources group, "),a("strong",[e._v("default")]),e._v(": "),a("strong",[e._v("en")]),e._v(".")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-23"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of tab entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains information about all columns in the sections table.")])])]),e._v(" "),a("h4",{attrs:{id:"example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSections","id":1,"params":[{"offset":0,"limit":2}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "ecosystem": "1",\n "id": "1",\n "page": "default_page",\n "roles_access": "[]",\n "status": "2",\n "title": "Home",\n "urlname": "home"\n },\n {\n "ecosystem": "1",\n "id": "2",\n "page": "developer_index",\n "roles_access": "[]",\n "status": "1",\n "title": "Developer",\n "urlname": "developer"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getRow")])]),e._v(" "),a("p",[e._v("Returns the entries of the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v('If you do not filter, you can place a blank "".')]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("whereColumn")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Find column name (only Number type columns can be found)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-24"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("value")]),e._v("- "),a("em",[e._v("Object")]),e._v(" - object that receives column values\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - The sequence of requested columns.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getRow","id":1,"params":["@1history",4,"id,sender_id,recipient_id,amount,ecosystem,created_at","id"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "value": {\n "amount": "680388766240",\n "created_at": "1677222830899",\n "ecosystem": "1",\n "id": "296",\n "recipient_id": "6667782293976713160",\n "sender_id": "6660819716178795186"\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-systemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.systemParams")])]),e._v(" "),a("p",[e._v("Returns the list of platform parameters.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - A list of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example "),a("code",[e._v('names="name1,name2"')]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-25"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unique id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.systemParams","id":1,"params":["gap_between_blocks,honor_nodes"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "4",\n "name": "gap_between_blocks",\n "value": "2",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n },\n {\n "id": "6",\n "name": "honor_nodes",\n "value": "",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-history"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.history")])]),e._v(" "),a("p",[e._v("Returns the changed records of the entries of the specified data table in the current ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")]),e._v(" "),a("li",[a("strong",[e._v("tableId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-26"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains change records for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.history","id":1,"params":["contracts",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "conditions": "ContractConditions(\\"MainCondition\\")",\n "ecosystem": "1",\n "value": "// This contract is used to set \\"developer\\" rights....."\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagerow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagerow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystempages data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-27"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Directory.")]),e._v(" "),a("li",[a("strong",[e._v("nodesCount")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of nodes the page needs to validate")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application Id")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPageRow","id":1,"params":["default_page"]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5,\n "name": "default_page",\n "value": "If(#account_id# == #guest_account#){\\n Include(@1apps_description)\\n}.Else{\\n Include(@1profile)\\n}",\n "menu": "default_menu",\n "nodesCount": 1,\n "app_id": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenurow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenurow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenuRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem menu data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-28"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The title.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenuRow","id":1,"params":["default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 2,\n "name": "default_menu",\n "title": "default",\n "value": "\\nMenuItem.....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsnippetrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsnippetrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSnippetRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem snippet data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-29"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])]),e._v(" "),a("h4",{attrs:{id:"example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSnippetRow","id":1,"params":["welcome"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 12,\n "name": "welcome",\n "value": "Div(content-wrapper)....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getappcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getappcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAppContent")])]),e._v(" "),a("p",[e._v("Get application related information (including page, snippet, menu)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application id")])]),e._v(" "),a("h4",{attrs:{id:"return-value-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-30"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("snippets")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of code snippet information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Code snippet name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("pages")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of page information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contracts")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - an array of contract information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "snippets": [ //if not app snippets is null array,example:[]\n {\n "id": 2,\n "name": "developer_link"\n },\n {\n "id": 3,\n "name": "export_info"\n }\n ],\n "pages": [ //if not app pages is null array,example:[]\n {\n "id": 6,\n "name": "menus_list"\n },\n {\n "id": 7,\n "name": "params_edit"\n }\n ],\n "contracts": [ //if not app contracts is null array,example:[]\n {\n "id": 2,\n "name": "MainCondition"\n },\n {\n "id": 33,\n "name": "NodeOwnerCondition"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmember"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmember"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMember")])]),e._v(" "),a("p",[e._v("Get member information")]),e._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Member Information")]),e._v(" "),a("p",[a("strong",[e._v("ecosystemId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoid")]),e._v(" "),a("h4",{attrs:{id:"return-value-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-31"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - member id")]),e._v(" "),a("li",[a("strong",[e._v("member_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Name")]),e._v(" "),a("li",[a("strong",[e._v("image_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Avatar id")]),e._v(" "),a("li",[a("strong",[e._v("member_info")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Introduction")])]),e._v(" "),a("h4",{attrs:{id:"example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}}" -d \'{"jsonrpc":"2.0","method":"ibax.getMember","id":1,"params":["1497-2036-4953-3607-1121",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 14,\n "member_name": "som",\n "image_id": 5, \n "member_info": "{\\"information\\": \\"Everything will be okay in the end. If it\'s not okay, it\'s not the end.\\"}"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontracts"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContracts")])]),e._v(" "),a("p",[e._v("Get the list of contracts in the current ecosystem, you can set the offset and the number of entries.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")]),e._v(" "),a("li",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-32"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract ID.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("wallet_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The address of the account to which the contract is bound.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the application to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change the permissions of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("token_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the ecosystem where the pass is used as a payment for the contract.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContracts","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 293,\n "list": [\n {\n "address": "0000-0000-0000-0000-0000",\n "app_id": "1",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "ecosystem_id": "1",\n "id": "1",\n "name": "DeveloperCondition",\n "token_id": "1",\n "value": "// This contract is used to ...",\n "wallet_id": "0"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontractinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontractinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContractInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified contract.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("contractName")]),e._v("\t-\t"),a("em",[e._v("String")]),e._v("\t-\tThe\tname\tof\tthe\tcontract.\tThe\tformat\tis "),a("code",[e._v("@ecosystem_id%%contractName%")]),e._v(", e.g. @1contractName (the specified eco1contract name contractName) or contractName (the current eco-contract name contractName).")])]),e._v(" "),a("h4",{attrs:{id:"return-value-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-33"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the contract ID in the VM.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("state")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("walletid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the account to which the contract is bound")]),e._v(" "),a("li",[a("strong",[e._v("tokenid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the ecosystem ID of the pass that is used as the payment for the contract.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("tableid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - ID of the entry in the "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")]),e._v(" "),a("li",[a("strong",[e._v("fields")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - array containing structural information for each parameter of the contract "),a("strong",[e._v("data")]),e._v(" section:\n"),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The type of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("optional")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - parameter options, "),a("code",[e._v("true")]),e._v(" means optional parameters, "),a("code",[e._v("false")]),e._v(" means mandatory parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","id":1,"params":["@1TokensSend"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5098,\n "state": 1,\n "tableid": "98",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Amount",\n "type": "money",\n "optional": false\n },\n {\n "name": "Recipient",\n "type": "string",\n "optional": true\n },\n {\n "name": "iName",\n "type": "string",\n "optional": true\n },\n {\n "name": "Comment",\n "type": "string",\n "optional": true\n },\n {\n "name": "Ecosystem",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1TokensSend"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-sendtx"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.sendTx")])]),e._v(" "),a("p",[e._v("Receives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an error response.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Transaction data object\n"),a("ul",[a("li",[a("strong",[e._v("tx_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the content of the transaction, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-34"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - transaction hash arrays:\n"),a("ul",[a("li",[a("strong",[e._v("tx1")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction 1.")]),e._v(" "),a("li",[a("strong",[e._v("txN")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction N.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.sendTx","id":1,"params":[{"tx1":...,"txN":...}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hashes":[\n {"hash1":"hash1"},\n {"hashN":"hashN"}\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txStatus")])]),e._v(" "),a("p",[e._v("Gets the block ID and error message of the specified transaction hash. If the return value of the block ID and error text message is null, then the transaction is not yet contained in the block.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash, split using "),a("code",[e._v(",")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"return-value-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-35"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - returns the block ID if the transaction was executed successfully;")]),e._v(" "),a("p",[e._v("If the transaction execution fails, "),a("em",[e._v("blockid")]),e._v(" will be "),a("code",[e._v("0")]),e._v(", and the corresponding block ID will be returned if the transaction execution error is penalized.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("result")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("errmsg")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Returns an error text message if the execution of the transaction failed.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Error type")]),e._v(" "),a("li",[a("strong",[e._v("error")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - error message")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("penalty")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - if the transaction execution fails, (0: no penalty 1: penalty)")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.txStatus","id":1,"params":["cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9,4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": "793",\n "result": "",\n "penalty": 0\n },\n "cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9": {\n "blockid": "793",\n "errmsg": {\n "type": "warning",\n "error": "platform ecosystem can not be burning Tokens"\n },\n "result": "",\n "penalty": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfo")])]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. If optional parameters are specified, the contract name and its associated parameters can also be returned.")]),e._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-36"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction.\nIf the value is "),a("code",[e._v("0")]),e._v(", no transactions are found for this hash.\nIf the transaction occurred on the current node, it can be obtained via "),a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of node confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Returns contract details if "),a("code",[e._v("contentinfo=true")]),e._v(" is specified. null if not specified")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])]),e._v(" "),a("h4",{attrs:{id:"example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.txInfo","id":1,"params":["020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "blockid": "796",\n "confirm": 0,\n "data": {\n "block_id": 796,\n "block_hash": "bccbc3cf47b49bee5fb7321810884db49b73f5114b0a6fcd234dd3fdf9c22ef4",\n "address": "0666-7782-2939-7671-3160",\n "ecosystem": 2,\n "hash": "020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "1000000000000",\n "Recipient": "0666-7782-2939-7671-3160"\n },\n "created_at": 1678774455841,\n "size": "213.00B",\n "status": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfomultiple"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("p",[e._v("Returns transaction-related information for the specified hash list.")]),e._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - A list of transaction hashes.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-37"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("results")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Data dictionary with transaction hash as key and transaction details as value.\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction. if the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("li",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - If "),a("code",[e._v("contentinfo=true")]),e._v("is specified, the contract details are returned to this parameter. null when not specified\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v("- "),a("em",[e._v("Number")]),e._v(" - Block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":[["1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284","4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"],true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "results": {\n "1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284": {\n "blockid": 0,\n "confirm": 0,\n "data": null\n },\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": 793,\n "confirm": 0,\n "data": {\n "block_id": 793,\n "block_hash": "ef3b2f2e18662e0b8bba136a209e30c5aae76d9a82e0b21209786f62fe5676e4",\n "address": "0666-0819-7161-7879-5186",\n "ecosystem": 1,\n "hash": "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "200",\n "Comment": "Hello Dear",\n "Recipient": "1196-2490-5275-7101-3496"\n },\n "created_at": 1678765099072,\n "size": "297.00B",\n "status": 0\n }\n }\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagevalidatorscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. @1params_list (specifying ecology 1 page name params_list) or params_list (current ecology page name params_list)")])]),e._v(" "),a("h4",{attrs:{id:"return-value-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-38"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("validate_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Specifies the number of nodes to be validated by the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "validate_count": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpage"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPage")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified page name, which is the result of processing by the templating engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the page with the ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".")]),e._v(" "),a("p",[e._v("If you don't have an ecosystem ID, the default is to find the current ecological page, e.g. "),a("code",[e._v("main_page")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-39"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the menu to which the page belongs.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("menutree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree of the page's menus.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - page JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPage","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "menu": "developer_menu",\n "menutree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ],\n "tree": [\n {\n ....\n }\n ...\n ],\n "nodesCount": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenu"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenu")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified menu name, which is the result of processing by the template engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\n"),a("blockquote",[a("p",[e._v("Menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%menu_name%")]),e._v(", e.g.\n"),a("code",[e._v("@1main_menu")]),e._v(".\nIf you don't bring the ecosystem ID, the menu of the current ecology will be found by default, for example\n"),a("code",[e._v("main_menu")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-40"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the menu title.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Menu JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenu","id":1,"params":["@1default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "title": "default",\n "tree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsource"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSource")])]),e._v(" "),a("p",[e._v("Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nPage name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", for example "),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, the default is to find the current ecological page e.g. "),a("code",[e._v("main_page")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-41"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree for the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSource","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": [\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1applications"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"name\\": \\"System\\"}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "setvar",\n "attr": {\n "name": "role_developer_id",\n "value": "AppParam(Ecosystem: #ecosystem_id#, App: #application_id#, Name: role_developer)"\n }\n },\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1roles_participants"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"$and\\": [{\\"role->id\\": {\\"$in\\": [#role_developer_id#]}}, {\\"role->id\\": \\"#role_id#\\"}], \\"member->account\\": \\"#account_id#\\", \\"deleted\\": 0}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "if",\n "attr": {\n "condition": "#developer_access_id#>0"\n },\n "children": [\n {\n "tag": "setvar",\n "attr": {\n "name": "this_page",\n "value": "@1params_list"\n }\n }\n\t\t\t\t\t\t...\n ],\n "tail": [\n {\n "tag": "else",\n "children": [\n {\n "tag": "settitle",\n "attr": {\n "title": "$@1ecosystem_parameters$"\n }\n }\n\t\t\t\t\t\t\t\t...\n ]\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagehash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagehash"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageHash")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page is not found.")]),e._v(" "),a("p",[e._v("To receive the correct hash when making requests to other nodes, you must also pass the\n"),a("em",[e._v("ecosystem,key_id,role_id")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the page with the ecosystem ID. The format is "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. "),a("code",[e._v("@1main_page")]),e._v(", you can specify the eco ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Get the specified page object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")]),e._v(" "),a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The role ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-42"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" -\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageHash","id":1,"params":["@1params_list",0,{"role_id":"1","key_id":"-6484253546138538120"}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "fc5ed3b5e879dd5521dfb792e815019bd8411851e850e75a3590d71e950a0465"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContent")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" Specified as "),a("code",[e._v("true")]),e._v(", this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("template")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page code.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("source")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - If specified as "),a("code",[e._v("true")]),e._v(", the JSON object tree does not perform any functions and receives data.")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-43"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - JSON object tree.")])]),e._v(" "),a("h4",{attrs:{id:"example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-43"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getContent","id":1,"params":[{"template","..."source":true}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": {\n "type":"......", \n "children": [\n {...},\n {...}\n ]\n }\n }\n }\n \n')])])]),a("h3",{attrs:{id:"ibax-getblockinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlockInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified block ID.")]),e._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-44"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block hash value.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollbacks_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensus_mode")]),e._v(" "),a("em",[e._v("Number")]),e._v(" - Consensus mode, parameters (1: creator management mode 2: DAO governance mode)")])])]),e._v(" "),a("h4",{attrs:{id:"example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-44"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlockInfo","id":1,"params":[12]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "Hl+/VvYFFu4iq4zLrRDGHBhm7DM7llEAfEJyaX2Q3is=",\n "key_id": 6667782293976713160,\n "time": 1677134955,\n "tx_count": 1,\n "rollbacks_hash": "o37QAighKMb8WqbEHAqCQb5bOfMvOqV0WoTaN631q74=",\n "node_position": 0,\n "consensus_mode": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getconfig"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getConfig")])]),e._v(" "),a("p",[e._v("Get the host address and port of centrifugo")]),e._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("option")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Configuration item")]),e._v(" "),a("ol",[a("li",[e._v('"centrifugo" - messaging service')])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-45"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("centrifugo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" host address and port of centrifugo Result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-45"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getConfig","id":1,"params":["centrifugo"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "centrifugo":"http://127.0.0.1:8100"\n }\n }\n')])])]),a("h3",{attrs:{id:"net-getnetwork"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-getnetwork"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.getNetwork")])]),e._v(" "),a("p",[e._v("Get node information")]),e._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-46"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")]),e._v(" "),a("li",[a("strong",[e._v("centrifugo_url")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - centrifugo message service address")]),e._v(" "),a("li",[a("strong",[e._v("test")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether it is a test chain")]),e._v(" "),a("li",[a("strong",[e._v("private")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether the chain is private")]),e._v(" "),a("li",[a("strong",[e._v("honor_nodes")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - List of honor nodes\n"),a("ul",[a("li",[a("strong",[e._v("tcp_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - tcp address")]),e._v(" "),a("li",[a("strong",[e._v("api_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - api address")]),e._v(" "),a("li",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - node public key")]),e._v(" "),a("li",[a("strong",[e._v("unban_time")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unlock time")])])])]),e._v(" "),a("h4",{attrs:{id:"example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-46"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.getNetwork","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "network_id": "1",\n "centrifugo_url": "127.0.0.1",\n "test": false,\n "private": false,\n "honor_nodes": [\n {\n "tcp_address": "127.0.0.1:7078",\n "api_address": "http://127.0.0.1:7078",\n "public_key": "049a41b24862f8db61ee66fb206094baa57bfeac7ea786d63662a964d144eb85d1a0e230928d56f46dd61eefac7640b6aa2883b2445c7b2adc0e581f983ff0aedb",\n "unban_time": "-62135596800"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"net-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-status"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.status")])]),e._v(" "),a("p",[e._v("Get the current node status")]),e._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-47"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - Node Status\n"node server status is running" - the node is running\n"node server is updating" - node is being updated\n"node server is stopped" - node suspended')])]),e._v(" "),a("h4",{attrs:{id:"example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-47"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.status","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"rpc-modules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-modules"}},[e._v("#")]),e._v(" "),a("strong",[e._v("rpc.modules")])]),e._v(" "),a("p",[e._v("Get the currently registered JSON-RPC interface")]),e._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-48"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Array")]),e._v(" - JSON-RPC interface array")])]),e._v(" "),a("h4",{attrs:{id:"example-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-48"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"rpc.modules","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n "net.getNetwork",\n "ibax.getAppContent",\n "ibax.honorNodesCount",\n "ibax.maxBlockId",\n "ibax.detailedBlock",\n "ibax.getConfig",\n "ibax.getTableCount",\n "ibax.getMenu"\n ]\n }\n')])])]),a("h3",{attrs:{id:"admin-startjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-startjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.startJsonRpc")])]),e._v(" "),a("p",[e._v("Can be used to switch between JSON-RPC change namespace services")]),e._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("methods")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - JSON-RPC module, default: "ibax,net"')]),e._v(" "),a("h4",{attrs:{id:"return-value-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-49"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-49"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.startJsonRpc","id":1,"params":["ibax,net,admin"]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"admin-stopjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-stopjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.stopJsonRpc")])]),e._v(" "),a("p",[e._v("Close the JSON-RPC service")]),e._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-50"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-50"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.stopJsonRpc","id":1,"params":[]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"debug-getnodebanstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getnodebanstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getNodeBanStat")])]),e._v(" "),a("p",[e._v("Get node disable status")]),e._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-51"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript\n"),a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Disable status, "),a("code",[e._v("true")]),e._v(" ban status, "),a("code",[e._v("false")]),e._v(" not disabled")]),e._v(" "),a("h4",{attrs:{id:"example-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-51"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getNodeBanStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n {\n "node_position": 0,\n "status": true\n }\n ]\n }\n')])])]),a("h3",{attrs:{id:"debug-getmemstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getmemstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getMemStat")])]),e._v(" "),a("p",[e._v("Get the current node memory usage")]),e._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-52"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("alloc")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes requested and still in use")]),e._v(" "),a("li",[a("strong",[e._v("sys")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes fetched from the system")])]),e._v(" "),a("h4",{attrs:{id:"example-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-52"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getMemStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "alloc": 11537432,\n "sys": 35329248\n }\n }\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/60.257187e5.js b/assets/js/60.b2e91e30.js similarity index 99% rename from assets/js/60.257187e5.js rename to assets/js/60.b2e91e30.js index 6780aa9..4169c3e 100644 --- a/assets/js/60.257187e5.js +++ b/assets/js/60.b2e91e30.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{439:function(e,t,a){"use strict";a.r(t);var r=a(51),c=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#platform-parameters"}},[e._v("#")]),e._v(" Platform Parameters")]),e._v(" "),a("p",[e._v("These are parameters to configure IBAX. They are applicable to the blockchain network and all ecosystems within it.")]),e._v(" "),a("h2",{attrs:{id:"location-to-store-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#location-to-store-platform-parameters"}},[e._v("#")]),e._v(" Location to store platform parameters")]),e._v(" "),a("p",[e._v("Platform parameters are stored in the "),a("code",[e._v("system parameters")]),e._v(" table.")]),e._v(" "),a("p",[e._v("This table is located in the first (default) ecosystem created on the blockchain network.")]),e._v(" "),a("h2",{attrs:{id:"change-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#change-of-platform-parameters"}},[e._v("#")]),e._v(" Change of platform parameters")]),e._v(" "),a("p",[e._v("Change of platform parameters can only be made through voting. You can only use the UpdateSysParam contract to change any platform parameter, which is managed by definitions in the legal system of the platform.")]),e._v(" "),a("h2",{attrs:{id:"configure-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-platform-parameters"}},[e._v("#")]),e._v(" Configure platform parameters")]),e._v(" "),a("h3",{attrs:{id:"configure-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-blockchain-network"}},[e._v("#")]),e._v(" Configure the blockchain network")]),e._v(" "),a("p",[e._v("Nodes:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])])]),e._v(" "),a("p",[e._v("Node bans:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])])]),e._v(" "),a("h3",{attrs:{id:"configure-a-new-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-a-new-ecosystem"}},[e._v("#")]),e._v(" Configure a new ecosystem")]),e._v(" "),a("p",[e._v("Default page and menu:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])])]),e._v(" "),a("p",[e._v("Default contract:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-database"}},[e._v("#")]),e._v(" Configure the database")]),e._v(" "),a("p",[e._v("Table limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-generation-of-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("#")]),e._v(" Configure the generation of blocks")]),e._v(" "),a("p",[e._v("Time limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])])]),e._v(" "),a("p",[e._v("Transaction limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])])]),e._v(" "),a("p",[e._v("Size limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])])]),e._v(" "),a("p",[e._v("Fuel limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])])]),e._v(" "),a("p",[e._v("Block rollback limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-fuel-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-fuel-tokens"}},[e._v("#")]),e._v(" Configure the fuel tokens")]),e._v(" "),a("p",[e._v("Rewards and commissions:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])])]),e._v(" "),a("p",[e._v("Fuel rate conversion:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])])]),e._v(" "),a("p",[e._v("Transaction size and data price:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])])]),e._v(" "),a("p",[e._v("Price for new elements:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])])]),e._v(" "),a("p",[e._v("Price for operations:\n")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#platform-parameters"}},[e._v("Platform Parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#location-to-store-platform-parameters"}},[e._v("Location to store platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#change-of-platform-parameters"}},[e._v("Change of platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-platform-parameters"}},[e._v("Configure platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#configure-the-blockchain-network"}},[e._v("Configure the blockchain network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-a-new-ecosystem"}},[e._v("Configure a new ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-database"}},[e._v("Configure the database")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("Configure the generation of blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-fuel-tokens"}},[e._v("Configure the fuel tokens")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#depreciated"}},[e._v("Depreciated")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#details-of-platform-parameters"}},[e._v("Details of platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-address-to-id"}},[e._v("price exec address to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-bind-wallet"}},[e._v("price exec bind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-column-condition"}},[e._v("price exec column condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-compile-contract"}},[e._v("price exec compile contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contains"}},[e._v("price exec contains")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-id"}},[e._v("price exec contract by id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-name"}},[e._v("price exec contract by name")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contracts-list"}},[e._v("price exec contracts list")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-column"}},[e._v("price exec create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-ecosystem"}},[e._v("price exec create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-table"}},[e._v("price exec create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-ecosys-param"}},[e._v("price exec ecosys param")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval"}},[e._v("price exec eval")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval-condition"}},[e._v("price exec eval condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-flush-contract"}},[e._v("price exec flush contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-has-prefix"}},[e._v("price exec has prefix")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-id-to-address"}},[e._v("price exec id to address")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-is-object"}},[e._v("price exec is object")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-join"}},[e._v("price exec join")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-json-to-map"}},[e._v("price exec json to map")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-len"}},[e._v("price exec len")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-column"}},[e._v("price exec perm column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-table"}},[e._v("price exec perm table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-pub-to-id"}},[e._v("price exec pub to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-replace"}},[e._v("price exec replace")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sha256"}},[e._v("price exec sha256")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-size"}},[e._v("price exec size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-substr"}},[e._v("price exec substr")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-fuel"}},[e._v("price exec sys fuel")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-int"}},[e._v("price exec sys param int")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-string"}},[e._v("price exec sys param string")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-table-conditions"}},[e._v("price exec table conditions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-unbind-wallet"}},[e._v("price exec unbind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-update-lang"}},[e._v("price exec update lang")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-validate-condition"}},[e._v("price exec validate condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])])])])])]),e._v(" "),a("h3",{attrs:{id:"depreciated"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#depreciated"}},[e._v("#")]),e._v(" Depreciated")]),e._v(" "),a("p",[e._v("Depreciated parameters:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])])]),e._v(" "),a("h2",{attrs:{id:"details-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#details-of-platform-parameters"}},[e._v("#")]),e._v(" Details of platform parameters")]),e._v(" "),a("h3",{attrs:{id:"block-reward"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-reward"}},[e._v("#")]),e._v(" block reward")]),e._v(" "),a("p",[e._v("The number of IBXC tokens granted to the honor node that generates the block.")]),e._v(" "),a("p",[e._v("The account that receives the reward is specified in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-url"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-url"}},[e._v("#")]),e._v(" blockchain url")]),e._v(" "),a("p",[e._v("Depreciated.")]),e._v(" "),a("h3",{attrs:{id:"commission-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-size"}},[e._v("#")]),e._v(" commission size")]),e._v(" "),a("p",[e._v("Percentage of the commission.")]),e._v(" "),a("p",[e._v("The amount of the commission is calculated as a percentage of the total cost of implement the contract. The unit of the commission token is IBXC.")]),e._v(" "),a("p",[e._v("The commission will be transferred to the account address specified in the commission_wallet parameter.")]),e._v(" "),a("h3",{attrs:{id:"commission-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-wallet"}},[e._v("#")]),e._v(" commission wallet")]),e._v(" "),a("p",[e._v("The account address to receive the commission.")]),e._v(" "),a("p",[e._v("The amount of commission is specified by the commission_size parameter.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-contract"}},[e._v("#")]),e._v(" default ecosystem contract")]),e._v(" "),a("p",[e._v("The source code of the default contract in the new ecosystem.")]),e._v(" "),a("p",[e._v("This contract provides access to the ecosystem creator.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-menu"}},[e._v("#")]),e._v(" default ecosystem menu")]),e._v(" "),a("p",[e._v("The source code of the default menu of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-page"}},[e._v("#")]),e._v(" default ecosystem page")]),e._v(" "),a("p",[e._v("The source code of the default page of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"fuel-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fuel-rate"}},[e._v("#")]),e._v(" fuel rate")]),e._v(" "),a("p",[e._v("The exchange rates of different ecosystem tokens by fuel unit.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[["ecosystem_id", "token_to_fuel_rate"], ["ecosystem_id2", "token_to_fuel_rate2"], ...]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("ecosystem_id")])]),e._v(" "),a("p",[e._v("Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("token_to_fuel_rate")])]),e._v(" "),a("p",[e._v("Exchange rate of the token by fuel unit.")])])]),e._v(" "),a("p",[e._v("For example:")]),e._v(" "),a("p",[a("code",[e._v('[["1","1000000000000"], ["2", "1000"]]')])]),e._v(" "),a("p",[e._v("One token of Ecosystem 1 is exchanged for 1,000,000,000,000 fuel units. One token of Ecosystem 2 is exchanged for 1,000 fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-create-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-rate"}},[e._v("#")]),e._v(" price create rate")]),e._v(" "),a("p",[e._v("The fuel rate of a new element.")]),e._v(" "),a("h3",{attrs:{id:"full-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-nodes"}},[e._v("#")]),e._v(" full nodes")]),e._v(" "),a("p",[e._v("The list of honor nodes of the blockchain network.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[{"api_address":"https://apihost1:port1","public_key":"nodepub1","tcp_address":"tcphost1:port2"},{"api_address":"https://apihost2:port1","public_key":"nodepub2","tcp_address":"tcphost2:port2"}]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("tcp_address")])]),e._v(" "),a("p",[e._v("TCP address and port of the node host.\nTransactions and new blocks will be sent to this host address, which can also be used to obtain the complete blockchain from the first block.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("api_address")])]),e._v(" "),a("p",[e._v("API address and port of the node host.\nThrough the API address, you can access any function of the platform without using Weaver. See details in RESTful API.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("public_key")])]),e._v(" "),a("p",[e._v("Public key of the node, which is used to verify the block signature.")])])]),e._v(" "),a("h3",{attrs:{id:"gap-between-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gap-between-blocks"}},[e._v("#")]),e._v(" gap between blocks")]),e._v(" "),a("p",[e._v("The time interval (in seconds) of generating two blocks on a node.")]),e._v(" "),a("p",[e._v("All nodes in the network use it to determine when to generate a new block. If the current node does not generate a new block within this time period, the turn passes to the next node in the list of honor nodes.")]),e._v(" "),a("p",[e._v("The minimum value of this parameter is "),a("code",[e._v("1")]),e._v(" second.")]),e._v(" "),a("h3",{attrs:{id:"incorrect-blocks-per-day"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#incorrect-blocks-per-day"}},[e._v("#")]),e._v(" incorrect blocks per day")]),e._v(" "),a("p",[e._v("The number of bad blocks that a node is allowed to generate per day before being banned.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive the same number of bad blocks from a node, the node will be banned from the network within a time period specified in "),a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"max-block-generation-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-generation-time"}},[e._v("#")]),e._v(" max block generation time")]),e._v(" "),a("p",[e._v("The maximum time for generating a block, in milliseconds. If a block is not successfully generated within this time period, a timeout error will be reported.")]),e._v(" "),a("h3",{attrs:{id:"max-block-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-size"}},[e._v("#")]),e._v(" max block size")]),e._v(" "),a("p",[e._v("The maximum size of a block, in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-columns"}},[e._v("#")]),e._v(" max columns")]),e._v(" "),a("p",[e._v("The maximum number of fields in a single table.")]),e._v(" "),a("p",[e._v("However, it does not include the predefined "),a("code",[e._v("id")]),e._v(" column.")]),e._v(" "),a("h3",{attrs:{id:"max-forsign-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-forsign-size"}},[e._v("#")]),e._v(" max forsign size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction signature in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-block"}},[e._v("#")]),e._v(" max fuel block")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-tx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-tx"}},[e._v("#")]),e._v(" max fuel tx")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single transaction.")]),e._v(" "),a("h3",{attrs:{id:"max-indexes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-indexes"}},[e._v("#")]),e._v(" max indexes")]),e._v(" "),a("p",[e._v("The maximum number of primary key fields in a single table.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block"}},[e._v("#")]),e._v(" max tx block")]),e._v(" "),a("p",[e._v("The maximum number of transactions in a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block-per-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block-per-user"}},[e._v("#")]),e._v(" max tx block per user")]),e._v(" "),a("p",[e._v("The maximum number of transactions of an account in a block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-size"}},[e._v("#")]),e._v(" max tx size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction in bytes.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time"}},[e._v("#")]),e._v(" node ban time")]),e._v(" "),a("p",[e._v("The global ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive bad blocks from a node up to the number of "),a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")]),e._v(", the node will be banned in the network for this time period.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time-local"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time-local"}},[e._v("#")]),e._v(" node ban time local")]),e._v(" "),a("p",[e._v("The local ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When a node receives an incorrect block from another node, it will locally ban the sender's node during this time period.")]),e._v(" "),a("h3",{attrs:{id:"number-of-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#number-of-nodes"}},[e._v("#")]),e._v(" number of nodes")]),e._v(" "),a("p",[e._v("The maximum number of honor nodes in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"price-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-ecosystem"}},[e._v("#")]),e._v(" price create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single ecosystem.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewEcosystem")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-application"}},[e._v("#")]),e._v(" price create application")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single application.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewApplication")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-table"}},[e._v("#")]),e._v(" price create table")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewTable")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-column"}},[e._v("#")]),e._v(" price create column")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table field.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewColumn")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-contract"}},[e._v("#")]),e._v(" price create contract")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single contract.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewContract")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-menu"}},[e._v("#")]),e._v(" price create menu")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single menu.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewMenu")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-page"}},[e._v("#")]),e._v(" price create page")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single page.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewPage")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-address-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-address-to-id"}},[e._v("#")]),e._v(" price exec address to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("AddressToId()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-bind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-bind-wallet"}},[e._v("#")]),e._v(" price exec bind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Activate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-column-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-column-condition"}},[e._v("#")]),e._v(" price exec column condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ColumnCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-compile-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-compile-contract"}},[e._v("#")]),e._v(" price exec compile contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CompileContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contains"}},[e._v("#")]),e._v(" price exec contains")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Contains()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-id"}},[e._v("#")]),e._v(" price exec contract by id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("GetContractById()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-name"}},[e._v("#")]),e._v(" price exec contract by name")]),e._v(" "),a("p",[e._v("The fuel fee of calling the GetContractByName() function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contracts-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contracts-list"}},[e._v("#")]),e._v(" price exec contracts list")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ContractsList()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-column"}},[e._v("#")]),e._v(" price exec create column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-ecosystem"}},[e._v("#")]),e._v(" price exec create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateEcosystem()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-table"}},[e._v("#")]),e._v(" price exec create table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-ecosys-param"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-ecosys-param"}},[e._v("#")]),e._v(" price exec ecosys param")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EcosysParam()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval"}},[e._v("#")]),e._v(" price exec eval")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Eval()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval-condition"}},[e._v("#")]),e._v(" price exec eval condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EvalCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-flush-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-flush-contract"}},[e._v("#")]),e._v(" price exec flush contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("FlushContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-has-prefix"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-has-prefix"}},[e._v("#")]),e._v(" price exec has prefix")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("HasPrefix()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-id-to-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-id-to-address"}},[e._v("#")]),e._v(" price exec id to address")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IdToAddress()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-is-object"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-is-object"}},[e._v("#")]),e._v(" price exec is object")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IsObject()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-join"}},[e._v("#")]),e._v(" price exec join")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Join()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-json-to-map"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-json-to-map"}},[e._v("#")]),e._v(" price exec json to map")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("JSONToMap()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-len"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-len"}},[e._v("#")]),e._v(" price exec len")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Len()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-column"}},[e._v("#")]),e._v(" price exec perm column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-table"}},[e._v("#")]),e._v(" price exec perm table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-pub-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-pub-to-id"}},[e._v("#")]),e._v(" price exec pub to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PubToID()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-replace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-replace"}},[e._v("#")]),e._v(" price exec replace")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Replace()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sha256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sha256"}},[e._v("#")]),e._v(" price exec sha256")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Sha256()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-size"}},[e._v("#")]),e._v(" price exec size")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Size()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-substr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-substr"}},[e._v("#")]),e._v(" price exec substr")]),e._v(" "),a("p",[e._v("The fuel fee of calling "),a("code",[e._v("theSubstr()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-fuel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-fuel"}},[e._v("#")]),e._v(" price exec sys fuel")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysFuel()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-int"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-int"}},[e._v("#")]),e._v(" price exec sys param int")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamInt()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-string"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-string"}},[e._v("#")]),e._v(" price exec sys param string")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamString()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-table-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-table-conditions"}},[e._v("#")]),e._v(" price exec table conditions")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("TableConditions()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-unbind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-unbind-wallet"}},[e._v("#")]),e._v(" price exec unbind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Deactivate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-update-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-update-lang"}},[e._v("#")]),e._v(" price exec update lang")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("UpdateLang()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-validate-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-validate-condition"}},[e._v("#")]),e._v(" price exec validate condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ValidateCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-data"}},[e._v("#")]),e._v(" price tx data")]),e._v(" "),a("p",[e._v("The fuel fee for every 1024 bytes of a transaction, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-size-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-size-wallet"}},[e._v("#")]),e._v(" price tx size wallet")]),e._v(" "),a("p",[e._v("The fee by transaction size, its unit is the IBXC token.")]),e._v(" "),a("p",[e._v("Except the ecosystem 1, a block space usage fee will be incurred proportionally when implementing a contract in other ecosystems, and its rate is "),a("em",[e._v("price tx size wallet")]),e._v(" IBXC tokens per megabyte.")]),e._v(" "),a("h3",{attrs:{id:"rollback-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-blocks"}},[e._v("#")]),e._v(" rollback blocks")]),e._v(" "),a("p",[e._v("Maximum number of blocks that can be rolled back when detecting a fork in the blockchain.")])])}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{440:function(e,t,a){"use strict";a.r(t);var r=a(51),c=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#platform-parameters"}},[e._v("#")]),e._v(" Platform Parameters")]),e._v(" "),a("p",[e._v("These are parameters to configure IBAX. They are applicable to the blockchain network and all ecosystems within it.")]),e._v(" "),a("h2",{attrs:{id:"location-to-store-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#location-to-store-platform-parameters"}},[e._v("#")]),e._v(" Location to store platform parameters")]),e._v(" "),a("p",[e._v("Platform parameters are stored in the "),a("code",[e._v("system parameters")]),e._v(" table.")]),e._v(" "),a("p",[e._v("This table is located in the first (default) ecosystem created on the blockchain network.")]),e._v(" "),a("h2",{attrs:{id:"change-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#change-of-platform-parameters"}},[e._v("#")]),e._v(" Change of platform parameters")]),e._v(" "),a("p",[e._v("Change of platform parameters can only be made through voting. You can only use the UpdateSysParam contract to change any platform parameter, which is managed by definitions in the legal system of the platform.")]),e._v(" "),a("h2",{attrs:{id:"configure-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-platform-parameters"}},[e._v("#")]),e._v(" Configure platform parameters")]),e._v(" "),a("h3",{attrs:{id:"configure-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-blockchain-network"}},[e._v("#")]),e._v(" Configure the blockchain network")]),e._v(" "),a("p",[e._v("Nodes:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])])]),e._v(" "),a("p",[e._v("Node bans:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])])]),e._v(" "),a("h3",{attrs:{id:"configure-a-new-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-a-new-ecosystem"}},[e._v("#")]),e._v(" Configure a new ecosystem")]),e._v(" "),a("p",[e._v("Default page and menu:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])])]),e._v(" "),a("p",[e._v("Default contract:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-database"}},[e._v("#")]),e._v(" Configure the database")]),e._v(" "),a("p",[e._v("Table limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-generation-of-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("#")]),e._v(" Configure the generation of blocks")]),e._v(" "),a("p",[e._v("Time limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])])]),e._v(" "),a("p",[e._v("Transaction limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])])]),e._v(" "),a("p",[e._v("Size limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])])]),e._v(" "),a("p",[e._v("Fuel limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])])]),e._v(" "),a("p",[e._v("Block rollback limits:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])]),e._v(" "),a("h3",{attrs:{id:"configure-the-fuel-tokens"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-fuel-tokens"}},[e._v("#")]),e._v(" Configure the fuel tokens")]),e._v(" "),a("p",[e._v("Rewards and commissions:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])])]),e._v(" "),a("p",[e._v("Fuel rate conversion:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])])]),e._v(" "),a("p",[e._v("Transaction size and data price:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])])]),e._v(" "),a("p",[e._v("Price for new elements:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])])]),e._v(" "),a("p",[e._v("Price for operations:\n")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#platform-parameters"}},[e._v("Platform Parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#location-to-store-platform-parameters"}},[e._v("Location to store platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#change-of-platform-parameters"}},[e._v("Change of platform parameters")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-platform-parameters"}},[e._v("Configure platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#configure-the-blockchain-network"}},[e._v("Configure the blockchain network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-a-new-ecosystem"}},[e._v("Configure a new ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-database"}},[e._v("Configure the database")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-generation-of-blocks"}},[e._v("Configure the generation of blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-fuel-tokens"}},[e._v("Configure the fuel tokens")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#depreciated"}},[e._v("Depreciated")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#details-of-platform-parameters"}},[e._v("Details of platform parameters")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#block-reward"}},[e._v("block reward")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-size"}},[e._v("commission size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#commission-wallet"}},[e._v("commission wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-contract"}},[e._v("default ecosystem contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-menu"}},[e._v("default ecosystem menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#default-ecosystem-page"}},[e._v("default ecosystem page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#gap-between-blocks"}},[e._v("gap between blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-generation-time"}},[e._v("max block generation time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-block-size"}},[e._v("max block size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-columns"}},[e._v("max columns")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-forsign-size"}},[e._v("max forsign size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-block"}},[e._v("max fuel block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-fuel-tx"}},[e._v("max fuel tx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-indexes"}},[e._v("max indexes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block"}},[e._v("max tx block")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-block-per-user"}},[e._v("max tx block per user")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#max-tx-size"}},[e._v("max tx size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#node-ban-time-local"}},[e._v("node ban time local")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#number-of-nodes"}},[e._v("number of nodes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-ecosystem"}},[e._v("price create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-application"}},[e._v("price create application")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-table"}},[e._v("price create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-column"}},[e._v("price create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-contract"}},[e._v("price create contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-menu"}},[e._v("price create menu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-create-page"}},[e._v("price create page")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-address-to-id"}},[e._v("price exec address to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-bind-wallet"}},[e._v("price exec bind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-column-condition"}},[e._v("price exec column condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-compile-contract"}},[e._v("price exec compile contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contains"}},[e._v("price exec contains")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-id"}},[e._v("price exec contract by id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contract-by-name"}},[e._v("price exec contract by name")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-contracts-list"}},[e._v("price exec contracts list")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-column"}},[e._v("price exec create column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-ecosystem"}},[e._v("price exec create ecosystem")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-create-table"}},[e._v("price exec create table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-ecosys-param"}},[e._v("price exec ecosys param")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval"}},[e._v("price exec eval")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-eval-condition"}},[e._v("price exec eval condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-flush-contract"}},[e._v("price exec flush contract")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-has-prefix"}},[e._v("price exec has prefix")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-id-to-address"}},[e._v("price exec id to address")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-is-object"}},[e._v("price exec is object")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-join"}},[e._v("price exec join")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-json-to-map"}},[e._v("price exec json to map")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-len"}},[e._v("price exec len")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-column"}},[e._v("price exec perm column")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-perm-table"}},[e._v("price exec perm table")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-pub-to-id"}},[e._v("price exec pub to id")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-replace"}},[e._v("price exec replace")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sha256"}},[e._v("price exec sha256")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-size"}},[e._v("price exec size")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-substr"}},[e._v("price exec substr")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-fuel"}},[e._v("price exec sys fuel")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-int"}},[e._v("price exec sys param int")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-sys-param-string"}},[e._v("price exec sys param string")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-table-conditions"}},[e._v("price exec table conditions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-unbind-wallet"}},[e._v("price exec unbind wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-update-lang"}},[e._v("price exec update lang")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-exec-validate-condition"}},[e._v("price exec validate condition")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-data"}},[e._v("price tx data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#price-tx-size-wallet"}},[e._v("price tx size wallet")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rollback-blocks"}},[e._v("rollback blocks")])])])])])])]),e._v(" "),a("h3",{attrs:{id:"depreciated"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#depreciated"}},[e._v("#")]),e._v(" Depreciated")]),e._v(" "),a("p",[e._v("Depreciated parameters:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-url"}},[e._v("blockchain url")])])]),e._v(" "),a("h2",{attrs:{id:"details-of-platform-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#details-of-platform-parameters"}},[e._v("#")]),e._v(" Details of platform parameters")]),e._v(" "),a("h3",{attrs:{id:"block-reward"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-reward"}},[e._v("#")]),e._v(" block reward")]),e._v(" "),a("p",[e._v("The number of IBXC tokens granted to the honor node that generates the block.")]),e._v(" "),a("p",[e._v("The account that receives the reward is specified in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-url"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-url"}},[e._v("#")]),e._v(" blockchain url")]),e._v(" "),a("p",[e._v("Depreciated.")]),e._v(" "),a("h3",{attrs:{id:"commission-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-size"}},[e._v("#")]),e._v(" commission size")]),e._v(" "),a("p",[e._v("Percentage of the commission.")]),e._v(" "),a("p",[e._v("The amount of the commission is calculated as a percentage of the total cost of implement the contract. The unit of the commission token is IBXC.")]),e._v(" "),a("p",[e._v("The commission will be transferred to the account address specified in the commission_wallet parameter.")]),e._v(" "),a("h3",{attrs:{id:"commission-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#commission-wallet"}},[e._v("#")]),e._v(" commission wallet")]),e._v(" "),a("p",[e._v("The account address to receive the commission.")]),e._v(" "),a("p",[e._v("The amount of commission is specified by the commission_size parameter.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-contract"}},[e._v("#")]),e._v(" default ecosystem contract")]),e._v(" "),a("p",[e._v("The source code of the default contract in the new ecosystem.")]),e._v(" "),a("p",[e._v("This contract provides access to the ecosystem creator.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-menu"}},[e._v("#")]),e._v(" default ecosystem menu")]),e._v(" "),a("p",[e._v("The source code of the default menu of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"default-ecosystem-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#default-ecosystem-page"}},[e._v("#")]),e._v(" default ecosystem page")]),e._v(" "),a("p",[e._v("The source code of the default page of the new ecosystem.")]),e._v(" "),a("h3",{attrs:{id:"fuel-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fuel-rate"}},[e._v("#")]),e._v(" fuel rate")]),e._v(" "),a("p",[e._v("The exchange rates of different ecosystem tokens by fuel unit.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[["ecosystem_id", "token_to_fuel_rate"], ["ecosystem_id2", "token_to_fuel_rate2"], ...]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("ecosystem_id")])]),e._v(" "),a("p",[e._v("Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("token_to_fuel_rate")])]),e._v(" "),a("p",[e._v("Exchange rate of the token by fuel unit.")])])]),e._v(" "),a("p",[e._v("For example:")]),e._v(" "),a("p",[a("code",[e._v('[["1","1000000000000"], ["2", "1000"]]')])]),e._v(" "),a("p",[e._v("One token of Ecosystem 1 is exchanged for 1,000,000,000,000 fuel units. One token of Ecosystem 2 is exchanged for 1,000 fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-create-rate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-rate"}},[e._v("#")]),e._v(" price create rate")]),e._v(" "),a("p",[e._v("The fuel rate of a new element.")]),e._v(" "),a("h3",{attrs:{id:"full-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#full-nodes"}},[e._v("#")]),e._v(" full nodes")]),e._v(" "),a("p",[e._v("The list of honor nodes of the blockchain network.")]),e._v(" "),a("p",[e._v("The format of this parameter:")]),e._v(" "),a("p",[a("code",[e._v('[{"api_address":"https://apihost1:port1","public_key":"nodepub1","tcp_address":"tcphost1:port2"},{"api_address":"https://apihost2:port1","public_key":"nodepub2","tcp_address":"tcphost2:port2"}]')])]),e._v(" "),a("ul",[a("li",[a("p",[a("code",[e._v("tcp_address")])]),e._v(" "),a("p",[e._v("TCP address and port of the node host.\nTransactions and new blocks will be sent to this host address, which can also be used to obtain the complete blockchain from the first block.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("api_address")])]),e._v(" "),a("p",[e._v("API address and port of the node host.\nThrough the API address, you can access any function of the platform without using Weaver. See details in RESTful API.")])]),e._v(" "),a("li",[a("p",[a("code",[e._v("public_key")])]),e._v(" "),a("p",[e._v("Public key of the node, which is used to verify the block signature.")])])]),e._v(" "),a("h3",{attrs:{id:"gap-between-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gap-between-blocks"}},[e._v("#")]),e._v(" gap between blocks")]),e._v(" "),a("p",[e._v("The time interval (in seconds) of generating two blocks on a node.")]),e._v(" "),a("p",[e._v("All nodes in the network use it to determine when to generate a new block. If the current node does not generate a new block within this time period, the turn passes to the next node in the list of honor nodes.")]),e._v(" "),a("p",[e._v("The minimum value of this parameter is "),a("code",[e._v("1")]),e._v(" second.")]),e._v(" "),a("h3",{attrs:{id:"incorrect-blocks-per-day"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#incorrect-blocks-per-day"}},[e._v("#")]),e._v(" incorrect blocks per day")]),e._v(" "),a("p",[e._v("The number of bad blocks that a node is allowed to generate per day before being banned.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive the same number of bad blocks from a node, the node will be banned from the network within a time period specified in "),a("a",{attrs:{href:"#node-ban-time"}},[e._v("node ban time")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"max-block-generation-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-generation-time"}},[e._v("#")]),e._v(" max block generation time")]),e._v(" "),a("p",[e._v("The maximum time for generating a block, in milliseconds. If a block is not successfully generated within this time period, a timeout error will be reported.")]),e._v(" "),a("h3",{attrs:{id:"max-block-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-block-size"}},[e._v("#")]),e._v(" max block size")]),e._v(" "),a("p",[e._v("The maximum size of a block, in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-columns"}},[e._v("#")]),e._v(" max columns")]),e._v(" "),a("p",[e._v("The maximum number of fields in a single table.")]),e._v(" "),a("p",[e._v("However, it does not include the predefined "),a("code",[e._v("id")]),e._v(" column.")]),e._v(" "),a("h3",{attrs:{id:"max-forsign-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-forsign-size"}},[e._v("#")]),e._v(" max forsign size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction signature in bytes.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-block"}},[e._v("#")]),e._v(" max fuel block")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-fuel-tx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-fuel-tx"}},[e._v("#")]),e._v(" max fuel tx")]),e._v(" "),a("p",[e._v("The maximum total fuel fee of a single transaction.")]),e._v(" "),a("h3",{attrs:{id:"max-indexes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-indexes"}},[e._v("#")]),e._v(" max indexes")]),e._v(" "),a("p",[e._v("The maximum number of primary key fields in a single table.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block"}},[e._v("#")]),e._v(" max tx block")]),e._v(" "),a("p",[e._v("The maximum number of transactions in a single block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-block-per-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-block-per-user"}},[e._v("#")]),e._v(" max tx block per user")]),e._v(" "),a("p",[e._v("The maximum number of transactions of an account in a block.")]),e._v(" "),a("h3",{attrs:{id:"max-tx-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#max-tx-size"}},[e._v("#")]),e._v(" max tx size")]),e._v(" "),a("p",[e._v("The maximum size of a transaction in bytes.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time"}},[e._v("#")]),e._v(" node ban time")]),e._v(" "),a("p",[e._v("The global ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When more than half of the nodes in the network receive bad blocks from a node up to the number of "),a("a",{attrs:{href:"#incorrect-blocks-per-day"}},[e._v("incorrect blocks per day")]),e._v(", the node will be banned in the network for this time period.")]),e._v(" "),a("h3",{attrs:{id:"node-ban-time-local"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-ban-time-local"}},[e._v("#")]),e._v(" node ban time local")]),e._v(" "),a("p",[e._v("The local ban period of the node, in milliseconds.")]),e._v(" "),a("p",[e._v("When a node receives an incorrect block from another node, it will locally ban the sender's node during this time period.")]),e._v(" "),a("h3",{attrs:{id:"number-of-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#number-of-nodes"}},[e._v("#")]),e._v(" number of nodes")]),e._v(" "),a("p",[e._v("The maximum number of honor nodes in the "),a("a",{attrs:{href:"#full-nodes"}},[e._v("full nodes")]),e._v(" parameter.")]),e._v(" "),a("h3",{attrs:{id:"price-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-ecosystem"}},[e._v("#")]),e._v(" price create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single ecosystem.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewEcosystem")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-application"}},[e._v("#")]),e._v(" price create application")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single application.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel fee of the "),a("code",[e._v("@1NewApplication")]),e._v(" contract. When the contract is implemented, the fuel fee for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-table"}},[e._v("#")]),e._v(" price create table")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewTable")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-column"}},[e._v("#")]),e._v(" price create column")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single table field.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewColumn")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-contract"}},[e._v("#")]),e._v(" price create contract")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single contract.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewContract")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-menu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-menu"}},[e._v("#")]),e._v(" price create menu")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single menu.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewMenu")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-create-page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-create-page"}},[e._v("#")]),e._v(" price create page")]),e._v(" "),a("p",[e._v("The fuel fee to create a new single page.")]),e._v(" "),a("p",[e._v("This parameter defines the additional fuel cost of the "),a("code",[e._v("@1NewPage")]),e._v(" contract. When the contract is implemented, the fuel cost for executing various functions of this contract will also be calculated and included in the total cost.")]),e._v(" "),a("p",[e._v("This parameter is calculated in fuel units. Use "),a("a",{attrs:{href:"#fuel-rate"}},[e._v("fuel rate")]),e._v(" and "),a("a",{attrs:{href:"#price-create-rate"}},[e._v("price create rate")]),e._v(" to convert fuel units to IBXC tokens.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-address-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-address-to-id"}},[e._v("#")]),e._v(" price exec address to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("AddressToId()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-bind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-bind-wallet"}},[e._v("#")]),e._v(" price exec bind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Activate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-column-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-column-condition"}},[e._v("#")]),e._v(" price exec column condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ColumnCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-compile-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-compile-contract"}},[e._v("#")]),e._v(" price exec compile contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CompileContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contains"}},[e._v("#")]),e._v(" price exec contains")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Contains()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-id"}},[e._v("#")]),e._v(" price exec contract by id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("GetContractById()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contract-by-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contract-by-name"}},[e._v("#")]),e._v(" price exec contract by name")]),e._v(" "),a("p",[e._v("The fuel fee of calling the GetContractByName() function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-contracts-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-contracts-list"}},[e._v("#")]),e._v(" price exec contracts list")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ContractsList()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-column"}},[e._v("#")]),e._v(" price exec create column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-ecosystem"}},[e._v("#")]),e._v(" price exec create ecosystem")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateEcosystem()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-create-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-create-table"}},[e._v("#")]),e._v(" price exec create table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("CreateTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-ecosys-param"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-ecosys-param"}},[e._v("#")]),e._v(" price exec ecosys param")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EcosysParam()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval"}},[e._v("#")]),e._v(" price exec eval")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Eval()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-eval-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-eval-condition"}},[e._v("#")]),e._v(" price exec eval condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("EvalCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-flush-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-flush-contract"}},[e._v("#")]),e._v(" price exec flush contract")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("FlushContract()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-has-prefix"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-has-prefix"}},[e._v("#")]),e._v(" price exec has prefix")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("HasPrefix()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-id-to-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-id-to-address"}},[e._v("#")]),e._v(" price exec id to address")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IdToAddress()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-is-object"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-is-object"}},[e._v("#")]),e._v(" price exec is object")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("IsObject()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-join"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-join"}},[e._v("#")]),e._v(" price exec join")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Join()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-json-to-map"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-json-to-map"}},[e._v("#")]),e._v(" price exec json to map")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("JSONToMap()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-len"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-len"}},[e._v("#")]),e._v(" price exec len")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Len()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-column"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-column"}},[e._v("#")]),e._v(" price exec perm column")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermColumn()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-perm-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-perm-table"}},[e._v("#")]),e._v(" price exec perm table")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PermTable()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-pub-to-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-pub-to-id"}},[e._v("#")]),e._v(" price exec pub to id")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("PubToID()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-replace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-replace"}},[e._v("#")]),e._v(" price exec replace")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Replace()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sha256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sha256"}},[e._v("#")]),e._v(" price exec sha256")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Sha256()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-size"}},[e._v("#")]),e._v(" price exec size")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Size()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-substr"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-substr"}},[e._v("#")]),e._v(" price exec substr")]),e._v(" "),a("p",[e._v("The fuel fee of calling "),a("code",[e._v("theSubstr()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-fuel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-fuel"}},[e._v("#")]),e._v(" price exec sys fuel")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysFuel()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-int"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-int"}},[e._v("#")]),e._v(" price exec sys param int")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamInt()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-sys-param-string"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-sys-param-string"}},[e._v("#")]),e._v(" price exec sys param string")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("SysParamString()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-table-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-table-conditions"}},[e._v("#")]),e._v(" price exec table conditions")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("TableConditions()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-unbind-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-unbind-wallet"}},[e._v("#")]),e._v(" price exec unbind wallet")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("Deactivate()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-update-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-update-lang"}},[e._v("#")]),e._v(" price exec update lang")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("UpdateLang()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-exec-validate-condition"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-exec-validate-condition"}},[e._v("#")]),e._v(" price exec validate condition")]),e._v(" "),a("p",[e._v("The fuel fee of calling the "),a("code",[e._v("ValidateCondition()")]),e._v(" function, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-data"}},[e._v("#")]),e._v(" price tx data")]),e._v(" "),a("p",[e._v("The fuel fee for every 1024 bytes of a transaction, calculated in fuel units.")]),e._v(" "),a("h3",{attrs:{id:"price-tx-size-wallet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#price-tx-size-wallet"}},[e._v("#")]),e._v(" price tx size wallet")]),e._v(" "),a("p",[e._v("The fee by transaction size, its unit is the IBXC token.")]),e._v(" "),a("p",[e._v("Except the ecosystem 1, a block space usage fee will be incurred proportionally when implementing a contract in other ecosystems, and its rate is "),a("em",[e._v("price tx size wallet")]),e._v(" IBXC tokens per megabyte.")]),e._v(" "),a("h3",{attrs:{id:"rollback-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rollback-blocks"}},[e._v("#")]),e._v(" rollback blocks")]),e._v(" "),a("p",[e._v("Maximum number of blocks that can be rolled back when detecting a fork in the blockchain.")])])}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file diff --git a/assets/js/98.ecfbcf5d.js b/assets/js/61.692e75d6.js similarity index 99% rename from assets/js/98.ecfbcf5d.js rename to assets/js/61.692e75d6.js index e37741e..2b4d978 100644 --- a/assets/js/98.ecfbcf5d.js +++ b/assets/js/61.692e75d6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{479:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" Daemon")]),e._v(" "),a("p",[e._v("In this section, we will describe how IBax nodes interact with each other from a technical perspective.")]),e._v(" "),a("h2",{attrs:{id:"about-the-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#about-the-server-daemon"}},[e._v("#")]),e._v(" About the server daemon")]),e._v(" "),a("p",[e._v("The server daemon needs to run on every network node, which executes various server functions and supports IBax's blockchain protocol. In the blockchain network, the daemon distributes blocks and transactions, generates new blocks, and verifies blocks and transactions received, and it can avoid the fork issue.")]),e._v(" "),a("h3",{attrs:{id:"honor-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node-daemon"}},[e._v("#")]),e._v(" Honor node daemon")]),e._v(" "),a("p",[e._v("A honor node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-daemon"}},[e._v("BlockGenerator daemon")])]),e._v(" "),a("p",[e._v("Generating new blocks.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("p",[e._v("Downloading new blocks from other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("p",[e._v("Confirming that blocks on the node also exist on most other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("p",[e._v("Distributing transactions and blocks to other honor nodes.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks daemon")]),e._v(" "),a("p",[e._v("Blocks in the queue, which contains blocks from other nodes.")]),e._v(" "),a("p",[e._v("Block processing logic is the same as "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx daemon")]),e._v(" "),a("p",[e._v("Verifying the transactions in queue.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler daemon")]),e._v(" "),a("p",[e._v("Running contracts as scheduled.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node-daemon"}},[e._v("#")]),e._v(" Guardian node daemon")]),e._v(" "),a("p",[e._v("A guardian node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Scheduler")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection daemon")]),e._v(" "),a("p",[e._v("This daemon downloads blocks and synchronizes the blockchain with other network nodes.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronization"}},[e._v("#")]),e._v(" Blockchain synchronization")]),e._v(" "),a("p",[e._v("This daemon synchronizes the blockchain by determining the maximum block height in the blockchain network, requesting new blocks, and solving the fork issue in the blockchain.")]),e._v(" "),a("h4",{attrs:{id:"check-for-blockchain-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-for-blockchain-updates"}},[e._v("#")]),e._v(" Check for blockchain updates")]),e._v(" "),a("p",[e._v("This daemon sends requests from the current block ID to all honor nodes.")]),e._v(" "),a("p",[e._v("If the current block ID of the node running the daemon is less than the current block ID of any honor node, the blockchain network node is considered out of date.")]),e._v(" "),a("h4",{attrs:{id:"download-new-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-new-blocks"}},[e._v("#")]),e._v(" Download new blocks")]),e._v(" "),a("p",[e._v("The node that returns the largest current block height is considered the latest node.\nThe daemon downloads all unknown blocks.")]),e._v(" "),a("h4",{attrs:{id:"solving-the-fork-issue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[e._v("#")]),e._v(" Solving the fork issue")]),e._v(" "),a("p",[e._v("If a fork is detected in the blockchain, the daemon moves the fork backward by downloading all blocks to a common parent block.\nWhen found the common parent block, a blockchain rollback is performed on the node running the daemon, and the correct block is added to the blockchain until the latest one is included.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlocksCollection daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockCollection daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" points to the largest block ID among all honor nodes.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" points to the data with the largest block ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-daemon"}},[e._v("#")]),e._v(" BlockGenerator daemon")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon generates new blocks.")]),e._v(" "),a("h3",{attrs:{id:"pre-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pre-verification"}},[e._v("#")]),e._v(" Pre-verification")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon analyzes the latest blocks in the blockchain to make new block generation plans.")]),e._v(" "),a("p",[e._v("If the following conditions are met, a new block can be generated:")]),e._v(" "),a("ul",[a("li",[e._v("The node that generated the latest block is in a node within the honor node list and runs the daemon.")]),e._v(" "),a("li",[e._v("The shortest time since the latest unverified block was generated.")])]),e._v(" "),a("h3",{attrs:{id:"block-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-generation"}},[e._v("#")]),e._v(" Block generation")]),e._v(" "),a("p",[e._v("A new block generated by the daemon contains all new transactions, which can be received from the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(" of other nodes or generated by the node running the daemon. The block generated is stored in the node database.")]),e._v(" "),a("h3",{attrs:{id:"tables-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-2"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (saves new blocks)")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon does not make any request to other daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator daemon")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends transactions and blocks to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[e._v("#")]),e._v(" Guardian node")]),e._v(" "),a("p",[e._v("When working on a guardian node, the daemon sends transactions generated by its node to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),a("p",[e._v("When working on a honor node, the daemon sends blocks generated and transaction hashes to all honor nodes.")]),e._v(" "),a("p",[e._v("Then, the honor node responds to transaction requests unknown to it. The daemon sends the complete transaction data as a response.")]),e._v(" "),a("h3",{attrs:{id:"tables-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-3"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Disseminator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("transactions")])]),e._v(" "),a("h3",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Send transactions and block hashes to the honor node.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Receive transaction data from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"confirmations-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirmations-daemon"}},[e._v("#")]),e._v(" Confirmations daemon")]),e._v(" "),a("p",[e._v("The Confirmations daemon checks whether all the blocks in its node exist on most other nodes.")]),e._v(" "),a("h3",{attrs:{id:"block-confirmation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-confirmation"}},[e._v("#")]),e._v(" Block confirmation")]),e._v(" "),a("p",[e._v("A block confirmed by multiple node in the network is considered as a confirmed block.")]),e._v(" "),a("p",[e._v("The daemon confirms all blocks one by one starting from the first that is currently not confirmed in the database.")]),e._v(" "),a("p",[e._v("Each block is confirmed in the way as follows:")]),e._v(" "),a("ul",[a("li",[e._v("Sending a request containing the ID of the block being confirmed to all honor nodes.")]),e._v(" "),a("li",[e._v("All honor nodes respond to the block hash.")]),e._v(" "),a("li",[e._v("If the hash responded matches the hash of the block on the daemon node, the confirmation counter value is increased. If not, the cancellation counter value is increased.")])]),e._v(" "),a("h3",{attrs:{id:"tables-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-4"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Confirmations daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("confirmation")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Confirmations daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Request block hashes from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-service-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-service-protocol"}},[e._v("#")]),e._v(" TCP service protocol")]),e._v(" "),a("p",[e._v("The TCP service protocol works on honor nodes and guardian nodes, which uses the binary protocol on TCP to requests from the BlocksCollection, Disseminator, and Confirmation daemons.")]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[e._v("Each request has a type defined by the first two bytes of the request.")]),e._v(" "),a("h2",{attrs:{id:"type-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-1"}},[e._v("#")]),e._v(" Type 1")]),e._v(" "),a("h4",{attrs:{id:"request-sender"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Hashes of the transaction and block.")]),e._v(" "),a("h4",{attrs:{id:"request-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("The block hash is added to the block queue.")]),e._v(" "),a("p",[e._v("Analyzes and verifies the transaction hashes, and select transactions that have not yet appeared on the node.")]),e._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No. After processing the request, a "),a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" request is issued.")]),e._v(" "),a("h2",{attrs:{id:"type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-2"}},[e._v("#")]),e._v(" Type 2")]),e._v(" "),a("h4",{attrs:{id:"request-sender-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-2"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-2"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("The transaction data, including the data size:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the transaction data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The transaction data.")]),e._v(" "),a("h4",{attrs:{id:"request-processing-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing-2"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("Verifies the transaction and add it to the transaction queue.")]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h2",{attrs:{id:"type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-4"}},[e._v("#")]),e._v(" Type 4")]),e._v(" "),a("h4",{attrs:{id:"request-sender-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-3"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-3"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block hash.")]),e._v(" "),a("p",[e._v("Returns "),a("code",[e._v("0")]),e._v(" if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-7"}},[e._v("#")]),e._v(" Type 7")]),e._v(" "),a("h4",{attrs:{id:"request-sender-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-4"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-4"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The block data, including data size.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the block data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The block data.")]),e._v(" "),a("p",[e._v("The connection is closed if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-10"}},[e._v("#")]),e._v(" Type 10")]),e._v(" "),a("h4",{attrs:{id:"request-sender-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-5"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-5"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{441:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" Daemon")]),e._v(" "),a("p",[e._v("In this section, we will describe how IBax nodes interact with each other from a technical perspective.")]),e._v(" "),a("h2",{attrs:{id:"about-the-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#about-the-server-daemon"}},[e._v("#")]),e._v(" About the server daemon")]),e._v(" "),a("p",[e._v("The server daemon needs to run on every network node, which executes various server functions and supports IBax's blockchain protocol. In the blockchain network, the daemon distributes blocks and transactions, generates new blocks, and verifies blocks and transactions received, and it can avoid the fork issue.")]),e._v(" "),a("h3",{attrs:{id:"honor-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node-daemon"}},[e._v("#")]),e._v(" Honor node daemon")]),e._v(" "),a("p",[e._v("A honor node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-daemon"}},[e._v("BlockGenerator daemon")])]),e._v(" "),a("p",[e._v("Generating new blocks.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("p",[e._v("Downloading new blocks from other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("p",[e._v("Confirming that blocks on the node also exist on most other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("p",[e._v("Distributing transactions and blocks to other honor nodes.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks daemon")]),e._v(" "),a("p",[e._v("Blocks in the queue, which contains blocks from other nodes.")]),e._v(" "),a("p",[e._v("Block processing logic is the same as "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx daemon")]),e._v(" "),a("p",[e._v("Verifying the transactions in queue.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler daemon")]),e._v(" "),a("p",[e._v("Running contracts as scheduled.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node-daemon"}},[e._v("#")]),e._v(" Guardian node daemon")]),e._v(" "),a("p",[e._v("A guardian node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Scheduler")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection daemon")]),e._v(" "),a("p",[e._v("This daemon downloads blocks and synchronizes the blockchain with other network nodes.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronization"}},[e._v("#")]),e._v(" Blockchain synchronization")]),e._v(" "),a("p",[e._v("This daemon synchronizes the blockchain by determining the maximum block height in the blockchain network, requesting new blocks, and solving the fork issue in the blockchain.")]),e._v(" "),a("h4",{attrs:{id:"check-for-blockchain-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-for-blockchain-updates"}},[e._v("#")]),e._v(" Check for blockchain updates")]),e._v(" "),a("p",[e._v("This daemon sends requests from the current block ID to all honor nodes.")]),e._v(" "),a("p",[e._v("If the current block ID of the node running the daemon is less than the current block ID of any honor node, the blockchain network node is considered out of date.")]),e._v(" "),a("h4",{attrs:{id:"download-new-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-new-blocks"}},[e._v("#")]),e._v(" Download new blocks")]),e._v(" "),a("p",[e._v("The node that returns the largest current block height is considered the latest node.\nThe daemon downloads all unknown blocks.")]),e._v(" "),a("h4",{attrs:{id:"solving-the-fork-issue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[e._v("#")]),e._v(" Solving the fork issue")]),e._v(" "),a("p",[e._v("If a fork is detected in the blockchain, the daemon moves the fork backward by downloading all blocks to a common parent block.\nWhen found the common parent block, a blockchain rollback is performed on the node running the daemon, and the correct block is added to the blockchain until the latest one is included.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlocksCollection daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockCollection daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" points to the largest block ID among all honor nodes.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" points to the data with the largest block ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-daemon"}},[e._v("#")]),e._v(" BlockGenerator daemon")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon generates new blocks.")]),e._v(" "),a("h3",{attrs:{id:"pre-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pre-verification"}},[e._v("#")]),e._v(" Pre-verification")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon analyzes the latest blocks in the blockchain to make new block generation plans.")]),e._v(" "),a("p",[e._v("If the following conditions are met, a new block can be generated:")]),e._v(" "),a("ul",[a("li",[e._v("The node that generated the latest block is in a node within the honor node list and runs the daemon.")]),e._v(" "),a("li",[e._v("The shortest time since the latest unverified block was generated.")])]),e._v(" "),a("h3",{attrs:{id:"block-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-generation"}},[e._v("#")]),e._v(" Block generation")]),e._v(" "),a("p",[e._v("A new block generated by the daemon contains all new transactions, which can be received from the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(" of other nodes or generated by the node running the daemon. The block generated is stored in the node database.")]),e._v(" "),a("h3",{attrs:{id:"tables-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-2"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (saves new blocks)")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon does not make any request to other daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator daemon")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends transactions and blocks to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[e._v("#")]),e._v(" Guardian node")]),e._v(" "),a("p",[e._v("When working on a guardian node, the daemon sends transactions generated by its node to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),a("p",[e._v("When working on a honor node, the daemon sends blocks generated and transaction hashes to all honor nodes.")]),e._v(" "),a("p",[e._v("Then, the honor node responds to transaction requests unknown to it. The daemon sends the complete transaction data as a response.")]),e._v(" "),a("h3",{attrs:{id:"tables-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-3"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Disseminator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("transactions")])]),e._v(" "),a("h3",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Send transactions and block hashes to the honor node.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Receive transaction data from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"confirmations-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirmations-daemon"}},[e._v("#")]),e._v(" Confirmations daemon")]),e._v(" "),a("p",[e._v("The Confirmations daemon checks whether all the blocks in its node exist on most other nodes.")]),e._v(" "),a("h3",{attrs:{id:"block-confirmation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-confirmation"}},[e._v("#")]),e._v(" Block confirmation")]),e._v(" "),a("p",[e._v("A block confirmed by multiple node in the network is considered as a confirmed block.")]),e._v(" "),a("p",[e._v("The daemon confirms all blocks one by one starting from the first that is currently not confirmed in the database.")]),e._v(" "),a("p",[e._v("Each block is confirmed in the way as follows:")]),e._v(" "),a("ul",[a("li",[e._v("Sending a request containing the ID of the block being confirmed to all honor nodes.")]),e._v(" "),a("li",[e._v("All honor nodes respond to the block hash.")]),e._v(" "),a("li",[e._v("If the hash responded matches the hash of the block on the daemon node, the confirmation counter value is increased. If not, the cancellation counter value is increased.")])]),e._v(" "),a("h3",{attrs:{id:"tables-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-4"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Confirmations daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("confirmation")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Confirmations daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Request block hashes from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-service-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-service-protocol"}},[e._v("#")]),e._v(" TCP service protocol")]),e._v(" "),a("p",[e._v("The TCP service protocol works on honor nodes and guardian nodes, which uses the binary protocol on TCP to requests from the BlocksCollection, Disseminator, and Confirmation daemons.")]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[e._v("Each request has a type defined by the first two bytes of the request.")]),e._v(" "),a("h2",{attrs:{id:"type-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-1"}},[e._v("#")]),e._v(" Type 1")]),e._v(" "),a("h4",{attrs:{id:"request-sender"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Hashes of the transaction and block.")]),e._v(" "),a("h4",{attrs:{id:"request-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("The block hash is added to the block queue.")]),e._v(" "),a("p",[e._v("Analyzes and verifies the transaction hashes, and select transactions that have not yet appeared on the node.")]),e._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No. After processing the request, a "),a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" request is issued.")]),e._v(" "),a("h2",{attrs:{id:"type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-2"}},[e._v("#")]),e._v(" Type 2")]),e._v(" "),a("h4",{attrs:{id:"request-sender-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-2"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-2"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("The transaction data, including the data size:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the transaction data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The transaction data.")]),e._v(" "),a("h4",{attrs:{id:"request-processing-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing-2"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("Verifies the transaction and add it to the transaction queue.")]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h2",{attrs:{id:"type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-4"}},[e._v("#")]),e._v(" Type 4")]),e._v(" "),a("h4",{attrs:{id:"request-sender-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-3"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-3"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block hash.")]),e._v(" "),a("p",[e._v("Returns "),a("code",[e._v("0")]),e._v(" if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-7"}},[e._v("#")]),e._v(" Type 7")]),e._v(" "),a("h4",{attrs:{id:"request-sender-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-4"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-4"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The block data, including data size.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the block data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The block data.")]),e._v(" "),a("p",[e._v("The connection is closed if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-10"}},[e._v("#")]),e._v(" Type 10")]),e._v(" "),a("h4",{attrs:{id:"request-sender-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-5"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-5"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/63.72e4ec3c.js b/assets/js/63.648d2341.js similarity index 99% rename from assets/js/63.72e4ec3c.js rename to assets/js/63.648d2341.js index 06dc0dc..b8aaca8 100644 --- a/assets/js/63.72e4ec3c.js +++ b/assets/js/63.648d2341.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{443:function(e,a,t){"use strict";t.r(a);var s=t(51),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"template-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#template-language"}},[e._v("#")]),e._v(" Template Language")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#page-construction"}},[e._v("Page construction")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#template-engine"}},[e._v("Template engine")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#create-pages"}},[e._v("Create pages")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#visual-page-designer"}},[e._v("Visual page designer")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#applicable-styles"}},[e._v("Applicable styles")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#page-module"}},[e._v("Page module")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#language-resource-editor"}},[e._v("Language resource editor")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-template-language"}},[e._v("Logicor template language")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#logicor-overview"}},[e._v("Logicor overview")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#use-pageparams-to-pass-parameters-to-pages"}},[e._v("Use PageParams to pass parameters to pages")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#calling-contracts"}},[e._v("Calling contracts")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-function-classification"}},[e._v("Logicor function classification")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#operations-on-variables"}},[e._v("Operations on variables:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#navigational-operations"}},[e._v("Navigational operations:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-manipulation"}},[e._v("Data manipulation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-presentation"}},[e._v("Data presentation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#accepting-of-data"}},[e._v("Accepting of data:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-formatting-elements"}},[e._v("Data formatting elements:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form-elements"}},[e._v("Form elements:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#operations-on-code-blocks"}},[e._v("Operations on code blocks:")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-function-references"}},[e._v("Logicor function references")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#address"}},[e._v("Address")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#addresstoid"}},[e._v("AddressToId")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#and"}},[e._v("And")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#binary"}},[e._v("Binary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#button"}},[e._v("Button")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#calculate"}},[e._v("Calculate")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chart"}},[e._v("Chart")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#custom"}},[e._v("Custom")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#datetime"}},[e._v("DateTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#forlist"}},[e._v("ForList")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form"}},[e._v("Form")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#getcolumntype"}},[e._v("GetColumnType")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#hint"}},[e._v("Hint")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#if"}},[e._v("If")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#image"}},[e._v("Image")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#imageinput"}},[e._v("ImageInput")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#include"}},[e._v("Include")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#input"}},[e._v("Input")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#inputerr"}},[e._v("InputErr")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#inputmap"}},[e._v("InputMap")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#label"}},[e._v("Label")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#linkpage"}},[e._v("LinkPage")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#map"}},[e._v("Map")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#menugroup"}},[e._v("MenuGroup")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#money"}},[e._v("Money")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#or"}},[e._v("Or")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#radiogroup"}},[e._v("RadioGroup")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#range"}},[e._v("Range")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#select"}},[e._v("Select")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#span"}},[e._v("Span")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#strong"}},[e._v("Strong")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#table"}},[e._v("Table")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#transactioninfo"}},[e._v("TransactionInfo")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#app-styles-for-mobile-devices"}},[e._v("App styles for mobile devices")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#layout"}},[e._v("Layout")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#title"}},[e._v("Title")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#strong-class-names"}},[e._v("Strong-class names")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#color"}},[e._v("Color")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#grid"}},[e._v("Grid")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#panel"}},[e._v("Panel")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form-app"}},[e._v("Form")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#button-app"}},[e._v("Button")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#icon"}},[e._v("Icon")])])])])])])]),e._v(" "),t("h2",{attrs:{id:"page-construction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#page-construction"}},[e._v("#")]),e._v(" Page construction")]),e._v(" "),t("p",[e._v("Weaver's Integrated Development Environment (IDE) is created using React, a JavaScript library. It has a page editor and a visual page designer. Pages are basic parts of an application, which are used to retrieve and display data from tables, create forms for receiving user input data, pass data to contracts, and navigate between application pages. Like contracts, pages are stored in the blockchain, which can ensure they are tamper-proof when loaded in the software client.")]),e._v(" "),t("h3",{attrs:{id:"template-engine"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#template-engine"}},[e._v("#")]),e._v(" Template engine")]),e._v(" "),t("p",[e._v("Page elements (pages and menus) are formed by developers in the template engine of a verification node using the template language in Weaver's page editor. All pages are constructed using the Logicor language developed by IBAX's development team. Use content/... API commands to request pages from nodes on the network. What the template engine sent as a response to this type of request is not an HTML page, but a JSON code composed of HTML tags that form a tree in accordance with the template structure. If you want to test the template engine, you can refer to the "),t("RouterLink",{attrs:{to:"/fr/reference/api2.html#content"}},[e._v("content")]),e._v(" API command.")],1),e._v(" "),t("h3",{attrs:{id:"create-pages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-pages"}},[e._v("#")]),e._v(" Create pages")]),e._v(" "),t("p",[e._v("You can use the page editor to create and edit pages, which can be found in the Pages section of Weaver's management tool. The editor can be used to:")]),e._v(" "),t("ul",[t("li",[e._v("Write the page code, highlight the keywords of the Logicor template language;")]),e._v(" "),t("li",[e._v("Select and display menus on pages;")]),e._v(" "),t("li",[e._v("Edit the menu page;")]),e._v(" "),t("li",[e._v("Configure the permission to change pages, by specifying the contract name with permission in the ContractConditions function, or by directly specifying the access permission in Change conditions;")]),e._v(" "),t("li",[e._v("Start the visual page designer;")]),e._v(" "),t("li",[e._v("Preview pages.")])]),e._v(" "),t("h4",{attrs:{id:"visual-page-designer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#visual-page-designer"}},[e._v("#")]),e._v(" Visual page designer")]),e._v(" "),t("p",[e._v("The visual page designer can be used to create page layouts without using interface codes in the Logicor language. With it, you can set the position of form elements and text on pages by dragging and dropping such elements, and configure the size of page blocks. It provides a set of ready-to-use blocks for presenting standard data models: with titles, forms and information panels. After creating a page in the visual page designer, you can write program logic for receiving data and conditional structure in the page editor. In the future, we plan to create a visual page designer with additional functions.")]),e._v(" "),t("h4",{attrs:{id:"applicable-styles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applicable-styles"}},[e._v("#")]),e._v(" Applicable styles")]),e._v(" "),t("p",[e._v("By default, pages are presented with Angular's Bootstrap Angle style. Users can create their own styles according to needs. The style is stored in the style parameter stylesheet in the ecosystem parameter table.")]),e._v(" "),t("h4",{attrs:{id:"page-module"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#page-module"}},[e._v("#")]),e._v(" Page module")]),e._v(" "),t("p",[e._v("To use a code block in multiple pages, you can create a page module to hold and embed it into the page code. Page modules can be created and edited in Weaver's Module Blocks. Like pages, editing permissions can be defined.")]),e._v(" "),t("h4",{attrs:{id:"language-resource-editor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#language-resource-editor"}},[e._v("#")]),e._v(" Language resource editor")]),e._v(" "),t("p",[e._v("Weaver includes a mechanism for page localization using a function "),t("strong",[e._v("LangRes")]),e._v(" of the Logicor template language. It could replace language resource tags on the page with text lines corresponding to the language selected by the user in the software client or browser. You can use the short syntax "),t("strong",[e._v("$lable$")]),e._v(" instead of the "),t("strong",[e._v("LangRes")]),e._v(" function. The translation of messages in popups initiated by the contract is performed by Needle's "),t("strong",[e._v("LangRes")]),e._v(" function.")]),e._v(" "),t("p",[e._v("You can create and edit language resources in the Language resources section of Weaver. A language resource consists of label names and corresponding translation of such name in different languages, as well as the corresponding two-letter language identifier (EN, ZH, JP, etc.).")]),e._v(" "),t("p",[e._v("The permissions for adding and changing language resources can be defined in the same way as other tables.")]),e._v(" "),t("h2",{attrs:{id:"logicor-template-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-template-language"}},[e._v("#")]),e._v(" Logicor template language")]),e._v(" "),t("p",[e._v("Logicor functions provide the following operations:")]),e._v(" "),t("ul",[t("li",[e._v("Retrieving values from the database: "),t("code",[e._v("DBFind")]),e._v(", showing data retrieved from the database as tables and charts;")]),e._v(" "),t("li",[e._v("Data operations for assigning and displaying variable values: "),t("code",[e._v("SetVar, GetVar, Data")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying and comparing date/time values: "),t("code",[e._v("DateTime, Now, CmpTime")]),e._v(";")]),e._v(" "),t("li",[e._v("Use various user data input fields to build forms: "),t("code",[e._v("Form, ImageInput, Input, RadioGroup, Select")]),e._v(";")]),e._v(" "),t("li",[e._v("Verify the data in the form field by displaying error messages: "),t("code",[e._v("Validate, InputErr")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying the navigation elements: "),t("code",[e._v("AddToolButton, LinkPage, Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Calling contracts: "),t("code",[e._v("Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Creating HTML page layout elements, including various tags, and choosing specific css classes: "),t("code",[e._v("Div, P, Span, etc")]),e._v(";")]),e._v(" "),t("li",[e._v("Embedding and unloading images onto pages: "),t("code",[e._v("Image, ImageInput")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying conditions of page layout fragment: "),t("code",[e._v("If, ElseIf, Else")]),e._v(";")]),e._v(" "),t("li",[e._v("Creating multi-level menus;")]),e._v(" "),t("li",[e._v("Page localization.")])]),e._v(" "),t("h3",{attrs:{id:"logicor-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-overview"}},[e._v("#")]),e._v(" Logicor overview")]),e._v(" "),t("p",[e._v("The Logicor page template language is a functional language that allows a function calling another function "),t("code",[e._v("FuncName(parameters)")]),e._v(" and nesting functions into each other. You can specify parameters without quotes, and delete unnecessary parameters.")]),e._v(" "),t("p",[e._v("If the parameter contains a comma, it should be enclosed in quotes (backquotes or double quotes). If a function can only have one parameter, you can use a comma without quotes. In addition, if the parameter has an unpaired closing parenthesis, quotes should be used.")]),e._v(" "),t("p",[e._v("If you put a parameter in quotes, but the parameter itself contains quotes, you can use different types of quotes or multiple quotes in the text.")]),e._v(" "),t("p",[e._v("In the function definition, each parameter has a specific name. You can call the function and specify the parameters in the order of declaration, or any parameter set in any order of name: "),t("code",[e._v("Parameter_name: Parameter_value")]),e._v(". Using this method, you can safely add new function parameters without breaking compatibility with the current template:")]),e._v(" "),t("p",[e._v("Functions can return texts, generate HTML elements (e.g. "),t("code",[e._v("Input")]),e._v("), or create HTML elements with nested HTML elements ("),t("code",[e._v("Div, P, Span")]),e._v("). In the latter case, a parameter with the predefined name Body is used to define the nested element. For example, nesting two divs in another div looks like this:")]),e._v(" "),t("p",[e._v("To define the nested elements described in the Body parameter, the following notation can be used: "),t("code",[e._v("FuncName(...){...}")]),e._v(". Nested elements should be specified with braces:")]),e._v(" "),t("p",[e._v("If you need to specify the same function multiple times in succession, you can use the dot "),t("code",[e._v(".")]),e._v(" instead of writing its name every time. For example, the following are the same:")]),e._v(" "),t("p",[e._v("With this language, you can assign a variable with the SetVar function and refer its value with "),t("code",[e._v("#name#")]),e._v(".")]),e._v(" "),t("p",[e._v("To refer to the language resources of the ecosystem, you can use "),t("code",[e._v("$langres$")]),e._v(", where langres is the language name.")]),e._v(" "),t("p",[e._v("The following variables are predefined:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("#key_id#")]),e._v(" - Account address of the current user;")]),e._v(" "),t("li",[t("code",[e._v("#ecosystem_id#")]),e._v(" - Current ecosystem ID;")]),e._v(" "),t("li",[t("code",[e._v("#guest_key#")]),e._v(" - Address of the guest account;")]),e._v(" "),t("li",[t("code",[e._v("#isMobile#")]),e._v(" - 1, if Weaver runs on a mobile device.")])]),e._v(" "),t("h4",{attrs:{id:"use-pageparams-to-pass-parameters-to-pages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#use-pageparams-to-pass-parameters-to-pages"}},[e._v("#")]),e._v(" Use PageParams to pass parameters to pages")]),e._v(" "),t("p",[e._v("Many functions support the PageParams parameter, which is used to pass parameters when redirecting to a new page. For example: PageParams: "),t("code",[e._v('"param1=value1,param2=value2"')]),e._v(". The parameter value can be a simple string or a variable with a reference value. When passing parameters to pages, a variable with the parameter name is created, e.g. "),t("code",[e._v("#param1#")]),e._v(" and "),t("code",[e._v("#param2#")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=world"')]),e._v(" - The new page receives the hello parameter with world as the value;")]),e._v(" "),t("li",[t("code",[e._v('PageParams: "hello=#world#"')]),e._v(" - The new page receives the hello parameter with the value of the world variable.")])]),e._v(" "),t("p",[e._v("In addition, the Val function can get data from forms, which is specified in the redirection.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=Val(world)"')]),e._v(" - The new page receives the hello parameter with the value of the world form element.")])]),e._v(" "),t("h4",{attrs:{id:"calling-contracts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#calling-contracts"}},[e._v("#")]),e._v(" Calling contracts")]),e._v(" "),t("p",[e._v("Logicor implements contract calls by clicking the Button function in a form. Once an event is triggered, the data entered by the user in a form field on the page will be passed to the contract. If the form field name corresponds to the variable name in the data section of the contract called, the data will be automatically transferred. The Button function allows to open a modal window for the user to verify the contract execution, and initiate the redirection to the specified page when the contract is successfully executed, and pass certain parameters to the page.")]),e._v(" "),t("h2",{attrs:{id:"logicor-function-classification"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-function-classification"}},[e._v("#")]),e._v(" Logicor function classification")]),e._v(" "),t("h3",{attrs:{id:"operations-on-variables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operations-on-variables"}},[e._v("#")]),e._v(" Operations on variables:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])])]),e._v(" "),t("h3",{attrs:{id:"navigational-operations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigational-operations"}},[e._v("#")]),e._v(" Navigational operations:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#button"}},[e._v("Button")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#linkpage"}},[e._v("LinkPage")])])])])]),e._v(" "),t("h3",{attrs:{id:"data-manipulation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-manipulation"}},[e._v("#")]),e._v(" Data manipulation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#calculate"}},[e._v("Calculate")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#datetime"}},[e._v("DateTime")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#money"}},[e._v("Money")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"data-presentation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-presentation"}},[e._v("#")]),e._v(" Data presentation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#hint"}},[e._v("Hint")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#image"}},[e._v("Image")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#chart"}},[e._v("Chart")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menugroup"}},[e._v("MenuGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#table"}},[e._v("Table")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#forlist"}},[e._v("ForList")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"accepting-of-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#accepting-of-data"}},[e._v("#")]),e._v(" Accepting of data:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#address"}},[e._v("Address")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#addresstoid"}},[e._v("AddressToId")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#range"}},[e._v("Range")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#getcolumntype"}},[e._v("GetColumnType")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#binary"}},[e._v("Binary")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#transactioninfo"}},[e._v("TransactionInfo")])])])])]),e._v(" "),t("h3",{attrs:{id:"data-formatting-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-formatting-elements"}},[e._v("#")]),e._v(" Data formatting elements:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#span"}},[e._v("Span")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#label"}},[e._v("Label")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#strong"}},[e._v("Strong")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"form-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form-elements"}},[e._v("#")]),e._v(" Form elements:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#form"}},[e._v("Form")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputerr"}},[e._v("InputErr")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputmap"}},[e._v("InputMap")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#imageinput"}},[e._v("ImageInput")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#radiogroup"}},[e._v("RadioGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#map"}},[e._v("Map")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#input"}},[e._v("Input")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#select"}},[e._v("Select")])]),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"operations-on-code-blocks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operations-on-code-blocks"}},[e._v("#")]),e._v(" Operations on code blocks:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#if"}},[e._v("If")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#or"}},[e._v("Or")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#include"}},[e._v("Include")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#and"}},[e._v("And")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h2",{attrs:{id:"logicor-function-references"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-function-references"}},[e._v("#")]),e._v(" Logicor function references")]),e._v(" "),t("h3",{attrs:{id:"address"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address"}},[e._v("#")]),e._v(" Address")]),e._v(" "),t("p",[e._v("This function returns the wallet address "),t("code",[e._v("xxxx-xxxx-...-xxxx")]),e._v(" of a specific account address; if no address is specified, the account address of the current user will be used as the parameter.")]),e._v(" "),t("h4",{attrs:{id:"syntax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(account)\n\n")])])]),t("blockquote",[t("p",[e._v("Address")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("account")])]),e._v(" "),t("p",[e._v("Account address.")])])]),e._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Span(Your wallet: Address(#account#))\n")])])]),t("h3",{attrs:{id:"addresstoid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[e._v("#")]),e._v(" AddressToId")]),e._v(" "),t("p",[e._v("It returns the account address of a specific wallet address xxxx-xxxx-...-xxxx.")]),e._v(" "),t("h4",{attrs:{id:"syntax-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-2"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(Wallet)\n")])])]),t("blockquote",[t("p",[e._v("AddressToId")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Wallet")])]),e._v(" "),t("p",[e._v("The wallet address in XXXX-...-XXXX format.")])])]),e._v(" "),t("h4",{attrs:{id:"example-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(#wallet#)\n")])])]),t("h3",{attrs:{id:"addtoolbutton"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addtoolbutton"}},[e._v("#")]),e._v(" AddToolButton")]),e._v(" "),t("p",[e._v("Create a button panel with an addtoolbutton element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-3"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddToolButton(Title, Icon, Page, PageParams)\n [.Popup(Width, Header)]\n")])])]),t("blockquote",[t("p",[e._v("AddToolButton")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Button title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Button icon style.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the page redirects to.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("The parameters passed to the page.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("The modal window pops up.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Header")])]),e._v(" "),t("p",[e._v("Title of the window.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Percentage of window width.\nIts range is 1 to 100.")])])]),e._v(" "),t("h4",{attrs:{id:"example-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('AddToolButton(Title: $@1broadcast$, Page: @1notifications_broadcast, Icon: icon-plus).Popup(Header: $@1notifications_broadcast$, Width: "50")\n')])])]),t("h3",{attrs:{id:"and"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#and"}},[e._v("#")]),e._v(" And")]),e._v(" "),t("p",[e._v("It returns the result of an and logical operation. All parameters listed in parentheses are separated by commas. If one of the parameters is an empty string, zero or "),t("code",[e._v("false")]),e._v(", the parameter value is "),t("code",[e._v("false")]),e._v(", otherwise the parameter value is "),t("code",[e._v("true")]),e._v(". If the parameter value is "),t("code",[e._v("true")]),e._v(", the function returns "),t("code",[e._v("1")]),e._v(", otherwise it returns "),t("code",[e._v("0")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-4"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("And(parameters)\n")])])]),t("h4",{attrs:{id:"example-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(And(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"appparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#appparam"}},[e._v("#")]),e._v(" AppParam")]),e._v(" "),t("p",[e._v("Output the application parameter value, which is taken from the app_params table of the current ecosystem. If there is a language resource with the specified name, its value will be automatically replaced.")]),e._v(" "),t("h4",{attrs:{id:"syntax-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-5"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(App, Name, Index, Source)\n\n")])])]),t("blockquote",[t("p",[e._v("AppParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("App")])]),e._v(" "),t("p",[e._v("Application ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nThe parameter elements index, starting from 1. For example, if "),t("code",[e._v("type = full,light")]),e._v(", then "),t("code",[e._v("AppParam(1, type, 2)")]),e._v(" returns "),t("code",[e._v("light")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of specific parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("h4",{attrs:{id:"example-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(1, type, Source: mytype)\n")])])]),t("h3",{attrs:{id:"arraytosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#arraytosource"}},[e._v("#")]),e._v(" ArrayToSource")]),e._v(" "),t("p",[e._v("Create an arraytosource element and fill it with the key-value pairs of a JSON array. The data obtained is put into the Source element, which can be used later in the source input function (e.g. Table).")]),e._v(" "),t("h4",{attrs:{id:"syntax-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-6"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(Source, Data)\n\n")])])]),t("blockquote",[t("p",[e._v("ArrayToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("A JSON array or a variable name containing a JSON array ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"example-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(src, #myjsonarr#)\nArrayToSource(dat, [1, 2, 3])\n")])])]),t("h3",{attrs:{id:"binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#binary"}},[e._v("#")]),e._v(" Binary")]),e._v(" "),t("p",[e._v("Returns links to static files stored in the binary table binaries.")]),e._v(" "),t("h4",{attrs:{id:"syntax-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Binary(Name, AppID, MemberID)[.ById(ID)][.Ecosystem(ecosystem)]\n")])])]),t("blockquote",[t("p",[e._v("Binary")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("File name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("AppID")])]),e._v(" "),t("p",[e._v("Application ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MemberID")])]),e._v(" "),t("p",[e._v("Account address, 0 by default.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ID")])]),e._v(" "),t("p",[e._v("Static file ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ecosystem")])]),e._v(" "),t("p",[e._v("Ecosystem ID. If it is not specified, the binary file is requested from the current ecosystem.")])])]),e._v(" "),t("h4",{attrs:{id:"example-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Image(Src: Binary("my_image", 1))\nImage(Src: Binary().ById(2))\nImage(Src: Binary().ById(#id#).Ecosystem(#eco#))\n')])])]),t("h3",{attrs:{id:"button"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#button"}},[e._v("#")]),e._v(" Button")]),e._v(" "),t("p",[e._v("Create a button HTML element which will create a button to call a contract or open a page.")]),e._v(" "),t("h4",{attrs:{id:"syntax-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Button(Body, Page, Class, Contract, Params, PageParams)\n [.CompositeContract(Contract, Data)]\n [.Alert(Text, ConfirmButton, CancelButton, Icon)]\n [.Popup(Width, Header)]\n [.Style(Style)]\n [.ErrorRedirect((ErrorID,PageName,PageParams)]\n")])])]),t("blockquote",[t("p",[e._v("Button")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the page redirects to.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Button class.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Contract")])]),e._v(" "),t("p",[e._v("Name of the contract called.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("The list of values passed to the contract. Normally, the value of the contract parameter (the data section) is obtained from an HTML element (such as an input field) of id with a similar name. If the element id is different from the name of the contract parameter, then the value should be assigned in the format of contractField1=idname1, contractField2=idname2. This parameter is returned to attr as the object {contractField1: idname1, contractField2: idname2}.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("The format of parameters passed to the redirect page is pageField1=idname1, pageField2=idname2. Variables with target page parameter names #pageField1 and #pageField2 are created on the target page and assigned the specified values. See more specifications for parameter passing Use PageParams to pass parameters to pages).")])])]),e._v(" "),t("blockquote",[t("p",[e._v("CompositeContract")])]),e._v(" "),t("p",[e._v("Used to add additional contracts to the button. CompositeContract can be used multiple times.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the contract.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("The contract parameters are JSON arrays.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Alert")])]),e._v(" "),t("p",[e._v("Display the message.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Text of the message.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ConfirmButton")])]),e._v(" "),t("p",[e._v("Title of the Confirm button.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("CancelButton")])]),e._v(" "),t("p",[e._v("Title of the Cancel button.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Button icon.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("Output modal window.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Header")])]),e._v(" "),t("p",[e._v("Window title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Percentage of window width.\nIts range is 1 to 100.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("ErrorRedirect")])]),e._v(" "),t("p",[e._v("Specify and redirect to a page when the :ref:contractfundef-Throw function generates an error during contract execution. There can be several ErrorRedirect calls. Therefore, when returning the "),t("em",[e._v("errredirect")]),e._v(" attribute, the attribute key is ErrorID and the value is the parameters list.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("ErrorID")])]),e._v(" "),t("p",[e._v("Error ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageName")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Parameters passed to the page.")])])]),e._v(" "),t("h4",{attrs:{id:"example-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Button(Submit, default_page, mybtn_class).Alert(Alert message)\nButton(Contract: MyContract, Body:My Contract, Class: myclass, Params:"Name=myid,Id=i10,Value")\n')])])]),t("h3",{attrs:{id:"calculate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#calculate"}},[e._v("#")]),e._v(" Calculate")]),e._v(" "),t("p",[e._v("It returns the result of the arithmetic expression passed in the Exp parameter. The following operations are applicable: +, -, *, / and brackets ().")]),e._v(" "),t("h4",{attrs:{id:"syntax-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Calculate(Exp, Type, Prec)\n")])])]),t("blockquote",[t("p",[e._v("Calculate")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("An arithmetic expression, containing numbers and the #name# variable.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Result data type: int, float, money. If not specified, it is float if there is a number with a decimal point, otherwise it is int.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Prec")])]),e._v(" "),t("p",[e._v("float and money data, with two significant digits after the decimal point.")])])]),e._v(" "),t("h4",{attrs:{id:"example-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Calculate( Exp: (342278783438+5000)\\*(#val#-932780000), Type: money, Prec:18 )\nCalculate(10000-(34+5)\\*#val#)\nCalculate("((10+#val#-45)\\*3.0-10)/4.5 + #val#", Prec: 4)\n')])])]),t("h3",{attrs:{id:"chart"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chart"}},[e._v("#")]),e._v(" Chart")]),e._v(" "),t("p",[e._v("Create HTML charts.")]),e._v(" "),t("h4",{attrs:{id:"syntax-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Chart(Type, Source, FieldLabel, FieldValue, Colors)\n")])])]),t("blockquote",[t("p",[e._v("Chart")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Chart type.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name of the data source, e.g., obtained from the "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldLabel")])]),e._v(" "),t("p",[e._v("Name of the header field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldValue")])]),e._v(" "),t("p",[e._v("Name of the value field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Colors")])]),e._v(" "),t("p",[e._v("List of colors.")])])]),e._v(" "),t("h4",{attrs:{id:"example-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"name,count"){\n John Silver,10\n "Mark, Smith",20\n "Unknown ""Person""",30\n}\nChart(Type: "bar", Source: mysrc, FieldLabel: "name", FieldValue: "count", Colors: "red, green")\n')])])]),t("h3",{attrs:{id:"cmptime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cmptime"}},[e._v("#")]),e._v(" CmpTime")]),e._v(" "),t("p",[e._v("It compares two time values in the same format.\nIt supports unixtime, "),t("code",[e._v("YYYY-MM-DD HH:MM:SS")]),e._v(" and any time format, such as "),t("code",[e._v("YYYYMMDD")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CmpTime(Time1, Time2)\n")])])]),t("p",[e._v("Return value")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("-1")]),e._v(" - Time1 Time2.")])]),e._v(" "),t("h4",{attrs:{id:"example-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(CmpTime(#time1#, #time2#)<0){...}\n")])])]),t("h3",{attrs:{id:"code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#code"}},[e._v("#")]),e._v(" Code")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.")]),e._v(" "),t("p",[e._v("It substitute a variable with the value of the variable (for example, "),t("code",[e._v("#name#")]),e._v(").")]),e._v(" "),t("h4",{attrs:{id:"syntax-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code(Text)\n")])])]),t("blockquote",[t("p",[e._v("Code")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code( P(This is the first line.\n Span(This is the second line.))\n)\n")])])]),t("h3",{attrs:{id:"codeasis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#codeasis"}},[e._v("#")]),e._v(" CodeAsIs")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.\nIt does not replace a variable with its value. For example, "),t("code",[e._v("#name#")]),e._v(" will be displayed as is.")]),e._v(" "),t("h4",{attrs:{id:"syntax-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs(Text)\n")])])]),t("blockquote",[t("p",[e._v("CodeAsIs")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs( P(This is the #test1#.\n Span(This is the #test2#.))\n)\n")])])]),t("h3",{attrs:{id:"data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[e._v("#")]),e._v(" Data")]),e._v(" "),t("p",[e._v("Create a data element, fill it with the specified data and put it in Source. Then, you can receive Source as a data input in "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions. The sequence of column names corresponds to the sequence of data entry values.")]),e._v(" "),t("h4",{attrs:{id:"syntax-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Data(Source,Columns,Data)\n [.Custom(Column){Body}]\n")])])]),t("blockquote",[t("p",[e._v("Data")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name of the data source. You can specify any name that will be passed to other functions later as a data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Columns")])]),e._v(" "),t("p",[e._v("A list of column names, separated by commas.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("Data set.")]),e._v(" "),t("p",[e._v("One record per line. Column values must be separated by commas. Data and Columns should be set in the same order.")]),e._v(" "),t("p",[e._v("Values with commas should be enclosed in double quotes ("),t("code",[e._v('"example1, example2", 1, 2')]),e._v("). Quoted values should be put in two double quotes ("),t("code",[e._v('"""example", "example2""", 1, 2')]),e._v(").")])])]),e._v(" "),t("h3",{attrs:{id:"custom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom"}},[e._v("#")]),e._v(" Custom")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to [Table](#table) and other functions to receive data.\nUse multiple Custom functions if you want to assign multiple calculated columns.\n")])])]),t("ul",[t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")])])]),e._v(" "),t("h4",{attrs:{id:"example-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"id,name"){\n "1",John Silver\n 2,"Mark, Smith"\n 3,"Unknown ""Person"""\n }.Custom(link){Button(Body: View, Class: btn btn-link, Page: user, PageParams: "id=#id#"}\n')])])]),t("h3",{attrs:{id:"datetime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datetime"}},[e._v("#")]),e._v(" DateTime")]),e._v(" "),t("p",[e._v("Display the time and date in the specified format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(DateTime, Format)\n")])])]),t("blockquote",[t("p",[e._v("DateTime")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("DateTime")])]),e._v(" "),t("p",[e._v("Time and date expressed in unixtime or standard format "),t("code",[e._v("2006-01-02T15:04:05")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("Format template: year in 2-digit format "),t("code",[e._v("YY")]),e._v(", 4-digit format "),t("code",[e._v("YYYY")]),e._v(", month in "),t("code",[e._v("MM")]),e._v(", day in "),t("code",[e._v("DD")]),e._v(", hour in "),t("code",[e._v("HH")]),e._v(", minute in "),t("code",[e._v("MM")]),e._v(", second in "),t("code",[e._v("SS")]),e._v(", e.g.: "),t("code",[e._v("YY/MM/DD HH:MM")]),e._v(".\nIf it is not specified or missing, "),t("code",[e._v("YYYY-MM-DD HH:MI:SS")]),e._v(" will be used.")])])]),e._v(" "),t("h4",{attrs:{id:"example-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(2017-11-07T17:51:08)\nDateTime(#mytime#,HH:MI DD.MM.YYYY)\n")])])]),t("h3",{attrs:{id:"dbfind"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbfind"}},[e._v("#")]),e._v(" DBFind")]),e._v(" "),t("p",[e._v("Create a dbfind element, fill it with the data of the table table and put it in the Source structure, which can later be used for the input data of "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions Source.")]),e._v(" "),t("h4",{attrs:{id:"syntax-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBFind(table, Source)\n [.Columns(columns)]\n [.Where(conditions)]\n [.WhereId(id)]\n [.Order(name)]\n [.Limit(limit)]\n [.Offset(offset)]\n [.Count(countvar)]\n [.Ecosystem(id)]\n [.Cutoff(columns)]\n [.Custom(Column){Body}]\n [.Vars(Prefix)]\n")])])]),t("blockquote",[t("p",[e._v("DBFind")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Columns")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("columns")])]),e._v(" "),t("p",[e._v("If not specified, a list of all fields will be returned. If there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(". In this case, the field name generated is "),t("code",[e._v("columnname.fieldname")]),e._v(".")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Where")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("conditions")])])]),e._v(" "),t("p",[e._v("Data query conditions. See DBFind.\nIf there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(".")]),e._v(" "),t("blockquote",[t("p",[e._v("WhereId\nQuery by ID, e.g. "),t("code",[e._v(".WhereId(1)")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Entry ID.")]),e._v(" "),t("blockquote",[t("p",[e._v("Order\nSort by field.\nFor more information about the sorting syntax, see "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("name")])])]),e._v(" "),t("p",[e._v("Field Name")]),e._v(" "),t("blockquote",[t("p",[e._v("Limit")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("limit")])]),e._v(" "),t("p",[e._v("The number of entries returned, 25 by default. The maximum number is 10,000.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Offset")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Offset")])]),e._v(" "),t("p",[e._v("Offset.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Count")])]),e._v(" "),t("p",[e._v("Specify the total number of rows of the Where condition.\nIn addition to storing it in a variable, the total count is returned in the count parameter of the dbfind element.")]),e._v(" "),t("p",[e._v("If Where and WhereID are not specified, the total count of rows in the table will be returned.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("countvar")])]),e._v(" "),t("p",[e._v("Name of the variable that holds the row count.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Ecosystem")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Ecosystem ID. By default, the data comes from the specified table in the current ecosystem.")]),e._v(" "),t("blockquote",[t("p",[e._v("Cutoff")])]),e._v(" "),t("p",[e._v("Used to cut and display large amounts of text data.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("columns")])])]),e._v(" "),t("p",[e._v("A comma-separated list of fields that must be processed by the Cutoff function.\nThe field value will be replaced by a JSON object that has two fields: link link and title title. If the field value contains more than 32 characters, link pointing to the first 32 characters of the full text is returned. If the field value contains 32 characters or less, link is set to void and title contains the complete field value.")]),e._v(" "),t("blockquote",[t("p",[e._v("Custom")])]),e._v(" "),t("p",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions to receive data.\nIf you want to assign multiple calculated columns, use multiple Custom functions.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Column")])])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Body")])])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")]),e._v(" "),t("blockquote",[t("p",[e._v("Vars")])]),e._v(" "),t("p",[e._v("The first row obtained by the query will generate a set of variables with values. When it is specified, the Limit parameter automatically becomes 1, and only one (1) record is returned.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Prefix")])])]),e._v(" "),t("p",[e._v("The prefix added to the variable name. Its format is "),t("code",[e._v("#prefix_columnname#")]),e._v(", where the column name immediately follows the underscore symbol. If there is a column containing a JSON field, the variable generated will be in the following format: "),t("code",[e._v("#prefix_columnname_field#")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"example-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(parameters,myparam)\nDBFind(parameters,myparam).Columns(name,value).Where({name:"money"})\nDBFind(parameters,myparam).Custom(myid){Strong(#id#)}.Custom(myname){\n Strong(Em(#name#))Div(myclass, #company#)\n}\n')])])]),t("h3",{attrs:{id:"div"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#div"}},[e._v("#")]),e._v(" Div")]),e._v(" "),t("p",[e._v("Create a div HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(Class, Body)\n [.Style(Style)]\n [.Show(Condition)]\n [.Hide(Condition)]\n")])])]),t("blockquote",[t("p",[e._v("Div")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the div.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("blockquote",[t("p",[e._v("Show")])]),e._v(" "),t("p",[e._v("Define the conditions for displaying Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("See Hide below.")]),e._v(" "),t("blockquote",[t("p",[e._v("Hide")])]),e._v(" "),t("p",[e._v("Define the conditions for hiding Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("The expression format is "),t("code",[e._v("InputName=Value")]),e._v(", when all expressions are true, "),t("em",[e._v("Condition")]),e._v(" is true, and when the value of "),t("code",[e._v("InputName")]),e._v(" is equal to "),t("code",[e._v("Value")]),e._v(", "),t("em",[e._v("Condition")]),e._v(" is true. If multiple "),t("em",[e._v("Show")]),e._v(" or "),t("em",[e._v("Hide")]),e._v(" are called, there must be at least one "),t("em",[e._v("Condition")]),e._v(" parameter is true.")]),e._v(" "),t("h4",{attrs:{id:"example-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Form(){\n Div(text-left){\n Input(Name: "broadcast", Type: "checkbox", Value: "false")\n }\n Div(text-left){\n hello\n }.Show("broadcast=false")\n Div(text-left){\n world\n }.Hide("broadcast=false")\n}\n')])])]),t("h3",{attrs:{id:"ecosysparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecosysparam"}},[e._v("#")]),e._v(" EcosysParam")]),e._v(" "),t("p",[e._v("This function obtains parameter values from the ecosystem parameter table of the current ecosystem. If the returned result name contains the language resources, it will be translated accordingly.")]),e._v(" "),t("h4",{attrs:{id:"syntax-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EcosysParam(Name, Index, Source)\n")])])]),t("blockquote",[t("p",[e._v("EcosysParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("If the requested parameter is a list of comma-separated elements, you can specify an index starting from 1. For example, if "),t("code",[e._v("gender = male,female")]),e._v(", then "),t("code",[e._v("gender = male,female")]),e._v(" returns "),t("code",[e._v("female")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of the specified parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(EcosysParam(founder_account))\nEcosysParam(gender, Source: mygender)\n\nEcosysParam(Name: gender_list, Source: src_gender)\nSelect(Name: gender, Source: src_gender, NameColumn: name, ValueColumn: id)\n")])])]),t("h3",{attrs:{id:"em"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#em"}},[e._v("#")]),e._v(" Em")]),e._v(" "),t("p",[e._v("Create an em HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Em(Body, Class)\n")])])]),t("blockquote",[t("p",[e._v("Em")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("The em class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("This is an Em(important news).\n")])])]),t("h3",{attrs:{id:"forlist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#forlist"}},[e._v("#")]),e._v(" ForList")]),e._v(" "),t("p",[e._v("Display the list of elements in the Source data source in the template format set in Body and create a "),t("strong",[e._v("forlist")]),e._v(" element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(Source, Index){Body}\n")])])]),t("blockquote",[t("p",[e._v("ForList")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" or "),t("a",{attrs:{href:"#data"}},[e._v("Data")]),e._v(" function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("The variable of the iteration counter, starting from 1.\nAn optional parameter. If not specified, the iteration count value will be written to the [Source] _index variable.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Template for inserting elements.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(mysrc){Span(#mysrc_index#. #name#)}\n")])])]),t("h3",{attrs:{id:"form"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),t("p",[e._v("Create a form HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(Class, Body) [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Form")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the form.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style\nThe CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("h4",{attrs:{id:"example-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(class1 class2, Input(myid))\n")])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[e._v("#")]),e._v(" GetColumnType")]),e._v(" "),t("p",[e._v("Returns the field data type of a specific table.")]),e._v(" "),t("p",[e._v("Types returned include: "),t("code",[e._v("text, varchar, number, money, double, bytes, json, datetime, double")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetColumnType(Table, Column)\n")])])]),t("blockquote",[t("p",[e._v("GetColumnType")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Field name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("SetVar(coltype,GetColumnType(members, member_name))Div(){#coltype#}\n")])])]),t("h3",{attrs:{id:"gethistory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gethistory"}},[e._v("#")]),e._v(" GetHistory")]),e._v(" "),t("p",[e._v("Create a gethistory element and fill it with the history change records of the entries in the specified table. The data generated will be placed in the Source element, which can be used later in the source input function (for example, "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe array is sorted in order from the last modified.\nThe id field in the array points to the id of the rollback_tx table. block_id represents the block ID, block_time represents the block generation timestamp.")]),e._v(" "),t("h4",{attrs:{id:"syntax-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(Source, Name, Id, RollbackId)\n")])])]),t("blockquote",[t("p",[e._v("GetHistory")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Id")])]),e._v(" "),t("p",[e._v("Entry ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("RollbackId")])]),e._v(" "),t("p",[e._v("An optional parameter. If specified, only one record with the specified ID will be returned from the rollback_tx table.")])])]),e._v(" "),t("h4",{attrs:{id:"example-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(blocks, BlockHistory, 1)\n")])])]),t("h3",{attrs:{id:"getvar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getvar"}},[e._v("#")]),e._v(" GetVar")]),e._v(" "),t("p",[e._v("It returns the value of the specified variable that already exists, or an empty string if it does not exist.\nThe getvar element is only created when an editable tree is requested. The difference between "),t("code",[e._v("GetVar(varname)")]),e._v(" and "),t("code",[e._v("#varname")]),e._v(" is that if varname does not exist, GetVar will return an empty string, while #varname# will be interpreted as a string value.")]),e._v(" "),t("h4",{attrs:{id:"syntax-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetVar(Name)\n")])])]),t("blockquote",[t("p",[e._v("GetVar")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Variable name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(GetVar(name)){#name#}.Else{Name is unknown}\n")])])]),t("h3",{attrs:{id:"hint"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hint"}},[e._v("#")]),e._v(" Hint")]),e._v(" "),t("p",[e._v("Create a hint element for hints.")]),e._v(" "),t("h4",{attrs:{id:"syntax-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Hint(Icon,Title,Text)\n")])])]),t("blockquote",[t("p",[e._v("Hint")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Hint title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Hint text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Hint(Icon: "icon-wrench",Title:$@1pa_settings$,Text: This is a hint text)\n')])])]),t("h3",{attrs:{id:"if"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#if"}},[e._v("#")]),e._v(" If")]),e._v(" "),t("p",[e._v("Condition statement.\nReturns the first If or ElseIf child element that satisfies Condition. Otherwise, return the Else child element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Condition){ Body}\n [.ElseIf(Condition){ Body }]\n [.Else{ Body }]\n")])])]),t("blockquote",[t("p",[e._v("If")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Condition")])]),e._v(" "),t("p",[e._v("If the condition is equal to an empty string, 0 or false, it is considered that the condition is not met. In all other cases, this condition is considered to be satisfied.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("h4",{attrs:{id:"example-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(#value#){\n Span(Value)\n}.ElseIf(#value2#){Span(Value 2)\n}.ElseIf(#value3#){Span(Value 3)}.Else{\n Span(Nothing)\n}\n")])])]),t("h3",{attrs:{id:"image"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#image"}},[e._v("#")]),e._v(" Image")]),e._v(" "),t("p",[e._v("Create a image HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src, Alt, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Image")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Src")])]),e._v(" "),t("p",[e._v("Image source, file or "),t("code",[e._v("data:...")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Alt")])]),e._v(" "),t("p",[e._v("Alternative text when the image cannot be displayed.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Сlass")])]),e._v(" "),t("p",[e._v("Image class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src: Binary().ById(#id#), Class: preview).Style(height: 40px; widht 40px;)\n")])])]),t("h3",{attrs:{id:"imageinput"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#imageinput"}},[e._v("#")]),e._v(" ImageInput")]),e._v(" "),t("p",[e._v("Create an imageinput element to upload an image.")]),e._v(" "),t("h4",{attrs:{id:"syntax-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(Name, Width, Ratio, Format)\n")])])]),t("blockquote",[t("p",[e._v("ImageInput")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Width of the cropped image.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ratio")])]),e._v(" "),t("p",[e._v("Aspect ratio or image height.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("The format of the uploaded image.")])])]),e._v(" "),t("h4",{attrs:{id:"example-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(avatar, 100, 2/1)\n")])])]),t("h3",{attrs:{id:"include"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#include"}},[e._v("#")]),e._v(" Include")]),e._v(" "),t("p",[e._v("Insert the template with a specified name into the page code.")]),e._v(" "),t("h4",{attrs:{id:"syntax-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Include(Name)\n")])])]),t("blockquote",[t("p",[e._v("Include")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Template name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(myclass, Include(mywidget))\n")])])]),t("h3",{attrs:{id:"input"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#input"}},[e._v("#")]),e._v(" Input")]),e._v(" "),t("p",[e._v("Create an input HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name, Class, Placeholder, Type, Value, Disabled)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Input")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Placeholder")])]),e._v(" "),t("p",[e._v("Prompt for the expected value of the input field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("input type.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Element value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Disabled")])]),e._v(" "),t("p",[e._v("Disable the input element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name: name, Type: text, Placeholder: Enter your name)\nInput(Name: num, Type: text).Validate(minLength: 6, maxLength: 20)\n")])])]),t("h3",{attrs:{id:"inputerr"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputerr"}},[e._v("#")]),e._v(" InputErr")]),e._v(" "),t("p",[e._v("Create an inputerr element to validate the error text.")]),e._v(" "),t("h4",{attrs:{id:"syntax-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name,validation errors)]\n")])])]),t("blockquote",[t("p",[e._v("InputErr")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Corresponds to the name of the "),t("a",{attrs:{href:"#input"}},[e._v("Input")]),e._v(" element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("validation errors")])]),e._v(" "),t("p",[e._v("Validation error message for one or more parameters.")])])]),e._v(" "),t("h4",{attrs:{id:"example-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name: name,\nminLength: Value is too short,\nmaxLength: The length of the value must be less than 20 characters)\n")])])]),t("h3",{attrs:{id:"inputmap"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputmap"}},[e._v("#")]),e._v(" InputMap")]),e._v(" "),t("p",[e._v("Create an text input field for address, able to select coordinates on the map.")]),e._v(" "),t("h4",{attrs:{id:"syntax-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputMap(Name, Type, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("InputMap")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.\nThe value is an object in string format. For example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". When the InputMap is created with the predefined Value, the address field can be used to save the address value, so the it is not void.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Type of map spot mapping:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("polygon")]),e._v(" - indicates the area of a multi-spot closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Line")]),e._v(" - means a polyline with multiple points without closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Point")]),e._v(" - indicates a single point coordinate.")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('InputMap(Name: Coords,Type: polygon, MapType: hybrid, Value: `{"zoom":8, "center":{"lat":55.749942860682545,"lng":37.6207172870636}}`)\n')])])]),t("h3",{attrs:{id:"jsontosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jsontosource"}},[e._v("#")]),e._v(" JsonToSource")]),e._v(" "),t("p",[e._v("Create a jsontosource element and fill it with the key-value pairs of a JSON array. The data obtained is put into the Source element, which can be used later in the source input function (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe records in the result data are sorted alphabetically by JSON key.")]),e._v(" "),t("h4",{attrs:{id:"syntax-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("JsonToSource(Source, Data)\n")])])]),t("blockquote",[t("p",[e._v("JsonToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("A JSON object or a variable name containing a JSON object ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"example-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('JsonToSource(src, #myjson#)\nJsonToSource(dat, {"param":"value", "param2": "value 2"})\n')])])]),t("h3",{attrs:{id:"label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#label"}},[e._v("#")]),e._v(" Label")]),e._v(" "),t("p",[e._v("Create a label HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(Body, Class, For)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Label")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("For")])]),e._v(" "),t("p",[e._v("Bind to a form element.")])])]),e._v(" "),t("blockquote",[t("p",[t("code",[e._v("StyleThe")]),e._v(":CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(The first item).\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[e._v("#")]),e._v(" LangRes")]),e._v(" "),t("p",[e._v("Returns a specific language resource. If requested to edit the tree, the langres element is returned, and you may use the short format symbol $langres$.")]),e._v(" "),t("h4",{attrs:{id:"syntax-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(Name)\n")])])]),t("blockquote",[t("p",[e._v("LangRes")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the language resource.")])])]),e._v(" "),t("h4",{attrs:{id:"example-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(name)\nLangRes(myres)\n")])])]),t("h3",{attrs:{id:"linkpage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linkpage"}},[e._v("#")]),e._v(" LinkPage")]),e._v(" "),t("p",[e._v("Create a linkpage element, linking to the page.")]),e._v(" "),t("h4",{attrs:{id:"syntax-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LinkPage(Body, Page, Class, PageParams)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("LinkPage")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Button class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS styles")]),e._v(" "),t("h4",{attrs:{id:"example-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: "v_role_id=#recipient.role_id#")\n')])])]),t("h3",{attrs:{id:"map"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#map"}},[e._v("#")]),e._v(" Map")]),e._v(" "),t("p",[e._v("Create a visual map and display coordinates in any format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Map(Hmap, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("Map")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Hmap")])]),e._v(" "),t("p",[e._v("Height of an HTML element on the page.\nThe default value is 100.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Map value, an object in string format.\nFor example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". If "),t("code",[e._v("center")]),e._v(" is not specified, the map window will automatically adjust according to the specified coordinates.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Map(MapType:hybrid, Hmap:400, Value:{"coords":[{"lat":55.58774531752405,"lng":36.97260184619233},{"lat":55.58396161622043,"lng":36.973803475831005},{"lat":55.585222890513975,"lng":36.979811624024364},{"lat":55.58803635636347,"lng":36.978781655762646}],"area":146846.65783403456,"address":"Unnamed Road, Moscow, Russia, 143041"})\n')])])]),t("h3",{attrs:{id:"menugroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menugroup"}},[e._v("#")]),e._v(" MenuGroup")]),e._v(" "),t("p",[e._v("Create a nested submenu in the menu and return the menugroup element. Before replacing it with the language resource, the name parameter will return the value of Title.")]),e._v(" "),t("h4",{attrs:{id:"syntax-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(Title, Body, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child elements in a submenu.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(My Menu){\n MenuItem(Interface, sys-interface)\n MenuItem(Dahsboard, dashboard_default)\n}\n")])])]),t("h3",{attrs:{id:"menuitem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menuitem"}},[e._v("#")]),e._v(" MenuItem")]),e._v(" "),t("p",[e._v("Create a menu item and return the menuitem element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuItem(Title, Page, Params, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuItem")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('MenuItem(Title:$@1roles$, Page:@1roles_list, Icon:"icon-pie-chart")\n')])])]),t("h3",{attrs:{id:"money"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#money"}},[e._v("#")]),e._v(" Money")]),e._v(" "),t("p",[e._v("Returns the string value of exp / 10 ^ digit.")]),e._v(" "),t("h4",{attrs:{id:"syntax-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("blockquote",[t("p",[e._v("Money")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("A number in string format.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Digit")])]),e._v(" "),t("p",[e._v("The exponent of 10 in the expression "),t("code",[e._v("Exp/10^digit")]),e._v(". The value can be positive or negative, and a positive value determines the number of digits after the decimal point.")])])]),e._v(" "),t("h4",{attrs:{id:"example-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("h3",{attrs:{id:"or"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#or"}},[e._v("#")]),e._v(" Or")]),e._v(" "),t("p",[e._v("It returns the result of an if logical operation. All parameters listed in parentheses are separated by commas. If having one parameter that is value is not an empty string, zero or "),t("code",[e._v("false")]),e._v(", the parameter value is "),t("code",[e._v("true")]),e._v(", otherwise the parameter value is "),t("code",[e._v("false")]),e._v(". If the parameter value is "),t("code",[e._v("true")]),e._v(", the function returns "),t("code",[e._v("1")]),e._v(", otherwise it returns "),t("code",[e._v("0")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Or(parameters)\n")])])]),t("h4",{attrs:{id:"example-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Or(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"p"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#p"}},[e._v("#")]),e._v(" P")]),e._v(" "),t("p",[e._v("Create a p HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(Body, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("P")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(This is the first line.\n This is the second line.)\n")])])]),t("h3",{attrs:{id:"qrcode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#qrcode"}},[e._v("#")]),e._v(" QRcode")]),e._v(" "),t("p",[e._v("Returns the QR code with the specified text and create a qrcode element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(Text)\n")])])]),t("blockquote",[t("p",[e._v("QRcode")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("QR code text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(#name#)\n")])])]),t("h3",{attrs:{id:"radiogroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#radiogroup"}},[e._v("#")]),e._v(" RadioGroup")]),e._v(" "),t("p",[e._v("Create a radiogroup element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-44"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-44"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name, Source, NameColumn, ValueColumn, Value, Class)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("RadioGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the DBFind or Data function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("NameColumn")])]),e._v(" "),t("p",[e._v("Field name of the data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ValueColumn")])]),e._v(" "),t("p",[e._v("Value name of the data source.\nFields created with Custom cannot be used in this parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CCS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name: type_decision, Source: numbers_type_decisions, NameColumn: name, ValueColumn: value)\n")])])]),t("h3",{attrs:{id:"range"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range"}},[e._v("#")]),e._v(" Range")]),e._v(" "),t("p",[e._v("Create a range element, use step size Step from From to To (not including To) to fill integer elements. The data generated will be put into Source and can be used later in the function of the source input (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v("). If an invalid parameter is specified, an empty Source is returned.")]),e._v(" "),t("h4",{attrs:{id:"syntax-45"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-45"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Range(Source,From,To,Step)\n")])])]),t("blockquote",[t("p",[e._v("Range")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("From")])]),e._v(" "),t("p",[e._v("Starting value (i = From).")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("To")])]),e._v(" "),t("p",[e._v("End value (i ")]),e._v(".")]),e._v(" "),t("li",[e._v("All icon-class icons are from SimpleLineIcons: "),t("code",[e._v("icon-")]),e._v(".")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{444:function(e,a,t){"use strict";t.r(a);var s=t(51),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"template-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#template-language"}},[e._v("#")]),e._v(" Template Language")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#page-construction"}},[e._v("Page construction")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#template-engine"}},[e._v("Template engine")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#create-pages"}},[e._v("Create pages")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#visual-page-designer"}},[e._v("Visual page designer")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#applicable-styles"}},[e._v("Applicable styles")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#page-module"}},[e._v("Page module")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#language-resource-editor"}},[e._v("Language resource editor")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-template-language"}},[e._v("Logicor template language")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#logicor-overview"}},[e._v("Logicor overview")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#use-pageparams-to-pass-parameters-to-pages"}},[e._v("Use PageParams to pass parameters to pages")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#calling-contracts"}},[e._v("Calling contracts")])])])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-function-classification"}},[e._v("Logicor function classification")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#operations-on-variables"}},[e._v("Operations on variables:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#navigational-operations"}},[e._v("Navigational operations:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-manipulation"}},[e._v("Data manipulation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-presentation"}},[e._v("Data presentation:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#accepting-of-data"}},[e._v("Accepting of data:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data-formatting-elements"}},[e._v("Data formatting elements:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form-elements"}},[e._v("Form elements:")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#operations-on-code-blocks"}},[e._v("Operations on code blocks:")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#logicor-function-references"}},[e._v("Logicor function references")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#address"}},[e._v("Address")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#addresstoid"}},[e._v("AddressToId")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#and"}},[e._v("And")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#binary"}},[e._v("Binary")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#button"}},[e._v("Button")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#calculate"}},[e._v("Calculate")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#chart"}},[e._v("Chart")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#custom"}},[e._v("Custom")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#datetime"}},[e._v("DateTime")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#forlist"}},[e._v("ForList")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form"}},[e._v("Form")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#getcolumntype"}},[e._v("GetColumnType")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#hint"}},[e._v("Hint")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#if"}},[e._v("If")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#image"}},[e._v("Image")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#imageinput"}},[e._v("ImageInput")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#include"}},[e._v("Include")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#input"}},[e._v("Input")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#inputerr"}},[e._v("InputErr")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#inputmap"}},[e._v("InputMap")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#label"}},[e._v("Label")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#linkpage"}},[e._v("LinkPage")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#map"}},[e._v("Map")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#menugroup"}},[e._v("MenuGroup")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#money"}},[e._v("Money")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#or"}},[e._v("Or")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#radiogroup"}},[e._v("RadioGroup")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#range"}},[e._v("Range")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#select"}},[e._v("Select")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#span"}},[e._v("Span")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#strong"}},[e._v("Strong")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#table"}},[e._v("Table")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#transactioninfo"}},[e._v("TransactionInfo")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])]),e._v(" "),t("li",[t("a",{attrs:{href:"#app-styles-for-mobile-devices"}},[e._v("App styles for mobile devices")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#layout"}},[e._v("Layout")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#title"}},[e._v("Title")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#strong-class-names"}},[e._v("Strong-class names")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#color"}},[e._v("Color")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#grid"}},[e._v("Grid")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#panel"}},[e._v("Panel")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#form-app"}},[e._v("Form")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#button-app"}},[e._v("Button")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#icon"}},[e._v("Icon")])])])])])])]),e._v(" "),t("h2",{attrs:{id:"page-construction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#page-construction"}},[e._v("#")]),e._v(" Page construction")]),e._v(" "),t("p",[e._v("Weaver's Integrated Development Environment (IDE) is created using React, a JavaScript library. It has a page editor and a visual page designer. Pages are basic parts of an application, which are used to retrieve and display data from tables, create forms for receiving user input data, pass data to contracts, and navigate between application pages. Like contracts, pages are stored in the blockchain, which can ensure they are tamper-proof when loaded in the software client.")]),e._v(" "),t("h3",{attrs:{id:"template-engine"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#template-engine"}},[e._v("#")]),e._v(" Template engine")]),e._v(" "),t("p",[e._v("Page elements (pages and menus) are formed by developers in the template engine of a verification node using the template language in Weaver's page editor. All pages are constructed using the Logicor language developed by IBAX's development team. Use content/... API commands to request pages from nodes on the network. What the template engine sent as a response to this type of request is not an HTML page, but a JSON code composed of HTML tags that form a tree in accordance with the template structure. If you want to test the template engine, you can refer to the "),t("RouterLink",{attrs:{to:"/fr/reference/api2.html#content"}},[e._v("content")]),e._v(" API command.")],1),e._v(" "),t("h3",{attrs:{id:"create-pages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-pages"}},[e._v("#")]),e._v(" Create pages")]),e._v(" "),t("p",[e._v("You can use the page editor to create and edit pages, which can be found in the Pages section of Weaver's management tool. The editor can be used to:")]),e._v(" "),t("ul",[t("li",[e._v("Write the page code, highlight the keywords of the Logicor template language;")]),e._v(" "),t("li",[e._v("Select and display menus on pages;")]),e._v(" "),t("li",[e._v("Edit the menu page;")]),e._v(" "),t("li",[e._v("Configure the permission to change pages, by specifying the contract name with permission in the ContractConditions function, or by directly specifying the access permission in Change conditions;")]),e._v(" "),t("li",[e._v("Start the visual page designer;")]),e._v(" "),t("li",[e._v("Preview pages.")])]),e._v(" "),t("h4",{attrs:{id:"visual-page-designer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#visual-page-designer"}},[e._v("#")]),e._v(" Visual page designer")]),e._v(" "),t("p",[e._v("The visual page designer can be used to create page layouts without using interface codes in the Logicor language. With it, you can set the position of form elements and text on pages by dragging and dropping such elements, and configure the size of page blocks. It provides a set of ready-to-use blocks for presenting standard data models: with titles, forms and information panels. After creating a page in the visual page designer, you can write program logic for receiving data and conditional structure in the page editor. In the future, we plan to create a visual page designer with additional functions.")]),e._v(" "),t("h4",{attrs:{id:"applicable-styles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applicable-styles"}},[e._v("#")]),e._v(" Applicable styles")]),e._v(" "),t("p",[e._v("By default, pages are presented with Angular's Bootstrap Angle style. Users can create their own styles according to needs. The style is stored in the style parameter stylesheet in the ecosystem parameter table.")]),e._v(" "),t("h4",{attrs:{id:"page-module"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#page-module"}},[e._v("#")]),e._v(" Page module")]),e._v(" "),t("p",[e._v("To use a code block in multiple pages, you can create a page module to hold and embed it into the page code. Page modules can be created and edited in Weaver's Module Blocks. Like pages, editing permissions can be defined.")]),e._v(" "),t("h4",{attrs:{id:"language-resource-editor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#language-resource-editor"}},[e._v("#")]),e._v(" Language resource editor")]),e._v(" "),t("p",[e._v("Weaver includes a mechanism for page localization using a function "),t("strong",[e._v("LangRes")]),e._v(" of the Logicor template language. It could replace language resource tags on the page with text lines corresponding to the language selected by the user in the software client or browser. You can use the short syntax "),t("strong",[e._v("$lable$")]),e._v(" instead of the "),t("strong",[e._v("LangRes")]),e._v(" function. The translation of messages in popups initiated by the contract is performed by Needle's "),t("strong",[e._v("LangRes")]),e._v(" function.")]),e._v(" "),t("p",[e._v("You can create and edit language resources in the Language resources section of Weaver. A language resource consists of label names and corresponding translation of such name in different languages, as well as the corresponding two-letter language identifier (EN, ZH, JP, etc.).")]),e._v(" "),t("p",[e._v("The permissions for adding and changing language resources can be defined in the same way as other tables.")]),e._v(" "),t("h2",{attrs:{id:"logicor-template-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-template-language"}},[e._v("#")]),e._v(" Logicor template language")]),e._v(" "),t("p",[e._v("Logicor functions provide the following operations:")]),e._v(" "),t("ul",[t("li",[e._v("Retrieving values from the database: "),t("code",[e._v("DBFind")]),e._v(", showing data retrieved from the database as tables and charts;")]),e._v(" "),t("li",[e._v("Data operations for assigning and displaying variable values: "),t("code",[e._v("SetVar, GetVar, Data")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying and comparing date/time values: "),t("code",[e._v("DateTime, Now, CmpTime")]),e._v(";")]),e._v(" "),t("li",[e._v("Use various user data input fields to build forms: "),t("code",[e._v("Form, ImageInput, Input, RadioGroup, Select")]),e._v(";")]),e._v(" "),t("li",[e._v("Verify the data in the form field by displaying error messages: "),t("code",[e._v("Validate, InputErr")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying the navigation elements: "),t("code",[e._v("AddToolButton, LinkPage, Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Calling contracts: "),t("code",[e._v("Button")]),e._v(";")]),e._v(" "),t("li",[e._v("Creating HTML page layout elements, including various tags, and choosing specific css classes: "),t("code",[e._v("Div, P, Span, etc")]),e._v(";")]),e._v(" "),t("li",[e._v("Embedding and unloading images onto pages: "),t("code",[e._v("Image, ImageInput")]),e._v(";")]),e._v(" "),t("li",[e._v("Displaying conditions of page layout fragment: "),t("code",[e._v("If, ElseIf, Else")]),e._v(";")]),e._v(" "),t("li",[e._v("Creating multi-level menus;")]),e._v(" "),t("li",[e._v("Page localization.")])]),e._v(" "),t("h3",{attrs:{id:"logicor-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-overview"}},[e._v("#")]),e._v(" Logicor overview")]),e._v(" "),t("p",[e._v("The Logicor page template language is a functional language that allows a function calling another function "),t("code",[e._v("FuncName(parameters)")]),e._v(" and nesting functions into each other. You can specify parameters without quotes, and delete unnecessary parameters.")]),e._v(" "),t("p",[e._v("If the parameter contains a comma, it should be enclosed in quotes (backquotes or double quotes). If a function can only have one parameter, you can use a comma without quotes. In addition, if the parameter has an unpaired closing parenthesis, quotes should be used.")]),e._v(" "),t("p",[e._v("If you put a parameter in quotes, but the parameter itself contains quotes, you can use different types of quotes or multiple quotes in the text.")]),e._v(" "),t("p",[e._v("In the function definition, each parameter has a specific name. You can call the function and specify the parameters in the order of declaration, or any parameter set in any order of name: "),t("code",[e._v("Parameter_name: Parameter_value")]),e._v(". Using this method, you can safely add new function parameters without breaking compatibility with the current template:")]),e._v(" "),t("p",[e._v("Functions can return texts, generate HTML elements (e.g. "),t("code",[e._v("Input")]),e._v("), or create HTML elements with nested HTML elements ("),t("code",[e._v("Div, P, Span")]),e._v("). In the latter case, a parameter with the predefined name Body is used to define the nested element. For example, nesting two divs in another div looks like this:")]),e._v(" "),t("p",[e._v("To define the nested elements described in the Body parameter, the following notation can be used: "),t("code",[e._v("FuncName(...){...}")]),e._v(". Nested elements should be specified with braces:")]),e._v(" "),t("p",[e._v("If you need to specify the same function multiple times in succession, you can use the dot "),t("code",[e._v(".")]),e._v(" instead of writing its name every time. For example, the following are the same:")]),e._v(" "),t("p",[e._v("With this language, you can assign a variable with the SetVar function and refer its value with "),t("code",[e._v("#name#")]),e._v(".")]),e._v(" "),t("p",[e._v("To refer to the language resources of the ecosystem, you can use "),t("code",[e._v("$langres$")]),e._v(", where langres is the language name.")]),e._v(" "),t("p",[e._v("The following variables are predefined:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("#key_id#")]),e._v(" - Account address of the current user;")]),e._v(" "),t("li",[t("code",[e._v("#ecosystem_id#")]),e._v(" - Current ecosystem ID;")]),e._v(" "),t("li",[t("code",[e._v("#guest_key#")]),e._v(" - Address of the guest account;")]),e._v(" "),t("li",[t("code",[e._v("#isMobile#")]),e._v(" - 1, if Weaver runs on a mobile device.")])]),e._v(" "),t("h4",{attrs:{id:"use-pageparams-to-pass-parameters-to-pages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#use-pageparams-to-pass-parameters-to-pages"}},[e._v("#")]),e._v(" Use PageParams to pass parameters to pages")]),e._v(" "),t("p",[e._v("Many functions support the PageParams parameter, which is used to pass parameters when redirecting to a new page. For example: PageParams: "),t("code",[e._v('"param1=value1,param2=value2"')]),e._v(". The parameter value can be a simple string or a variable with a reference value. When passing parameters to pages, a variable with the parameter name is created, e.g. "),t("code",[e._v("#param1#")]),e._v(" and "),t("code",[e._v("#param2#")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=world"')]),e._v(" - The new page receives the hello parameter with world as the value;")]),e._v(" "),t("li",[t("code",[e._v('PageParams: "hello=#world#"')]),e._v(" - The new page receives the hello parameter with the value of the world variable.")])]),e._v(" "),t("p",[e._v("In addition, the Val function can get data from forms, which is specified in the redirection.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v('PageParams: "hello=Val(world)"')]),e._v(" - The new page receives the hello parameter with the value of the world form element.")])]),e._v(" "),t("h4",{attrs:{id:"calling-contracts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#calling-contracts"}},[e._v("#")]),e._v(" Calling contracts")]),e._v(" "),t("p",[e._v("Logicor implements contract calls by clicking the Button function in a form. Once an event is triggered, the data entered by the user in a form field on the page will be passed to the contract. If the form field name corresponds to the variable name in the data section of the contract called, the data will be automatically transferred. The Button function allows to open a modal window for the user to verify the contract execution, and initiate the redirection to the specified page when the contract is successfully executed, and pass certain parameters to the page.")]),e._v(" "),t("h2",{attrs:{id:"logicor-function-classification"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-function-classification"}},[e._v("#")]),e._v(" Logicor function classification")]),e._v(" "),t("h3",{attrs:{id:"operations-on-variables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operations-on-variables"}},[e._v("#")]),e._v(" Operations on variables:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#getvar"}},[e._v("GetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#setvar"}},[e._v("SetVar")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#varasis"}},[e._v("VarAsIs")])])])])]),e._v(" "),t("h3",{attrs:{id:"navigational-operations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#navigational-operations"}},[e._v("#")]),e._v(" Navigational operations:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#addtoolbutton"}},[e._v("AddToolButton")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#button"}},[e._v("Button")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#linkpage"}},[e._v("LinkPage")])])])])]),e._v(" "),t("h3",{attrs:{id:"data-manipulation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-manipulation"}},[e._v("#")]),e._v(" Data manipulation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#calculate"}},[e._v("Calculate")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#datetime"}},[e._v("DateTime")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#money"}},[e._v("Money")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#cmptime"}},[e._v("CmpTime")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"data-presentation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-presentation"}},[e._v("#")]),e._v(" Data presentation:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#code"}},[e._v("Code")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#hint"}},[e._v("Hint")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menuitem"}},[e._v("MenuItem")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#codeasis"}},[e._v("CodeAsIs")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#image"}},[e._v("Image")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#qrcode"}},[e._v("QRcode")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#chart"}},[e._v("Chart")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#menugroup"}},[e._v("MenuGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#table"}},[e._v("Table")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#forlist"}},[e._v("ForList")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"accepting-of-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#accepting-of-data"}},[e._v("#")]),e._v(" Accepting of data:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#address"}},[e._v("Address")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#ecosysparam"}},[e._v("EcosysParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#langres"}},[e._v("LangRes")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#addresstoid"}},[e._v("AddressToId")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#gethistory"}},[e._v("GetHistory")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#range"}},[e._v("Range")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#appparam"}},[e._v("AppParam")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#getcolumntype"}},[e._v("GetColumnType")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#sysparam"}},[e._v("SysParam")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#data"}},[e._v("Data")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#jsontosource"}},[e._v("JsonToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#binary"}},[e._v("Binary")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#arraytosource"}},[e._v("ArrayToSource")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#transactioninfo"}},[e._v("TransactionInfo")])])])])]),e._v(" "),t("h3",{attrs:{id:"data-formatting-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data-formatting-elements"}},[e._v("#")]),e._v(" Data formatting elements:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#div"}},[e._v("Div")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#settitle"}},[e._v("SetTitle")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#span"}},[e._v("Span")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#em"}},[e._v("Em")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#label"}},[e._v("Label")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#strong"}},[e._v("Strong")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#p"}},[e._v("P")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"form-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form-elements"}},[e._v("#")]),e._v(" Form elements:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#form"}},[e._v("Form")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputerr"}},[e._v("InputErr")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#inputmap"}},[e._v("InputMap")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#imageinput"}},[e._v("ImageInput")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#radiogroup"}},[e._v("RadioGroup")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#map"}},[e._v("Map")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#input"}},[e._v("Input")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#select"}},[e._v("Select")])]),e._v(" "),t("td")])])]),e._v(" "),t("h3",{attrs:{id:"operations-on-code-blocks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#operations-on-code-blocks"}},[e._v("#")]),e._v(" Operations on code blocks:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th"),e._v(" "),t("th"),e._v(" "),t("th")])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("a",{attrs:{href:"#if"}},[e._v("If")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#or"}},[e._v("Or")])]),e._v(" "),t("td",[t("a",{attrs:{href:"#include"}},[e._v("Include")])])]),e._v(" "),t("tr",[t("td",[t("a",{attrs:{href:"#and"}},[e._v("And")])]),e._v(" "),t("td"),e._v(" "),t("td")])])]),e._v(" "),t("h2",{attrs:{id:"logicor-function-references"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#logicor-function-references"}},[e._v("#")]),e._v(" Logicor function references")]),e._v(" "),t("h3",{attrs:{id:"address"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#address"}},[e._v("#")]),e._v(" Address")]),e._v(" "),t("p",[e._v("This function returns the wallet address "),t("code",[e._v("xxxx-xxxx-...-xxxx")]),e._v(" of a specific account address; if no address is specified, the account address of the current user will be used as the parameter.")]),e._v(" "),t("h4",{attrs:{id:"syntax"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(account)\n\n")])])]),t("blockquote",[t("p",[e._v("Address")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("account")])]),e._v(" "),t("p",[e._v("Account address.")])])]),e._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Span(Your wallet: Address(#account#))\n")])])]),t("h3",{attrs:{id:"addresstoid"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[e._v("#")]),e._v(" AddressToId")]),e._v(" "),t("p",[e._v("It returns the account address of a specific wallet address xxxx-xxxx-...-xxxx.")]),e._v(" "),t("h4",{attrs:{id:"syntax-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-2"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(Wallet)\n")])])]),t("blockquote",[t("p",[e._v("AddressToId")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Wallet")])]),e._v(" "),t("p",[e._v("The wallet address in XXXX-...-XXXX format.")])])]),e._v(" "),t("h4",{attrs:{id:"example-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddressToId(#wallet#)\n")])])]),t("h3",{attrs:{id:"addtoolbutton"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#addtoolbutton"}},[e._v("#")]),e._v(" AddToolButton")]),e._v(" "),t("p",[e._v("Create a button panel with an addtoolbutton element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-3"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AddToolButton(Title, Icon, Page, PageParams)\n [.Popup(Width, Header)]\n")])])]),t("blockquote",[t("p",[e._v("AddToolButton")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Button title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Button icon style.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the page redirects to.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("The parameters passed to the page.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("The modal window pops up.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Header")])]),e._v(" "),t("p",[e._v("Title of the window.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Percentage of window width.\nIts range is 1 to 100.")])])]),e._v(" "),t("h4",{attrs:{id:"example-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('AddToolButton(Title: $@1broadcast$, Page: @1notifications_broadcast, Icon: icon-plus).Popup(Header: $@1notifications_broadcast$, Width: "50")\n')])])]),t("h3",{attrs:{id:"and"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#and"}},[e._v("#")]),e._v(" And")]),e._v(" "),t("p",[e._v("It returns the result of an and logical operation. All parameters listed in parentheses are separated by commas. If one of the parameters is an empty string, zero or "),t("code",[e._v("false")]),e._v(", the parameter value is "),t("code",[e._v("false")]),e._v(", otherwise the parameter value is "),t("code",[e._v("true")]),e._v(". If the parameter value is "),t("code",[e._v("true")]),e._v(", the function returns "),t("code",[e._v("1")]),e._v(", otherwise it returns "),t("code",[e._v("0")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-4"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("And(parameters)\n")])])]),t("h4",{attrs:{id:"example-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(And(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"appparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#appparam"}},[e._v("#")]),e._v(" AppParam")]),e._v(" "),t("p",[e._v("Output the application parameter value, which is taken from the app_params table of the current ecosystem. If there is a language resource with the specified name, its value will be automatically replaced.")]),e._v(" "),t("h4",{attrs:{id:"syntax-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-5"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(App, Name, Index, Source)\n\n")])])]),t("blockquote",[t("p",[e._v("AppParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("App")])]),e._v(" "),t("p",[e._v("Application ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nThe parameter elements index, starting from 1. For example, if "),t("code",[e._v("type = full,light")]),e._v(", then "),t("code",[e._v("AppParam(1, type, 2)")]),e._v(" returns "),t("code",[e._v("light")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of specific parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("h4",{attrs:{id:"example-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("AppParam(1, type, Source: mytype)\n")])])]),t("h3",{attrs:{id:"arraytosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#arraytosource"}},[e._v("#")]),e._v(" ArrayToSource")]),e._v(" "),t("p",[e._v("Create an arraytosource element and fill it with the key-value pairs of a JSON array. The data obtained is put into the Source element, which can be used later in the source input function (e.g. Table).")]),e._v(" "),t("h4",{attrs:{id:"syntax-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-6"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(Source, Data)\n\n")])])]),t("blockquote",[t("p",[e._v("ArrayToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("A JSON array or a variable name containing a JSON array ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"example-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ArrayToSource(src, #myjsonarr#)\nArrayToSource(dat, [1, 2, 3])\n")])])]),t("h3",{attrs:{id:"binary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#binary"}},[e._v("#")]),e._v(" Binary")]),e._v(" "),t("p",[e._v("Returns links to static files stored in the binary table binaries.")]),e._v(" "),t("h4",{attrs:{id:"syntax-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Binary(Name, AppID, MemberID)[.ById(ID)][.Ecosystem(ecosystem)]\n")])])]),t("blockquote",[t("p",[e._v("Binary")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("File name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("AppID")])]),e._v(" "),t("p",[e._v("Application ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MemberID")])]),e._v(" "),t("p",[e._v("Account address, 0 by default.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ID")])]),e._v(" "),t("p",[e._v("Static file ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ecosystem")])]),e._v(" "),t("p",[e._v("Ecosystem ID. If it is not specified, the binary file is requested from the current ecosystem.")])])]),e._v(" "),t("h4",{attrs:{id:"example-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Image(Src: Binary("my_image", 1))\nImage(Src: Binary().ById(2))\nImage(Src: Binary().ById(#id#).Ecosystem(#eco#))\n')])])]),t("h3",{attrs:{id:"button"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#button"}},[e._v("#")]),e._v(" Button")]),e._v(" "),t("p",[e._v("Create a button HTML element which will create a button to call a contract or open a page.")]),e._v(" "),t("h4",{attrs:{id:"syntax-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Button(Body, Page, Class, Contract, Params, PageParams)\n [.CompositeContract(Contract, Data)]\n [.Alert(Text, ConfirmButton, CancelButton, Icon)]\n [.Popup(Width, Header)]\n [.Style(Style)]\n [.ErrorRedirect((ErrorID,PageName,PageParams)]\n")])])]),t("blockquote",[t("p",[e._v("Button")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the page redirects to.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Button class.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Contract")])]),e._v(" "),t("p",[e._v("Name of the contract called.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("The list of values passed to the contract. Normally, the value of the contract parameter (the data section) is obtained from an HTML element (such as an input field) of id with a similar name. If the element id is different from the name of the contract parameter, then the value should be assigned in the format of contractField1=idname1, contractField2=idname2. This parameter is returned to attr as the object {contractField1: idname1, contractField2: idname2}.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("The format of parameters passed to the redirect page is pageField1=idname1, pageField2=idname2. Variables with target page parameter names #pageField1 and #pageField2 are created on the target page and assigned the specified values. See more specifications for parameter passing Use PageParams to pass parameters to pages).")])])]),e._v(" "),t("blockquote",[t("p",[e._v("CompositeContract")])]),e._v(" "),t("p",[e._v("Used to add additional contracts to the button. CompositeContract can be used multiple times.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the contract.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("The contract parameters are JSON arrays.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Alert")])]),e._v(" "),t("p",[e._v("Display the message.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Text of the message.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ConfirmButton")])]),e._v(" "),t("p",[e._v("Title of the Confirm button.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("CancelButton")])]),e._v(" "),t("p",[e._v("Title of the Cancel button.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Button icon.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Popup")])]),e._v(" "),t("p",[e._v("Output modal window.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Header")])]),e._v(" "),t("p",[e._v("Window title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Percentage of window width.\nIts range is 1 to 100.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("ErrorRedirect")])]),e._v(" "),t("p",[e._v("Specify and redirect to a page when the :ref:contractfundef-Throw function generates an error during contract execution. There can be several ErrorRedirect calls. Therefore, when returning the "),t("em",[e._v("errredirect")]),e._v(" attribute, the attribute key is ErrorID and the value is the parameters list.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("ErrorID")])]),e._v(" "),t("p",[e._v("Error ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageName")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Parameters passed to the page.")])])]),e._v(" "),t("h4",{attrs:{id:"example-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Button(Submit, default_page, mybtn_class).Alert(Alert message)\nButton(Contract: MyContract, Body:My Contract, Class: myclass, Params:"Name=myid,Id=i10,Value")\n')])])]),t("h3",{attrs:{id:"calculate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#calculate"}},[e._v("#")]),e._v(" Calculate")]),e._v(" "),t("p",[e._v("It returns the result of the arithmetic expression passed in the Exp parameter. The following operations are applicable: +, -, *, / and brackets ().")]),e._v(" "),t("h4",{attrs:{id:"syntax-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Calculate(Exp, Type, Prec)\n")])])]),t("blockquote",[t("p",[e._v("Calculate")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("An arithmetic expression, containing numbers and the #name# variable.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Result data type: int, float, money. If not specified, it is float if there is a number with a decimal point, otherwise it is int.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Prec")])]),e._v(" "),t("p",[e._v("float and money data, with two significant digits after the decimal point.")])])]),e._v(" "),t("h4",{attrs:{id:"example-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Calculate( Exp: (342278783438+5000)\\*(#val#-932780000), Type: money, Prec:18 )\nCalculate(10000-(34+5)\\*#val#)\nCalculate("((10+#val#-45)\\*3.0-10)/4.5 + #val#", Prec: 4)\n')])])]),t("h3",{attrs:{id:"chart"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#chart"}},[e._v("#")]),e._v(" Chart")]),e._v(" "),t("p",[e._v("Create HTML charts.")]),e._v(" "),t("h4",{attrs:{id:"syntax-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Chart(Type, Source, FieldLabel, FieldValue, Colors)\n")])])]),t("blockquote",[t("p",[e._v("Chart")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Chart type.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name of the data source, e.g., obtained from the "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldLabel")])]),e._v(" "),t("p",[e._v("Name of the header field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("FieldValue")])]),e._v(" "),t("p",[e._v("Name of the value field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Colors")])]),e._v(" "),t("p",[e._v("List of colors.")])])]),e._v(" "),t("h4",{attrs:{id:"example-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"name,count"){\n John Silver,10\n "Mark, Smith",20\n "Unknown ""Person""",30\n}\nChart(Type: "bar", Source: mysrc, FieldLabel: "name", FieldValue: "count", Colors: "red, green")\n')])])]),t("h3",{attrs:{id:"cmptime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cmptime"}},[e._v("#")]),e._v(" CmpTime")]),e._v(" "),t("p",[e._v("It compares two time values in the same format.\nIt supports unixtime, "),t("code",[e._v("YYYY-MM-DD HH:MM:SS")]),e._v(" and any time format, such as "),t("code",[e._v("YYYYMMDD")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CmpTime(Time1, Time2)\n")])])]),t("p",[e._v("Return value")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("-1")]),e._v(" - Time1 Time2.")])]),e._v(" "),t("h4",{attrs:{id:"example-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(CmpTime(#time1#, #time2#)<0){...}\n")])])]),t("h3",{attrs:{id:"code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#code"}},[e._v("#")]),e._v(" Code")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.")]),e._v(" "),t("p",[e._v("It substitute a variable with the value of the variable (for example, "),t("code",[e._v("#name#")]),e._v(").")]),e._v(" "),t("h4",{attrs:{id:"syntax-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code(Text)\n")])])]),t("blockquote",[t("p",[e._v("Code")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Code( P(This is the first line.\n Span(This is the second line.))\n)\n")])])]),t("h3",{attrs:{id:"codeasis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#codeasis"}},[e._v("#")]),e._v(" CodeAsIs")]),e._v(" "),t("p",[e._v("Create a code element to display the specified code.\nIt does not replace a variable with its value. For example, "),t("code",[e._v("#name#")]),e._v(" will be displayed as is.")]),e._v(" "),t("h4",{attrs:{id:"syntax-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs(Text)\n")])])]),t("blockquote",[t("p",[e._v("CodeAsIs")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Source code.")])])]),e._v(" "),t("h4",{attrs:{id:"example-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("CodeAsIs( P(This is the #test1#.\n Span(This is the #test2#.))\n)\n")])])]),t("h3",{attrs:{id:"data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#data"}},[e._v("#")]),e._v(" Data")]),e._v(" "),t("p",[e._v("Create a data element, fill it with the specified data and put it in Source. Then, you can receive Source as a data input in "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions. The sequence of column names corresponds to the sequence of data entry values.")]),e._v(" "),t("h4",{attrs:{id:"syntax-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Data(Source,Columns,Data)\n [.Custom(Column){Body}]\n")])])]),t("blockquote",[t("p",[e._v("Data")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Name of the data source. You can specify any name that will be passed to other functions later as a data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Columns")])]),e._v(" "),t("p",[e._v("A list of column names, separated by commas.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("Data set.")]),e._v(" "),t("p",[e._v("One record per line. Column values must be separated by commas. Data and Columns should be set in the same order.")]),e._v(" "),t("p",[e._v("Values with commas should be enclosed in double quotes ("),t("code",[e._v('"example1, example2", 1, 2')]),e._v("). Quoted values should be put in two double quotes ("),t("code",[e._v('"""example", "example2""", 1, 2')]),e._v(").")])])]),e._v(" "),t("h3",{attrs:{id:"custom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom"}},[e._v("#")]),e._v(" Custom")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",[t("code",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to [Table](#table) and other functions to receive data.\nUse multiple Custom functions if you want to assign multiple calculated columns.\n")])])]),t("ul",[t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")])])]),e._v(" "),t("h4",{attrs:{id:"example-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Data(mysrc,"id,name"){\n "1",John Silver\n 2,"Mark, Smith"\n 3,"Unknown ""Person"""\n }.Custom(link){Button(Body: View, Class: btn btn-link, Page: user, PageParams: "id=#id#"}\n')])])]),t("h3",{attrs:{id:"datetime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#datetime"}},[e._v("#")]),e._v(" DateTime")]),e._v(" "),t("p",[e._v("Display the time and date in the specified format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(DateTime, Format)\n")])])]),t("blockquote",[t("p",[e._v("DateTime")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("DateTime")])]),e._v(" "),t("p",[e._v("Time and date expressed in unixtime or standard format "),t("code",[e._v("2006-01-02T15:04:05")]),e._v(".")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("Format template: year in 2-digit format "),t("code",[e._v("YY")]),e._v(", 4-digit format "),t("code",[e._v("YYYY")]),e._v(", month in "),t("code",[e._v("MM")]),e._v(", day in "),t("code",[e._v("DD")]),e._v(", hour in "),t("code",[e._v("HH")]),e._v(", minute in "),t("code",[e._v("MM")]),e._v(", second in "),t("code",[e._v("SS")]),e._v(", e.g.: "),t("code",[e._v("YY/MM/DD HH:MM")]),e._v(".\nIf it is not specified or missing, "),t("code",[e._v("YYYY-MM-DD HH:MI:SS")]),e._v(" will be used.")])])]),e._v(" "),t("h4",{attrs:{id:"example-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DateTime(2017-11-07T17:51:08)\nDateTime(#mytime#,HH:MI DD.MM.YYYY)\n")])])]),t("h3",{attrs:{id:"dbfind"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dbfind"}},[e._v("#")]),e._v(" DBFind")]),e._v(" "),t("p",[e._v("Create a dbfind element, fill it with the data of the table table and put it in the Source structure, which can later be used for the input data of "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions Source.")]),e._v(" "),t("h4",{attrs:{id:"syntax-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("DBFind(table, Source)\n [.Columns(columns)]\n [.Where(conditions)]\n [.WhereId(id)]\n [.Order(name)]\n [.Limit(limit)]\n [.Offset(offset)]\n [.Count(countvar)]\n [.Ecosystem(id)]\n [.Cutoff(columns)]\n [.Custom(Column){Body}]\n [.Vars(Prefix)]\n")])])]),t("blockquote",[t("p",[e._v("DBFind")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Columns")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("columns")])]),e._v(" "),t("p",[e._v("If not specified, a list of all fields will be returned. If there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(". In this case, the field name generated is "),t("code",[e._v("columnname.fieldname")]),e._v(".")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Where")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("conditions")])])]),e._v(" "),t("p",[e._v("Data query conditions. See DBFind.\nIf there is a JSON type field, you can use the following syntax to process the record field: "),t("code",[e._v("columnname->fieldname")]),e._v(".")]),e._v(" "),t("blockquote",[t("p",[e._v("WhereId\nQuery by ID, e.g. "),t("code",[e._v(".WhereId(1)")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Entry ID.")]),e._v(" "),t("blockquote",[t("p",[e._v("Order\nSort by field.\nFor more information about the sorting syntax, see "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(".")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("name")])])]),e._v(" "),t("p",[e._v("Field Name")]),e._v(" "),t("blockquote",[t("p",[e._v("Limit")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("limit")])]),e._v(" "),t("p",[e._v("The number of entries returned, 25 by default. The maximum number is 10,000.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Offset")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Offset")])]),e._v(" "),t("p",[e._v("Offset.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Count")])]),e._v(" "),t("p",[e._v("Specify the total number of rows of the Where condition.\nIn addition to storing it in a variable, the total count is returned in the count parameter of the dbfind element.")]),e._v(" "),t("p",[e._v("If Where and WhereID are not specified, the total count of rows in the table will be returned.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("countvar")])]),e._v(" "),t("p",[e._v("Name of the variable that holds the row count.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Ecosystem")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Id")])])]),e._v(" "),t("p",[e._v("Ecosystem ID. By default, the data comes from the specified table in the current ecosystem.")]),e._v(" "),t("blockquote",[t("p",[e._v("Cutoff")])]),e._v(" "),t("p",[e._v("Used to cut and display large amounts of text data.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("columns")])])]),e._v(" "),t("p",[e._v("A comma-separated list of fields that must be processed by the Cutoff function.\nThe field value will be replaced by a JSON object that has two fields: link link and title title. If the field value contains more than 32 characters, link pointing to the first 32 characters of the full text is returned. If the field value contains 32 characters or less, link is set to void and title contains the complete field value.")]),e._v(" "),t("blockquote",[t("p",[e._v("Custom")])]),e._v(" "),t("p",[e._v("You can assign calculated columns to Data. For example, you can specify field templates for buttons and other page layout elements. These field templates are usually assigned to "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and other functions to receive data.\nIf you want to assign multiple calculated columns, use multiple Custom functions.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Column")])])]),e._v(" "),t("p",[e._v("Column name, which is unique and compulsory.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Body")])])]),e._v(" "),t("p",[e._v("Code block. You can use "),t("code",[e._v("#columnname#")]),e._v(" to get values from other columns in the entry, and then use those values in code blocks.")]),e._v(" "),t("blockquote",[t("p",[e._v("Vars")])]),e._v(" "),t("p",[e._v("The first row obtained by the query will generate a set of variables with values. When it is specified, the Limit parameter automatically becomes 1, and only one (1) record is returned.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Prefix")])])]),e._v(" "),t("p",[e._v("The prefix added to the variable name. Its format is "),t("code",[e._v("#prefix_columnname#")]),e._v(", where the column name immediately follows the underscore symbol. If there is a column containing a JSON field, the variable generated will be in the following format: "),t("code",[e._v("#prefix_columnname_field#")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"example-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBFind(parameters,myparam)\nDBFind(parameters,myparam).Columns(name,value).Where({name:"money"})\nDBFind(parameters,myparam).Custom(myid){Strong(#id#)}.Custom(myname){\n Strong(Em(#name#))Div(myclass, #company#)\n}\n')])])]),t("h3",{attrs:{id:"div"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#div"}},[e._v("#")]),e._v(" Div")]),e._v(" "),t("p",[e._v("Create a div HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(Class, Body)\n [.Style(Style)]\n [.Show(Condition)]\n [.Hide(Condition)]\n")])])]),t("blockquote",[t("p",[e._v("Div")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the div.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("blockquote",[t("p",[e._v("Show")])]),e._v(" "),t("p",[e._v("Define the conditions for displaying Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("See Hide below.")]),e._v(" "),t("blockquote",[t("p",[e._v("Hide")])]),e._v(" "),t("p",[e._v("Define the conditions for hiding Div.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Condition")])])]),e._v(" "),t("p",[e._v("The expression format is "),t("code",[e._v("InputName=Value")]),e._v(", when all expressions are true, "),t("em",[e._v("Condition")]),e._v(" is true, and when the value of "),t("code",[e._v("InputName")]),e._v(" is equal to "),t("code",[e._v("Value")]),e._v(", "),t("em",[e._v("Condition")]),e._v(" is true. If multiple "),t("em",[e._v("Show")]),e._v(" or "),t("em",[e._v("Hide")]),e._v(" are called, there must be at least one "),t("em",[e._v("Condition")]),e._v(" parameter is true.")]),e._v(" "),t("h4",{attrs:{id:"example-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Form(){\n Div(text-left){\n Input(Name: "broadcast", Type: "checkbox", Value: "false")\n }\n Div(text-left){\n hello\n }.Show("broadcast=false")\n Div(text-left){\n world\n }.Hide("broadcast=false")\n}\n')])])]),t("h3",{attrs:{id:"ecosysparam"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ecosysparam"}},[e._v("#")]),e._v(" EcosysParam")]),e._v(" "),t("p",[e._v("This function obtains parameter values from the ecosystem parameter table of the current ecosystem. If the returned result name contains the language resources, it will be translated accordingly.")]),e._v(" "),t("h4",{attrs:{id:"syntax-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("EcosysParam(Name, Index, Source)\n")])])]),t("blockquote",[t("p",[e._v("EcosysParam")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Parameter name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("If the requested parameter is a list of comma-separated elements, you can specify an index starting from 1. For example, if "),t("code",[e._v("gender = male,female")]),e._v(", then "),t("code",[e._v("gender = male,female")]),e._v(" returns "),t("code",[e._v("female")]),e._v(".\nIt cannot be used in conjunction with the Source parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("It can be used when the parameter value is a comma-separated list.\nCreate a data object whose elements are the values of the specified parameters. This object can be used as a data source for the "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(" and "),t("a",{attrs:{href:"#select"}},[e._v("Select")]),e._v(" functions.\nIt cannot be used in conjunction with the Index parameter.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Address(EcosysParam(founder_account))\nEcosysParam(gender, Source: mygender)\n\nEcosysParam(Name: gender_list, Source: src_gender)\nSelect(Name: gender, Source: src_gender, NameColumn: name, ValueColumn: id)\n")])])]),t("h3",{attrs:{id:"em"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#em"}},[e._v("#")]),e._v(" Em")]),e._v(" "),t("p",[e._v("Create an em HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Em(Body, Class)\n")])])]),t("blockquote",[t("p",[e._v("Em")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("The em class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("This is an Em(important news).\n")])])]),t("h3",{attrs:{id:"forlist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#forlist"}},[e._v("#")]),e._v(" ForList")]),e._v(" "),t("p",[e._v("Display the list of elements in the Source data source in the template format set in Body and create a "),t("strong",[e._v("forlist")]),e._v(" element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(Source, Index){Body}\n")])])]),t("blockquote",[t("p",[e._v("ForList")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the "),t("a",{attrs:{href:"#dbfind"}},[e._v("DBFind")]),e._v(" or "),t("a",{attrs:{href:"#data"}},[e._v("Data")]),e._v(" function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Index")])]),e._v(" "),t("p",[e._v("The variable of the iteration counter, starting from 1.\nAn optional parameter. If not specified, the iteration count value will be written to the [Source] _index variable.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Template for inserting elements.")])])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ForList(mysrc){Span(#mysrc_index#. #name#)}\n")])])]),t("h3",{attrs:{id:"form"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#form"}},[e._v("#")]),e._v(" Form")]),e._v(" "),t("p",[e._v("Create a form HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(Class, Body) [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Form")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name of the form.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style\nThe CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS style.")]),e._v(" "),t("h4",{attrs:{id:"example-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Form(class1 class2, Input(myid))\n")])])]),t("h3",{attrs:{id:"getcolumntype"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[e._v("#")]),e._v(" GetColumnType")]),e._v(" "),t("p",[e._v("Returns the field data type of a specific table.")]),e._v(" "),t("p",[e._v("Types returned include: "),t("code",[e._v("text, varchar, number, money, double, bytes, json, datetime, double")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetColumnType(Table, Column)\n")])])]),t("blockquote",[t("p",[e._v("GetColumnType")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Table")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Column")])]),e._v(" "),t("p",[e._v("Field name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("SetVar(coltype,GetColumnType(members, member_name))Div(){#coltype#}\n")])])]),t("h3",{attrs:{id:"gethistory"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gethistory"}},[e._v("#")]),e._v(" GetHistory")]),e._v(" "),t("p",[e._v("Create a gethistory element and fill it with the history change records of the entries in the specified table. The data generated will be placed in the Source element, which can be used later in the source input function (for example, "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe array is sorted in order from the last modified.\nThe id field in the array points to the id of the rollback_tx table. block_id represents the block ID, block_time represents the block generation timestamp.")]),e._v(" "),t("h4",{attrs:{id:"syntax-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(Source, Name, Id, RollbackId)\n")])])]),t("blockquote",[t("p",[e._v("GetHistory")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Table name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Id")])]),e._v(" "),t("p",[e._v("Entry ID.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("RollbackId")])]),e._v(" "),t("p",[e._v("An optional parameter. If specified, only one record with the specified ID will be returned from the rollback_tx table.")])])]),e._v(" "),t("h4",{attrs:{id:"example-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetHistory(blocks, BlockHistory, 1)\n")])])]),t("h3",{attrs:{id:"getvar"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getvar"}},[e._v("#")]),e._v(" GetVar")]),e._v(" "),t("p",[e._v("It returns the value of the specified variable that already exists, or an empty string if it does not exist.\nThe getvar element is only created when an editable tree is requested. The difference between "),t("code",[e._v("GetVar(varname)")]),e._v(" and "),t("code",[e._v("#varname")]),e._v(" is that if varname does not exist, GetVar will return an empty string, while #varname# will be interpreted as a string value.")]),e._v(" "),t("h4",{attrs:{id:"syntax-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("GetVar(Name)\n")])])]),t("blockquote",[t("p",[e._v("GetVar")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Variable name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(GetVar(name)){#name#}.Else{Name is unknown}\n")])])]),t("h3",{attrs:{id:"hint"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hint"}},[e._v("#")]),e._v(" Hint")]),e._v(" "),t("p",[e._v("Create a hint element for hints.")]),e._v(" "),t("h4",{attrs:{id:"syntax-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Hint(Icon,Title,Text)\n")])])]),t("blockquote",[t("p",[e._v("Hint")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Hint title.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("Hint text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Hint(Icon: "icon-wrench",Title:$@1pa_settings$,Text: This is a hint text)\n')])])]),t("h3",{attrs:{id:"if"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#if"}},[e._v("#")]),e._v(" If")]),e._v(" "),t("p",[e._v("Condition statement.\nReturns the first If or ElseIf child element that satisfies Condition. Otherwise, return the Else child element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Condition){ Body}\n [.ElseIf(Condition){ Body }]\n [.Else{ Body }]\n")])])]),t("blockquote",[t("p",[e._v("If")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Condition")])]),e._v(" "),t("p",[e._v("If the condition is equal to an empty string, 0 or false, it is considered that the condition is not met. In all other cases, this condition is considered to be satisfied.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child element.")])])]),e._v(" "),t("h4",{attrs:{id:"example-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(#value#){\n Span(Value)\n}.ElseIf(#value2#){Span(Value 2)\n}.ElseIf(#value3#){Span(Value 3)}.Else{\n Span(Nothing)\n}\n")])])]),t("h3",{attrs:{id:"image"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#image"}},[e._v("#")]),e._v(" Image")]),e._v(" "),t("p",[e._v("Create a image HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src, Alt, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Image")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Src")])]),e._v(" "),t("p",[e._v("Image source, file or "),t("code",[e._v("data:...")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Alt")])]),e._v(" "),t("p",[e._v("Alternative text when the image cannot be displayed.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Сlass")])]),e._v(" "),t("p",[e._v("Image class name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Image(Src: Binary().ById(#id#), Class: preview).Style(height: 40px; widht 40px;)\n")])])]),t("h3",{attrs:{id:"imageinput"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#imageinput"}},[e._v("#")]),e._v(" ImageInput")]),e._v(" "),t("p",[e._v("Create an imageinput element to upload an image.")]),e._v(" "),t("h4",{attrs:{id:"syntax-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(Name, Width, Ratio, Format)\n")])])]),t("blockquote",[t("p",[e._v("ImageInput")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Width")])]),e._v(" "),t("p",[e._v("Width of the cropped image.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Ratio")])]),e._v(" "),t("p",[e._v("Aspect ratio or image height.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Format")])]),e._v(" "),t("p",[e._v("The format of the uploaded image.")])])]),e._v(" "),t("h4",{attrs:{id:"example-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("ImageInput(avatar, 100, 2/1)\n")])])]),t("h3",{attrs:{id:"include"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#include"}},[e._v("#")]),e._v(" Include")]),e._v(" "),t("p",[e._v("Insert the template with a specified name into the page code.")]),e._v(" "),t("h4",{attrs:{id:"syntax-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Include(Name)\n")])])]),t("blockquote",[t("p",[e._v("Include")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Template name.")])])]),e._v(" "),t("h4",{attrs:{id:"example-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Div(myclass, Include(mywidget))\n")])])]),t("h3",{attrs:{id:"input"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#input"}},[e._v("#")]),e._v(" Input")]),e._v(" "),t("p",[e._v("Create an input HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name, Class, Placeholder, Type, Value, Disabled)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Input")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Placeholder")])]),e._v(" "),t("p",[e._v("Prompt for the expected value of the input field.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("input type.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Element value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Disabled")])]),e._v(" "),t("p",[e._v("Disable the input element.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Input(Name: name, Type: text, Placeholder: Enter your name)\nInput(Name: num, Type: text).Validate(minLength: 6, maxLength: 20)\n")])])]),t("h3",{attrs:{id:"inputerr"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputerr"}},[e._v("#")]),e._v(" InputErr")]),e._v(" "),t("p",[e._v("Create an inputerr element to validate the error text.")]),e._v(" "),t("h4",{attrs:{id:"syntax-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name,validation errors)]\n")])])]),t("blockquote",[t("p",[e._v("InputErr")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Corresponds to the name of the "),t("a",{attrs:{href:"#input"}},[e._v("Input")]),e._v(" element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("validation errors")])]),e._v(" "),t("p",[e._v("Validation error message for one or more parameters.")])])]),e._v(" "),t("h4",{attrs:{id:"example-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputErr(Name: name,\nminLength: Value is too short,\nmaxLength: The length of the value must be less than 20 characters)\n")])])]),t("h3",{attrs:{id:"inputmap"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#inputmap"}},[e._v("#")]),e._v(" InputMap")]),e._v(" "),t("p",[e._v("Create an text input field for address, able to select coordinates on the map.")]),e._v(" "),t("h4",{attrs:{id:"syntax-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("InputMap(Name, Type, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("InputMap")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.\nThe value is an object in string format. For example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". When the InputMap is created with the predefined Value, the address field can be used to save the address value, so the it is not void.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Type")])]),e._v(" "),t("p",[e._v("Type of map spot mapping:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("polygon")]),e._v(" - indicates the area of a multi-spot closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Line")]),e._v(" - means a polyline with multiple points without closed loop;")]),e._v(" "),t("li",[t("code",[e._v("Point")]),e._v(" - indicates a single point coordinate.")])])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('InputMap(Name: Coords,Type: polygon, MapType: hybrid, Value: `{"zoom":8, "center":{"lat":55.749942860682545,"lng":37.6207172870636}}`)\n')])])]),t("h3",{attrs:{id:"jsontosource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#jsontosource"}},[e._v("#")]),e._v(" JsonToSource")]),e._v(" "),t("p",[e._v("Create a jsontosource element and fill it with the key-value pairs of a JSON array. The data obtained is put into the Source element, which can be used later in the source input function (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v(").\nThe records in the result data are sorted alphabetically by JSON key.")]),e._v(" "),t("h4",{attrs:{id:"syntax-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("JsonToSource(Source, Data)\n")])])]),t("blockquote",[t("p",[e._v("JsonToSource")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Data")])]),e._v(" "),t("p",[e._v("A JSON object or a variable name containing a JSON object ("),t("code",[e._v("#name#")]),e._v(").")])])]),e._v(" "),t("h4",{attrs:{id:"example-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('JsonToSource(src, #myjson#)\nJsonToSource(dat, {"param":"value", "param2": "value 2"})\n')])])]),t("h3",{attrs:{id:"label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#label"}},[e._v("#")]),e._v(" Label")]),e._v(" "),t("p",[e._v("Create a label HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(Body, Class, For)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("Label")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("For")])]),e._v(" "),t("p",[e._v("Bind to a form element.")])])]),e._v(" "),t("blockquote",[t("p",[t("code",[e._v("StyleThe")]),e._v(":CSS style specified.")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Label(The first item).\n")])])]),t("h3",{attrs:{id:"langres"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[e._v("#")]),e._v(" LangRes")]),e._v(" "),t("p",[e._v("Returns a specific language resource. If requested to edit the tree, the langres element is returned, and you may use the short format symbol $langres$.")]),e._v(" "),t("h4",{attrs:{id:"syntax-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(Name)\n")])])]),t("blockquote",[t("p",[e._v("LangRes")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Name of the language resource.")])])]),e._v(" "),t("h4",{attrs:{id:"example-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LangRes(name)\nLangRes(myres)\n")])])]),t("h3",{attrs:{id:"linkpage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linkpage"}},[e._v("#")]),e._v(" LinkPage")]),e._v(" "),t("p",[e._v("Create a linkpage element, linking to the page.")]),e._v(" "),t("h4",{attrs:{id:"syntax-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("LinkPage(Body, Page, Class, PageParams)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("LinkPage")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Button class name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("PageParams")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("Style")])])]),e._v(" "),t("p",[e._v("CSS styles")]),e._v(" "),t("h4",{attrs:{id:"example-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: "v_role_id=#recipient.role_id#")\n')])])]),t("h3",{attrs:{id:"map"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#map"}},[e._v("#")]),e._v(" Map")]),e._v(" "),t("p",[e._v("Create a visual map and display coordinates in any format.")]),e._v(" "),t("h4",{attrs:{id:"syntax-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Map(Hmap, MapType, Value)\n")])])]),t("blockquote",[t("p",[e._v("Map")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Hmap")])]),e._v(" "),t("p",[e._v("Height of an HTML element on the page.\nThe default value is 100.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Map value, an object in string format.\nFor example, "),t("code",[e._v('{"coords":[{"lat":number,"lng":number},]}')]),e._v(" or "),t("code",[e._v('{"zoom":int, "center":{"lat":number,"lng": number}}')]),e._v(". If "),t("code",[e._v("center")]),e._v(" is not specified, the map window will automatically adjust according to the specified coordinates.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("MapType")])]),e._v(" "),t("p",[e._v("Map type.\nIt has the following values: "),t("code",[e._v("hybrid, roadmap, satellite, terrain")]),e._v(".")])])]),e._v(" "),t("h4",{attrs:{id:"example-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Map(MapType:hybrid, Hmap:400, Value:{"coords":[{"lat":55.58774531752405,"lng":36.97260184619233},{"lat":55.58396161622043,"lng":36.973803475831005},{"lat":55.585222890513975,"lng":36.979811624024364},{"lat":55.58803635636347,"lng":36.978781655762646}],"area":146846.65783403456,"address":"Unnamed Road, Moscow, Russia, 143041"})\n')])])]),t("h3",{attrs:{id:"menugroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menugroup"}},[e._v("#")]),e._v(" MenuGroup")]),e._v(" "),t("p",[e._v("Create a nested submenu in the menu and return the menugroup element. Before replacing it with the language resource, the name parameter will return the value of Title.")]),e._v(" "),t("h4",{attrs:{id:"syntax-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(Title, Body, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child elements in a submenu.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuGroup(My Menu){\n MenuItem(Interface, sys-interface)\n MenuItem(Dahsboard, dashboard_default)\n}\n")])])]),t("h3",{attrs:{id:"menuitem"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#menuitem"}},[e._v("#")]),e._v(" MenuItem")]),e._v(" "),t("p",[e._v("Create a menu item and return the menuitem element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("MenuItem(Title, Page, Params, Icon)\n")])])]),t("blockquote",[t("p",[e._v("MenuItem")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Title")])]),e._v(" "),t("p",[e._v("Name of the menu item.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Page")])]),e._v(" "),t("p",[e._v("Name of the redirect page.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Params")])]),e._v(" "),t("p",[e._v("Redirect page parameters.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Icon")])]),e._v(" "),t("p",[e._v("Icon.")])])]),e._v(" "),t("h4",{attrs:{id:"example-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('MenuItem(Title:$@1roles$, Page:@1roles_list, Icon:"icon-pie-chart")\n')])])]),t("h3",{attrs:{id:"money"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#money"}},[e._v("#")]),e._v(" Money")]),e._v(" "),t("p",[e._v("Returns the string value of exp / 10 ^ digit.")]),e._v(" "),t("h4",{attrs:{id:"syntax-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("blockquote",[t("p",[e._v("Money")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Exp")])]),e._v(" "),t("p",[e._v("A number in string format.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Digit")])]),e._v(" "),t("p",[e._v("The exponent of 10 in the expression "),t("code",[e._v("Exp/10^digit")]),e._v(". The value can be positive or negative, and a positive value determines the number of digits after the decimal point.")])])]),e._v(" "),t("h4",{attrs:{id:"example-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Money(Exp, Digit)\n")])])]),t("h3",{attrs:{id:"or"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#or"}},[e._v("#")]),e._v(" Or")]),e._v(" "),t("p",[e._v("It returns the result of an if logical operation. All parameters listed in parentheses are separated by commas. If having one parameter that is value is not an empty string, zero or "),t("code",[e._v("false")]),e._v(", the parameter value is "),t("code",[e._v("true")]),e._v(", otherwise the parameter value is "),t("code",[e._v("false")]),e._v(". If the parameter value is "),t("code",[e._v("true")]),e._v(", the function returns "),t("code",[e._v("1")]),e._v(", otherwise it returns "),t("code",[e._v("0")]),e._v(".")]),e._v(" "),t("h4",{attrs:{id:"syntax-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Or(parameters)\n")])])]),t("h4",{attrs:{id:"example-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("If(Or(#myval1#,#myval2#), Span(OK))\n")])])]),t("h3",{attrs:{id:"p"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#p"}},[e._v("#")]),e._v(" P")]),e._v(" "),t("p",[e._v("Create a p HTML element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(Body, Class)\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("P")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Body")])]),e._v(" "),t("p",[e._v("Child text or element.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CSS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("P(This is the first line.\n This is the second line.)\n")])])]),t("h3",{attrs:{id:"qrcode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#qrcode"}},[e._v("#")]),e._v(" QRcode")]),e._v(" "),t("p",[e._v("Returns the QR code with the specified text and create a qrcode element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(Text)\n")])])]),t("blockquote",[t("p",[e._v("QRcode")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Text")])]),e._v(" "),t("p",[e._v("QR code text.")])])]),e._v(" "),t("h4",{attrs:{id:"example-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("QRcode(#name#)\n")])])]),t("h3",{attrs:{id:"radiogroup"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#radiogroup"}},[e._v("#")]),e._v(" RadioGroup")]),e._v(" "),t("p",[e._v("Create a radiogroup element.")]),e._v(" "),t("h4",{attrs:{id:"syntax-44"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-44"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name, Source, NameColumn, ValueColumn, Value, Class)\n [.Validate(validation parameters)]\n [.Style(Style)]\n")])])]),t("blockquote",[t("p",[e._v("RadioGroup")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Name")])]),e._v(" "),t("p",[e._v("Element name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source obtained from the DBFind or Data function.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("NameColumn")])]),e._v(" "),t("p",[e._v("Field name of the data source.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("ValueColumn")])]),e._v(" "),t("p",[e._v("Value name of the data source.\nFields created with Custom cannot be used in this parameter.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Value")])]),e._v(" "),t("p",[e._v("Default value.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("Class")])]),e._v(" "),t("p",[e._v("Class name.")])])]),e._v(" "),t("blockquote",[t("p",[e._v("Validate")])]),e._v(" "),t("p",[e._v("Validate the parameter.")]),e._v(" "),t("blockquote",[t("p",[e._v("Style")])]),e._v(" "),t("p",[e._v("The CCS style specified.")]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Style")])]),e._v(" "),t("p",[e._v("CSS style.")])])]),e._v(" "),t("h4",{attrs:{id:"example-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("RadioGroup(Name: type_decision, Source: numbers_type_decisions, NameColumn: name, ValueColumn: value)\n")])])]),t("h3",{attrs:{id:"range"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range"}},[e._v("#")]),e._v(" Range")]),e._v(" "),t("p",[e._v("Create a range element, use step size Step from From to To (not including To) to fill integer elements. The data generated will be put into Source and can be used later in the function of the source input (e.g. "),t("a",{attrs:{href:"#table"}},[e._v("Table")]),e._v("). If an invalid parameter is specified, an empty Source is returned.")]),e._v(" "),t("h4",{attrs:{id:"syntax-45"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#syntax-45"}},[e._v("#")]),e._v(" Syntax")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("Range(Source,From,To,Step)\n")])])]),t("blockquote",[t("p",[e._v("Range")])]),e._v(" "),t("ul",[t("li",[t("p",[t("code",[e._v("Source")])]),e._v(" "),t("p",[e._v("Data source name.")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("From")])]),e._v(" "),t("p",[e._v("Starting value (i = From).")])]),e._v(" "),t("li",[t("p",[t("code",[e._v("To")])]),e._v(" "),t("p",[e._v("End value (i ")]),e._v(".")]),e._v(" "),t("li",[e._v("All icon-class icons are from SimpleLineIcons: "),t("code",[e._v("icon-")]),e._v(".")])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/64.251500bf.js b/assets/js/64.33fca94f.js similarity index 99% rename from assets/js/64.251500bf.js rename to assets/js/64.33fca94f.js index 906f6e9..74556ed 100644 --- a/assets/js/64.251500bf.js +++ b/assets/js/64.33fca94f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{444:function(e,t,a){"use strict";a.r(t);var n=a(51),s=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"compiler-and-virtual-machine"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#compiler-and-virtual-machine"}},[e._v("#")]),e._v(" Compiler and Virtual Machine")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#source-code-storage-and-compilation"}},[e._v("Source code storage and compilation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-machine-structures"}},[e._v("Virtual machine structures")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#vm-structure"}},[e._v("VM Structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-structure"}},[e._v("Block structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#objinfo-structure"}},[e._v("ObjInfo structure")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contractinfo-structure"}},[e._v("ContractInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fieldinfo-structure"}},[e._v("FieldInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#funcname-structure"}},[e._v("FuncName Structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#extfuncinfo-structure"}},[e._v("ExtFuncInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#varinfo-structure"}},[e._v("VarInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#objextend-value"}},[e._v("ObjExtend value")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-machine-commands"}},[e._v("Virtual machine commands")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#bytecode-structure"}},[e._v("ByteCode structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#command-identifiers"}},[e._v("Command identifiers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#stack-operation-commands"}},[e._v("Stack operation commands")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#runtime-structure"}},[e._v("Runtime structure")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockstack-structure"}},[e._v("blockStack structure")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#runcode-function"}},[e._v("RunCode function")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("Other functions for operations with VM")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#compiler"}},[e._v("Compiler")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#lexical-analyzer"}},[e._v("Lexical analyzer")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#needle-language"}},[e._v("Needle language")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#lexemes"}},[e._v("Lexemes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#types"}},[e._v("Types")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expressions"}},[e._v("Expressions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#scope"}},[e._v("Scope")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-execution"}},[e._v("Contract execution")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#backus-naur-form-bnf"}},[e._v("Backus–Naur Form (BNF)")])])])])]),e._v(" "),a("p",[e._v("This section involves program compilation and Needle language operations in the Virtual Machine (VM).")]),e._v(" "),a("h2",{attrs:{id:"source-code-storage-and-compilation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#source-code-storage-and-compilation"}},[e._v("#")]),e._v(" Source code storage and compilation")]),e._v(" "),a("p",[e._v("Contracts and functions are written with Golang and stored in the contract tables of ecosystems.")]),e._v(" "),a("p",[e._v("When a contract is executed, its source code will be read from the database and compiled into bytecode.")]),e._v(" "),a("p",[e._v("When a contract is changed, its source code will be updated and saved in the database. Then, the source code is compiled, thereby updating the bytecode in the corresponding virtual machine.")]),e._v(" "),a("p",[e._v("As bytecodes are not physically saved, it will be compiled anew when the program is executed again.")]),e._v(" "),a("p",[e._v("The entire source code described in the contract table of each ecosystem is compiled into a virtual machine in strict order, and the status of the virtual machine is the same on all nodes.")]),e._v(" "),a("p",[e._v("When the contract is called, the virtual machine will not change its status in any way. The execution of any contract or calling of any function occurs on a separate running stack created during each external call.")]),e._v(" "),a("p",[e._v("Each ecosystem can have a so-called virtual ecosystem, which can be used within a node in conjunction with tables outside the blockchain, without direct affection on the blockchain or other virtual ecosystems. In this case, the node hosting such a virtual ecosystem will compile its contract and create its own virtual machine.")]),e._v(" "),a("h2",{attrs:{id:"virtual-machine-structures"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-machine-structures"}},[e._v("#")]),e._v(" Virtual machine structures")]),e._v(" "),a("h3",{attrs:{id:"vm-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vm-structure"}},[e._v("#")]),e._v(" VM Structure")]),e._v(" "),a("p",[e._v("A virtual machine is organized in memory as a structure like below.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type VM struct {\n Block\n ExtCost func(string) int64\n FuncCallsDB map[string]struct{}\n Extern bool\n ShiftContract int64\n logger *log.Entry\n}\n")])])]),a("p",[e._v("A VM structure has the following elements:")]),e._v(" "),a("ul",[a("li",[e._v("Block - contains a "),a("a",{attrs:{href:"#block-structure"}},[e._v("block structure")]),e._v(";")]),e._v(" "),a("li",[e._v("ExtCost - a function returns the cost of executing an external golang function;")]),e._v(" "),a("li",[e._v("FuncCallsDB - a collection of Golang function names. This function returns the execution cost as the first parameter. These functions use EXPLAIN to calculate the cost of database processing;")]),e._v(" "),a("li",[e._v("Extern - a Boolean flag indicating whether a contract is an external contract. It is set to true when a VM is created. Contracts called are not displayed when the code is compiled. In other words, it allows to call the contract code determined in the future;")]),e._v(" "),a("li",[e._v("ShiftContract - ID of the first contract in the VM;")]),e._v(" "),a("li",[e._v("logger - VM error log output.")])]),e._v(" "),a("h3",{attrs:{id:"block-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-structure"}},[e._v("#")]),e._v(" Block structure")]),e._v(" "),a("p",[e._v("A virtual machine is a tree composed of "),a("strong",[e._v("Block type")]),e._v(" objects.")]),e._v(" "),a("p",[e._v("A block is an independent unit that contains some bytecodes. In simple terms, everything you put in the braces ("),a("code",[e._v("{}")]),e._v(") in the language is a block.")]),e._v(" "),a("p",[e._v("For example, the following code would create a block with functions. This block also contains another block with an if statement, which contains a block with a while statement.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("func my() {\n if true {\n while false {\n ...\n }\n }\n}\n")])])]),a("p",[e._v("The block is organized in the memory as a structure like below.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type Block struct {\n Objects map[string]*ObjInfo\n Type int\n Owner *OwnerInfo\n Info interface{}\n Parent *Block\n Vars []reflect.Type\n Code ByteCodes\n Children Blocks\n}\n")])])]),a("p",[e._v("A block structure consists of the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Objects")]),e._v(" - a map of internal objects of the pointer type "),a("a",{attrs:{href:"#objInfo-structure"}},[e._v("ObjInfo")]),e._v(". For example, if there is a variable in the block, you can get information about it by its name;")]),e._v(" "),a("li",[a("strong",[e._v("Type")]),e._v(" - the type of the block. For a function block, its type is "),a("strong",[e._v("ObjFunc")]),e._v("; for a contract block, its type is "),a("strong",[e._v("ObjContract")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - a structure of "),a("strong",[e._v("OwnerInfo")]),e._v(" pointer type. This structure contains information about the owner of the compiled contract, which is specified during contract compilation or obtained from the "),a("strong",[e._v("contracts")]),e._v(" table;")]),e._v(" "),a("li",[a("strong",[e._v("Info")]),e._v(" - it contains information about the object, which depends on the block type;")]),e._v(" "),a("li",[a("strong",[e._v("Parent")]),e._v(" - a pointer to the parent block;")]),e._v(" "),a("li",[a("strong",[e._v("Vars")]),e._v(" - an array containing the types of current block variables;")]),e._v(" "),a("li",[a("strong",[e._v("Code")]),e._v(" - the bytecode of the block itself, which will be executed when the control rights are passed to the block, for example, function calls or loop bodies;")]),e._v(" "),a("li",[a("strong",[e._v("Children")]),e._v(" - an array containing sub-blocks, such as function nesting, loops, conditional operators.")])]),e._v(" "),a("h3",{attrs:{id:"objinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#objinfo-structure"}},[e._v("#")]),e._v(" ObjInfo structure")]),e._v(" "),a("p",[e._v("The ObjInfo structure contains information about internal objects.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ObjInfo struct {\n Type int\n Value interface{}\n}\n")])])]),a("p",[e._v("The ObjInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Type")]),e._v(" is the object type, which has any of the following values:\n"),a("ul",[a("li",[a("strong",[e._v("ObjContract")]),e._v(" – "),a("a",{attrs:{href:"#contractInfo-structure"}},[e._v("contract")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("ObjFunc")]),e._v(" - function;")]),e._v(" "),a("li",[a("strong",[e._v("ObjExtFunc")]),e._v(" - external golang function;")]),e._v(" "),a("li",[a("strong",[e._v("ObjVar")]),e._v(" - variable;")]),e._v(" "),a("li",[a("strong",[e._v("ObjExtend")]),e._v(" - $name variable.")])])]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" – it contains the structure of each type.")])]),e._v(" "),a("h4",{attrs:{id:"contractinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contractinfo-structure"}},[e._v("#")]),e._v(" ContractInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjContract")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a "),a("strong",[e._v("ContractInfo")]),e._v(" structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ContractInfo struct {\n ID uint32\n Name string\n Owner *OwnerInfo\n Used map[string]bool\n Tx *[]*FieldInfo\n}\n")])])]),a("p",[e._v("The ContractInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ID")]),e._v(" - contract ID, displayed in the blockchain when calling the contract;")]),e._v(" "),a("li",[a("strong",[e._v("Name")]),e._v(" - contract name;")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - other information about the contract;")]),e._v(" "),a("li",[a("strong",[e._v("Used")]),e._v(" - map of contracts names that has been called;")]),e._v(" "),a("li",[a("strong",[e._v("Tx")]),e._v(" - a data array described in the "),a("RouterLink",{attrs:{to:"/fr/topics/script.html#data-section"}},[e._v("data section")]),e._v(" of the contract.")],1)]),e._v(" "),a("h4",{attrs:{id:"fieldinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fieldinfo-structure"}},[e._v("#")]),e._v(" FieldInfo structure")]),e._v(" "),a("p",[e._v("The FieldInfo structure is used in the "),a("strong",[e._v("ContractInfo")]),e._v(" structure and describes elements in "),a("RouterLink",{attrs:{to:"/fr/topics/script.html#data-section"}},[e._v("data section")]),e._v(" of a contract.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FieldInfo struct {\n Name string\n Type reflect.Type\n Original uint32\n Tags string\n}\n")])])]),a("p",[e._v("The FieldInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Name")]),e._v(" - field name;")]),e._v(" "),a("li",[a("strong",[e._v("Type")]),e._v(" - field type;")]),e._v(" "),a("li",[a("strong",[e._v("Original")]),e._v(" - optional field;")]),e._v(" "),a("li",[a("strong",[e._v("Tags")]),e._v(" - additional labels for this field.")])]),e._v(" "),a("h4",{attrs:{id:"funcinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#funcinfo-structure"}},[e._v("#")]),e._v(" FuncInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the ObjFunc type, and the Value field contains a FuncInfo structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FuncInfo struct {\n Params []reflect.Type\n Results []reflect.Type\n Names *map[string]FuncName\n Variadic bool\n ID uint32\n}\n")])])]),a("p",[e._v("The FuncInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Params")]),e._v(" - an array of parameter types;")]),e._v(" "),a("li",[a("strong",[e._v("Results")]),e._v(" - an array of returned types;")]),e._v(" "),a("li",[a("strong",[e._v("Names")]),e._v(" - map of data for tail functions, for example, "),a("code",[e._v("DBFind().Columns ()")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Variadic")]),e._v(" - true if the function can have a variable number of parameters;")]),e._v(" "),a("li",[a("strong",[e._v("ID")]),e._v(" - function ID.")])]),e._v(" "),a("h4",{attrs:{id:"funcname-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#funcname-structure"}},[e._v("#")]),e._v(" FuncName Structure")]),e._v(" "),a("p",[e._v("The FuncName structure is used for FuncInfo and describes the data of a tail function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FuncName struct {\n Params []reflect.Type\n Offset []int\n Variadic bool\n}\n")])])]),a("p",[e._v("The FuncName structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Params")]),e._v(" - an array of parameter types;")]),e._v(" "),a("li",[a("strong",[e._v("Offset")]),e._v(" - the array of offsets for these variables. In fact, the values of all parameters in a function can be initialized with the dot .;")]),e._v(" "),a("li",[a("strong",[e._v("Variadic")]),e._v(" - true if the tail function can have a variable number of parameters.")])]),e._v(" "),a("h4",{attrs:{id:"extfuncinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#extfuncinfo-structure"}},[e._v("#")]),e._v(" ExtFuncInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the ObjExtFunc type, and the Value field contains a ExtFuncInfo structure. It is used to describe golang functions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ExtFuncInfo struct {\n Name string\n Params []reflect.Type\n Results []reflect.Type\n Auto []string\n Variadic bool\n Func interface{}\n}\n")])])]),a("p",[e._v("The ExtFuncInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Name")]),e._v(", "),a("strong",[e._v("Params")]),e._v(", "),a("strong",[e._v("Results")]),e._v(" parameters have the same structure as "),a("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Auto")]),e._v(" - an array of variables. If any, passes to the function as an additional parameter. For example, a variable of type SmartContract sc;")]),e._v(" "),a("li",[a("strong",[e._v("Func")]),e._v(" - golang functions.")])]),e._v(" "),a("h4",{attrs:{id:"varinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#varinfo-structure"}},[e._v("#")]),e._v(" VarInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjVar")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a "),a("strong",[e._v("VarInfo")]),e._v(" structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type VarInfo struct {\n Obj *ObjInfo\n Owner *Block\n}\n")])])]),a("p",[e._v("The VarInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Obj")]),e._v(" - information about the type and value of the variable;")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - Pointer to the owner block.")])]),e._v(" "),a("h4",{attrs:{id:"objextend-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#objextend-value"}},[e._v("#")]),e._v(" ObjExtend value")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjExtend")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a string containing the name of the variable or function.")]),e._v(" "),a("h2",{attrs:{id:"virtual-machine-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-machine-commands"}},[e._v("#")]),e._v(" Virtual machine commands")]),e._v(" "),a("h3",{attrs:{id:"bytecode-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bytecode-structure"}},[e._v("#")]),e._v(" ByteCode structure")]),e._v(" "),a("p",[e._v("A bytecode is a sequence of "),a("strong",[e._v("ByteCode")]),e._v(" type structures.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ByteCode struct {\n Cmd uint16\n Value interface{}\n}\n")])])]),a("p",[e._v("This structure has the following fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Cmd")]),e._v(" - the identifier of the storage commands;")]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" - contains the operand (value).")])]),e._v(" "),a("p",[e._v("In general, commands perform an operation on the top element of the stack and writes the result value into it if necessary.")]),e._v(" "),a("h3",{attrs:{id:"command-identifiers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#command-identifiers"}},[e._v("#")]),e._v(" Command identifiers")]),e._v(" "),a("p",[e._v("Identifiers of the virtual machine commands are described in the vm/cmds_list.go file.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("cmdPush")]),e._v(" – put a value from the Value field to the stack. For example, put numbers and lines to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdVar")]),e._v(" - put the value of a variable to the stack. Value contains a pointer to the VarInfo structure and information about the variable;")]),e._v(" "),a("li",[a("strong",[e._v("cmdExtend")]),e._v(" – put the value of an external variable to the stack. Value contains a string with the variable name (starting with $);")]),e._v(" "),a("li",[a("strong",[e._v("cmdCallExtend")]),e._v(" – call an external function (starting with $). The parameters of the function are obtained from the stack, and the results are placed to the stack. Value contains a function name (starting with $);")]),e._v(" "),a("li",[a("strong",[e._v("cmdPushStr")]),e._v(" – put the string in Value to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdCall")]),e._v(" - calls the virtual machine function. Value contains a "),a("strong",[e._v("ObjInfo")]),e._v(" structure. This command is applicable to the "),a("strong",[e._v("ObjExtFunc")]),e._v(" golang function and "),a("strong",[e._v("ObjFunc")]),e._v(" Needle function. If a function is called, its parameters will be obtained from the stack and the result values will be placed to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdCallVari")]),e._v(" - similar to the "),a("strong",[e._v("cmdCall")]),e._v(" command, it calls the virtual machine function. This command is used to call a function with a variable number of parameters;")]),e._v(" "),a("li",[a("strong",[e._v("cmdReturn")]),e._v(" - used to exit the function. The return values will be put to the stack, and the Value field is not used;")]),e._v(" "),a("li",[a("strong",[e._v("cmdIf")]),e._v(" – transfer control to the bytecode in the "),a("strong",[e._v("block")]),e._v(" structure, which is passed in the Value field. The control will be transferred to the stack only when the top element of the stack is called by the "),a("em",[e._v("valueToBool")]),e._v(" function and returned "),a("code",[e._v("true")]),e._v(". Otherwise, the control will be transferred to the next command;")]),e._v(" "),a("li",[a("strong",[e._v("cmdElse")]),e._v(" - this command works in the same way as the "),a("strong",[e._v("cmdIf")]),e._v(", but only when the top element of the stack is called by the valueToBool function and returned "),a("code",[e._v("false")]),e._v(", the control will be transferred to the specified block;")]),e._v(" "),a("li",[a("strong",[e._v("cmdAssignVar")]),e._v(" – get a list of variables of type "),a("strong",[e._v("VarInfo")]),e._v(" from Value. These variables use the "),a("strong",[e._v("cmdAssign")]),e._v(" command to get the value;")]),e._v(" "),a("li",[a("strong",[e._v("cmdAssign")]),e._v(" – assign the value in the stack to the variable obtained by the "),a("strong",[e._v("cmdAssignVar")]),e._v(" command;")]),e._v(" "),a("li",[a("strong",[e._v("cmdLabel")]),e._v(" - defines a label when control is returned during the while loop;")]),e._v(" "),a("li",[a("strong",[e._v("cmdContinue")]),e._v(" - this command transfers control to the "),a("strong",[e._v("cmdLabel")]),e._v(" label. When executing a new iteration of the loop, Value is not used;")]),e._v(" "),a("li",[a("strong",[e._v("cmdWhile")]),e._v(" – use valueToBool to check the top element of the stack. If this value is "),a("code",[e._v("true")]),e._v(", the "),a("strong",[e._v("block")]),e._v(" structure will be called from the value field;")]),e._v(" "),a("li",[a("strong",[e._v("cmdBreak")]),e._v(" - exits the loop;")]),e._v(" "),a("li",[a("strong",[e._v("cmdIndex")]),e._v(" – put the value in map or array into the stack by index, without using Value. For example, "),a("code",[e._v("(map | array) (index value) => (map | array [index value])")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSetIndex")]),e._v(" – assigns the value of the top element of the stack to elements of map or array, without using Value. For example, "),a("code",[e._v("(map | array) (index value) (value) => (map | array)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdFuncName")]),e._v(" - adds parameters that are passed using sequential descriptions divided by dot . For example, "),a("code",[e._v("func name => Func (...) .Name (...)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdUnwrapArr")]),e._v(" - defines a Boolean flag if the top element of the stack is an array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdMapInit")]),e._v(" – initializes the value of map;")]),e._v(" "),a("li",[a("strong",[e._v("cmdArrayInit")]),e._v(" – initializes the value of array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdError")]),e._v(" - this command is created when a contract or function terminates with a specified "),a("code",[e._v("error, warning, info")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"stack-operation-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stack-operation-commands"}},[e._v("#")]),e._v(" Stack operation commands")]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("In the current version, automatic type conversion is not fully applicable for these commands. For example,")])]),e._v(" "),a("blockquote",[a("p",[a("code",[e._v("string + float | int | decimal => float | int | decimal, float + int | str => float, but int + string => runtime error")]),e._v(".")])]),e._v(" "),a("p",[e._v("The following are commands for direct stack processing. The Value field is not used in these commands.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("cmdNot")]),e._v(" - logical negation. "),a("code",[e._v("(val) => (!ValueToBool(val))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSign")]),e._v(" - change of sign. "),a("code",[e._v("(val) => (-val)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAdd")]),e._v(" - addition. "),a("code",[e._v("(val1)(val2) => (val1 + val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSub")]),e._v(" - subtraction. "),a("code",[e._v("(val1)(val2) => (val1-val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdMul")]),e._v(" - multiplication. "),a("code",[e._v("(val1)(val2) => (val1 * val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdDiv")]),e._v(" - division. "),a("code",[e._v("(val1)(val2) => (val1 / val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAnd")]),e._v(" - logical AND. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) && valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdOr")]),e._v(" - logical OR. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) || valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdEqual")]),e._v(" - equality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 == val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotEq")]),e._v(" - inequality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 != val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdLess")]),e._v(" - less-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 (val1 >= val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdGreat")]),e._v(" - greater-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1> val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotGreat")]),e._v(" - less-than-or-equal comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 <= val2)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"runtime-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runtime-structure"}},[e._v("#")]),e._v(" Runtime structure")]),e._v(" "),a("p",[e._v("The execution of bytecodes will not affect the virtual machine. For example, it allows various functions and contracts to run simultaneously in a single virtual machine. The Runtime structure is used to run functions and contracts, as well as any expressions and bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type RunTime struct {\n stack []interface{}\n blocks []*blockStack\n vars []interface{}\n extend *map[string]interface{}\n vm *VM\n cost int64\n err error\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("stack")]),e._v(" - the stack to execute the bytecode;")]),e._v(" "),a("li",[a("strong",[e._v("blocks")]),e._v(" - block calls stack;")]),e._v(" "),a("li",[a("strong",[e._v("vars")]),e._v(" - stack of variables. Its variable will be added to the stack of variables when the bytecode is called in the block. After exiting the block, the size of the stack of variables will return to the previous value;")]),e._v(" "),a("li",[a("strong",[e._v("extend")]),e._v(" - a pointer to map with values of external variables ("),a("code",[e._v("$name")]),e._v(");")]),e._v(" "),a("li",[a("strong",[e._v("vm")]),e._v(" - a virtual machine pointer;")]),e._v(" "),a("li",[a("strong",[e._v("cost")]),e._v(" - fuel unit of the resulting cost of execution;")]),e._v(" "),a("li",[a("strong",[e._v("err")]),e._v(" - error occurred during execution.")])]),e._v(" "),a("h4",{attrs:{id:"blockstack-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockstack-structure"}},[e._v("#")]),e._v(" blockStack structure")]),e._v(" "),a("p",[e._v("The blockStack structure is used in the Runtime structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type blockStack struct {\n Block *Block\n Offset int\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Block")]),e._v(" - a pointer to the block being executed;")]),e._v(" "),a("li",[a("strong",[e._v("Offset")]),e._v(" – the offset of the last command executed in the bytecode of the specified block.")])]),e._v(" "),a("h3",{attrs:{id:"runcode-function"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runcode-function"}},[e._v("#")]),e._v(" RunCode function")]),e._v(" "),a("p",[e._v("Bytecodes are executed in the "),a("strong",[e._v("RunCode")]),e._v(" function. It contains a loop that performs the corresponding operation for each bytecode command. Before processing a bytecode, the data required must be initialized.")]),e._v(" "),a("p",[e._v("New blocks are added to other blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = append(rt.blocks, &blockStack{block, len(rt.vars)})\n")])])]),a("p",[e._v("Next, get the information of relevant parameters of the tail function. These parameters are contained in the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var namemap map[string][]interface{}\nif block.Type == ObjFunc && block.Info.(*FuncInfo).Names != nil {\n if rt.stack[len(rt.stack)-1] != nil {\n namemap = rt.stack[len(rt.stack)-1].(map[string][]interface{})\n }\n rt.stack = rt.stack[:len(rt.stack)-1]\n}\n")])])]),a("p",[e._v("Then, all variables defined in the current block must be initialized with their initial values.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("start := len(rt.stack)\nvaroff := len(rt.vars)\nfor vkey, vpar := range block.Vars {\n rt.cost--\n var value interface{}\n")])])]),a("p",[e._v("Since variables in the function are also variables, we need to retrieve them from the last element of the stack in the order described by the function itself.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if block.Type == ObjFunc && vkey = len(params.Params)-1 {\n")])])]),a("p",[e._v("If variable parameters passed belongs to a variable number of parameters, then these parameters will be combined into an array of variables.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" off := varoff + params.Offset[len(params.Params)-1]\n rt.vars[off] = append(rt.vars[off].([]interface{}), value)\n } else {\n rt.vars[varoff+params.Offset[i]] = value\n }\n }\n }\n}\n")])])]),a("p",[e._v("After that, all we have to do is delete values passed from the top of the stack as function parameters, thereby moving the stack. We have copied their values into a variable array.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if block.Type == ObjFunc {\n start -= len(block.Info.(*FuncInfo).Params)\n}\n")])])]),a("p",[e._v("When a bytecode command loop finished, we must clear the stack correctly.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("last := rt.blocks[len(rt.blocks)-1]\n")])])]),a("p",[e._v("Delete the current block from the stack of blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = rt.blocks[:len(rt.blocks)-1]\nif status == statusReturn {\n")])])]),a("p",[e._v("If successfully exited from a function already executed, we will add the return value to the end of the previous stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if last.Block.Type == ObjFunc {\n for count := len(last.Block.Info.(*FuncInfo).Results); count > 0; count-- {\n rt.stack[start] = rt.stack[len(rt.stack)-count]\n start++\n }\n status = statusNormal\n } else {\n")])])]),a("p",[e._v("As you can see, if we do not execute the function, then we will not restore the stack status and exit the function as is. The reason is that loops and conditional structures that have been executed in the function are also bytecode blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" return\n\n }\n}\n\nrt.stack = rt.stack[:start]\n")])])]),a("h3",{attrs:{id:"other-functions-for-operations-with-vm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("#")]),e._v(" Other functions for operations with VM")]),e._v(" "),a("p",[e._v("Your may create a virtual machine with the "),a("strong",[e._v("NewVM")]),e._v(" function. Each virtual machine will be added with four functions, such as "),a("strong",[e._v("ExecContract")]),e._v(", "),a("strong",[e._v("MemoryUsage")]),e._v(", "),a("strong",[e._v("CallContract")]),e._v(", and "),a("strong",[e._v("Settings")]),e._v(", through the "),a("strong",[e._v("Extend")]),e._v(" function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for key, item := range ext.Objects {\n fobj := reflect.ValueOf(item).Type()\n")])])]),a("p",[e._v("We traverse all the objects passed and only look at the functions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" switch fobj.Kind() {\n case reflect.Func:\n")])])]),a("p",[e._v("We fill the "),a("strong",[e._v("ExtFuncInfo")]),e._v(" structure according to the information received about the function, and add its structure to the top level map "),a("strong",[e._v("Objects")]),e._v(" by name.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" data := ExtFuncInfo{key, make([]reflect.Type, fobj.NumIn()), make([]reflect.Type, fobj.NumOut()),\n make([]string, fobj.NumIn()), fobj.IsVariadic(), item}\n for i := 0; i 0 && ((*lexems)[i-1].Type == isComma || (*lexems)[i-1].Type == lexOper) {\n continue main\n }\n for k := len(buffer) - 1; k >= 0; k-- {\n if buffer[k].Cmd == cmdSys {\n continue main\n }\n}\nbreak main\n\n")])])]),a("p",[e._v("In general, the algorithm itself corresponds to an algorithm for converting to inverse Polish notation. With the consideration of the calling of necessary contracts, functions, and indexes, as well as other things not encountered during parsing and options for parsing lexIdent type tokens, then, variables, functions or contracts with this name will be checked. If nothing is found and this is not a function or contract call, then it will indicate an error.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("objInfo, tobj := vm.findObj(lexem.Value.(string), block)\nif objInfo == nil && (!vm.Extern || i> *ind || i >= len(*lexems)-2 || (*lexems)[i+1].Type != isLPar) {\n return fmt.Errorf(`unknown identifier %s`, lexem.Value.(string))\n}\n")])])]),a("p",[e._v("We may encounter such a situation, and the contract call will be described later. In this example, if no functions or variables with the same name are found, then we think it is necessary to call a contract. In this compiled language, there is no difference between contracts and function calls. But we need to call the contract through the "),a("strong",[e._v("ExecContract")]),e._v(" function used in the bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if objInfo.Type == ObjContract {\n if objInfo.Value != nil {\n objContract = objInfo.Value.(*Block)\n }\n objInfo, tobj = vm.findObj(`ExecContract`, block)\n isContract = true\n}\n")])])]),a("p",[e._v("We record the number of variables so far in "),a("code",[e._v("count")]),e._v(", which will also be written to the stack along with the number of function parameters. In each subsequent detection of parameters, we only need to increase this number by one unit at the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("count := 0\nif (*lexems)[i+2].Type != isRPar {\n count++\n}\n")])])]),a("p",[e._v("We have a list Used of called parameters for contracts, then we need to mark the case of the contract is called. If the contract is called without parameters, we must add two empty parameters to call "),a("strong",[e._v("ExecContract")]),e._v(" to get at least two parameters.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('if isContract {\n name := StateName((*block)[0].Info.(uint32), lexem.Value.(string))\n for j := len(*block) - 1; j >= 0; j-- {\n topblock := (*block)[j]\n if topblock.Type == ObjContract {\n if topblock.Info.(*ContractInfo).Used == nil {\n topblock.Info.(*ContractInfo).Used = make(map[string]bool)\n }\n topblock.Info.(*ContractInfo).Used[name] = true\n }\n }\n bytecode = append(bytecode, &ByteCode{cmdPush, name})\n if count == 0 {\n count = 2\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n }\n count++\n}\n')])])]),a("p",[e._v("If we see that there is a square bracket next, then we add the "),a("strong",[e._v("cmdIndex")]),e._v(" command to get the value by the index.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if (*lexems)[i+1].Type == isLBrack {\n if objInfo == nil || objInfo.Type != ObjVar {\n return fmt.Errorf(`unknown variable %s`, lexem.Value.(string))\n }\n buffer = append(buffer, &ByteCode{cmdIndex, 0})\n}\n")])])]),a("p",[e._v("The "),a("strong",[e._v("CompileBlock")]),e._v(" function can generate object trees and expression-independent bytecodes. The compilation process is based on a finite state machine, just like a lexical analyzer, but with the following differences. First, we do not use symbols but tokens; second, we will immediately describe the "),a("em",[e._v("states")]),e._v(" variables in all states and transitions. It represents an array of objects indexed by token type. Each token has a structure of "),a("em",[e._v("compileState")]),e._v(", and a new state is specified in "),a("em",[e._v("NewState")]),e._v(". If it is clear what structure we have resolved, we can specify the function of the handler in the "),a("em",[e._v("Func")]),e._v(" field.")]),e._v(" "),a("p",[e._v("Let us review the main state as an example.")]),e._v(" "),a("p",[e._v("If we encounter a newline or comment, then we will remain in the same state. If we encounter the "),a("strong",[e._v("contract")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateContract")]),e._v(" and start parsing the structure. If we encounter the "),a("strong",[e._v("func")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateFunc")]),e._v(". If other tokens are received, the function generating error will be called.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateRoot\n lexNewLine: {stateRoot, 0},\n lexKeyword | (keyContract << 8): {stateContract | statePush, 0},\n lexKeyword | (keyFunc << 8): {stateFunc | statePush, 0},\n lexComment: {stateRoot, 0},\n 0: {errUnknownCmd, cfError},\n},\n")])])]),a("p",[e._v("Suppose we encountered the "),a("strong",[e._v("func")]),e._v(" keyword and we have changed the state to "),a("em",[e._v("stateFunc")]),e._v(". Since the function name must follow the "),a("strong",[e._v("func")]),e._v(" keyword, we will keep the same state when changing the function name. For all other tokens, we will generate corresponding errors. If we get the function name in the token identifier, then we go to the "),a("em",[e._v("stateFParams")]),e._v(" state, where we can get the parameters of the function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateFunc\n lexNewLine: {stateFunc, 0},\n lexIdent: {stateFParams, cfNameBlock},\n 0: {errMustName, cfError},\n},\n")])])]),a("p",[e._v("At the same time as the above operations, we will call the "),a("strong",[e._v("fNameBlock")]),e._v(" function. It should be noted that the Block structure is created with the statePush mark, where we get it from the buffer and fill it with the data we need. The "),a("strong",[e._v("fNameBlock")]),e._v(" function is suitable for contracts and functions (including those nested in them). It fills the "),a("em",[e._v("Info")]),e._v(" field with the corresponding structure and writes itself into the "),a("em",[e._v("Objects")]),e._v(" of the parent block. In this way, we can call the function or contract with the specified name. Similarly, we create corresponding functions for all states and variables. These functions are usually very small and perform some duties when constructing the virtual machine tree.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("func fNameBlock(buf *[]*Block, state int, lexem *Lexem) error {\n var itype int\n prev := (*buf)[len(*buf)-2]\n fblock := (*buf)[len(*buf)-1]\n name := lexem.Value.(string)\n switch state {\n case stateBlock:\n itype = ObjContract\n name = StateName((*buf)[0].Info.(uint32), name)\n fblock.Info = &ContractInfo{ID: uint32(len(prev.Children) - 1), Name: name,\n Owner: (*buf)[0].Owner}\n default:\n itype = ObjFunc\n fblock.Info = &FuncInfo{}\n }\n fblock.Type = itype\n prev.Objects[name] = &ObjInfo{Type: itype, Value: fblock}\n return nil\n}\n")])])]),a("p",[e._v("For the "),a("strong",[e._v("CompileBlock")]),e._v(" function, it just traverses all the tokens and switches states according to the tokens described in states. Almost all additional tokens correspond to additional program codes.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("statePush")]),e._v(" – adds the "),a("strong",[e._v("Block")]),e._v(" object to the object tree;")]),e._v(" "),a("li",[a("strong",[e._v("statePop")]),e._v(" - used when the block ends with a closing brace;")]),e._v(" "),a("li",[a("strong",[e._v("stateStay")]),e._v(" - you need to keep the current mark when changing to a new state;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBlock")]),e._v(" - transition to the "),a("strong",[e._v("stateBlock")]),e._v(" state for processing "),a("em",[e._v("while")]),e._v(" and "),a("em",[e._v("if")]),e._v(". After processing expressions, you need to process blocks within the braces;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBody")]),e._v(" - transition to the "),a("strong",[e._v("stateBody")]),e._v(" state;")]),e._v(" "),a("li",[a("strong",[e._v("stateFork")]),e._v(" - save the marked position. When the expression starts with an identifier or a name with "),a("code",[e._v("$")]),e._v(", we can make function calls or assignments;")]),e._v(" "),a("li",[a("strong",[e._v("stateToFork")]),e._v(" – used to get the token stored in "),a("strong",[e._v("stateFork")]),e._v(", which will be passed to the process function;")]),e._v(" "),a("li",[a("strong",[e._v("stateLabel")]),e._v(" – used to insert "),a("strong",[e._v("cmdLabel")]),e._v(" commands. "),a("em",[e._v("while")]),e._v(" structure requires this flag;")]),e._v(" "),a("li",[a("strong",[e._v("stateMustEval")]),e._v(" – check the availability of conditional expressions at the beginning of "),a("em",[e._v("if")]),e._v(" and "),a("em",[e._v("while")]),e._v(" structures.")])]),e._v(" "),a("p",[e._v("In addition to the "),a("strong",[e._v("CompileBlock")]),e._v(" function, the "),a("strong",[e._v("FlushBlock")]),e._v(" function should also be mentioned. But the problem is that the block tree is constructed independently of existing virtual machines. More precisely, we obtain information about functions and contracts that exist in a virtual machine, but we collect the compiled blocks into a separate tree. Otherwise, if an error occurs during compilation, we must roll back the virtual machine to the previous state. Therefore, we go to the compilation tree separately, but after the compilation is successful, the "),a("strong",[e._v("FlushContract")]),e._v(" function must be called. This function adds the completed block tree to the current virtual machine. The compilation phase is now complete.")]),e._v(" "),a("h2",{attrs:{id:"lexical-analyzer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexical-analyzer"}},[e._v("#")]),e._v(" Lexical analyzer")]),e._v(" "),a("p",[e._v("The lexical analyzer processes incoming strings and forms a sequence of tokens of the following types :")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - system token, for example: "),a("code",[e._v("{}, [], (), ,, .")]),e._v(" etc;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - operation token, for example: "),a("code",[e._v("+, -, /, \\, *")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - number;")]),e._v(" "),a("li",[a("strong",[e._v("lexident")]),e._v(" - identifier;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewline")]),e._v(" - newline character;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comment;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - keyword;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" - type;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" - reference to external variables or functions, for example: "),a("code",[e._v("$myname")]),e._v(".")])]),e._v(" "),a("p",[e._v("In the current version, a conversion table (finite state machine) is initially constructed with the help of the "),a("a",{attrs:{href:"#lextablelextablego"}},[e._v("script/lextable/lextable.go")]),e._v(" file to parse the tokens, which is written to the lex_table.go file. In general, you can get rid of the conversion table initially generated by the file and create a conversion table in the memory ("),a("code",[e._v("init()")]),e._v(") immediately upon startup. The lexical analysis itself occurs in the lexParser function in the "),a("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lextable-lextable-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lextable-lextable-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),a("p",[e._v("Here we define the alphabet to operate and describe how the finite state machine changes from one state to another based on the next received symbol.")]),e._v(" "),a("p",[a("em",[e._v("states")]),e._v(" is a JSON object containing a list of states.")]),e._v(" "),a("p",[e._v("Except for specific symbols, "),a("code",[e._v("d")]),e._v(" stands for all symbols not specified in the state.\n"),a("code",[e._v("n")]),e._v(" stands for 0x0a, "),a("code",[e._v("s")]),e._v(" stands for space, "),a("code",[e._v("q")]),e._v(" stands for backquote, "),a("code",[e._v("Q")]),e._v(" stands for double quote, "),a("code",[e._v("r")]),e._v(" stands for character >= 128, "),a("code",[e._v("a")]),e._v(" stands for AZ and az, and "),a("code",[e._v("1")]),e._v(" stands for 1- 9.")]),e._v(" "),a("p",[e._v("The name of these states are keys, and the possible values are listed in the value object. Then, there is a new state to make transitions for each group. Then there is the name of the token. If we need to return to the initial state, the third parameter is the service token, which indicates how to handle the current symbol.")]),e._v(" "),a("p",[e._v("For example, we have the main state and the incoming characters "),a("code",[e._v("/")]),e._v(", "),a("code",[e._v('"/": ["solidus", "", "push next"]')]),e._v(",")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("push")]),e._v(" - gives the command to remember that it is in a separate stack ;")]),e._v(" "),a("li",[a("strong",[e._v("next")]),e._v(" - goes to the next character, and at the same time we change the status to "),a("strong",[e._v("solidus")]),e._v(". After that, gets the next character and check the status of "),a("strong",[e._v("solidus")]),e._v(".")])]),e._v(" "),a("p",[e._v("If the next character has "),a("code",[e._v("/")]),e._v(" or "),a("code",[e._v("/*")]),e._v(", then we go to the comment "),a("strong",[e._v("comment")]),e._v(" state because they start with "),a("code",[e._v("//")]),e._v(" or "),a("code",[e._v("/*")]),e._v(". Obviously, each comment has a different state afterwards, because they end with a different symbol.")]),e._v(" "),a("p",[e._v("If the next character is not "),a("code",[e._v("/")]),e._v(" and "),a("code",[e._v("*")]),e._v(", then we record everything in the stack as "),a("strong",[e._v("lexOper")]),e._v(" type tags, clear the stack and return to the main state.")]),e._v(" "),a("p",[e._v("The following module converts the state tree into a numeric array and writes it into the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("p",[e._v("In the first loop:")]),e._v(" "),a("p",[e._v("We form an alphabet of valid symbols.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for ind, ch := range alphabet {\n i := byte(ind)\n")])])]),a("p",[e._v("In addition, in "),a("strong",[e._v("state2int")]),e._v(", we provide each state with its own sequence identifier.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" state2int := map[string]uint{`main`: 0}\n if err := json.Unmarshal([]byte(states), &data); err == nil {\n for key := range data {\n if key != `main` {\n state2int[key] = uint(len(state2int))\n")])])]),a("p",[e._v("When we traverse all states and each set in a state and each symbol in a set, we write a three-byte number [new state identifier (0 = main)] + [token type ( 0-no token)] + [token].\nThe bidimensionality of the "),a("em",[e._v("table")]),e._v(" array is that it is divided into states and 34 input symbols from the "),a("em",[e._v("alphabet")]),e._v(" array, which are arranged in the same order.\nWe are in the "),a("em",[e._v("main")]),e._v(" state on the zero row of the "),a("em",[e._v("table")]),e._v(". Take the first character, find its index in the "),a("em",[e._v("alphabet")]),e._v(" array, and get the value from the column with the given index. Starting from the value received, we receive the token in the low byte. If the parsing is complete, the second byte indicates the type of token received. In the third byte, we receive the index of the next new state.\nAll of these are described in more detail in the "),a("strong",[e._v("lexParser")]),e._v(" function in "),a("em",[e._v("lex.go")]),e._v(".\nIf you want to add some new characters, you need to add them to the "),a("em",[e._v("alphabet")]),e._v(" array and increase the quantity of the "),a("em",[e._v("AlphaSize")]),e._v(" constant. If you want to add a new symbol combination, it should be described in the status, similar to the existing options. After the above operation, run the "),a("em",[e._v("lextable.go")]),e._v(" file to update the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lex-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lex-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lex-go"}},[e._v("lex.go")])]),e._v(" "),a("p",[e._v("The "),a("strong",[e._v("lexParser")]),e._v(" function directly generates lexical analysis and returns an array of received tags based on incoming strings. Let us analyze the structure of tokens.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type Lexem struct {\n Type uint32 // Type of the lexem\n Value interface{} // Value of lexem\n Line uint32 // Line of the lexem\n Column uint32 // Position inside the line\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Type")]),e._v(" - token type. It has one of the following values: "),a("code",[e._v("lexSys, lexOper, lexNumber, lexIdent, lexString, lexComment, lexKeyword, lexType, lexExtend")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" – token value. The type of value depends on the token type, Let us analyze it in more detail:\n"),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - includes brackets, commas, etc. In this case, "),a("code",[e._v("Type = ch << 8 | lexSys")]),e._v(", please refer to the "),a("code",[e._v("isLPar ... isRBrack")]),e._v(" constant, and its value is uint32 bits;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - the value represents an equivalent character sequence in the form of uint32. See the "),a("code",[e._v("isNot ... isOr")]),e._v(" constants;")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - numbers are stored as int64 or float64. If the number has a decimal point, it is float64;")]),e._v(" "),a("li",[a("strong",[e._v("lexIdent")]),e._v(" - identifiers are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewLine")]),e._v(" - newline character. Also used to calculate the row and token position;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - lines are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comments are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - for keywords, only the corresponding indexes are stored, see the "),a("code",[e._v("keyContract ... keyTail")]),e._v(" constant. In this case "),a("code",[e._v("Type = KeyID << 8 | lexKeyword")]),e._v(". In addition, it should be noted that the "),a("code",[e._v("true, false, nil")]),e._v(" keywords will be immediately converted to lexNumber type tokens, and the corresponding "),a("code",[e._v("bool")]),e._v(" and "),a("code",[e._v("intreface {}")]),e._v(" types will be used;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" – this value contains the corresponding "),a("code",[e._v("reflect.Type")]),e._v(" type value;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" – identifiers beginning with a "),a("code",[e._v("$")]),e._v(". These variables and functions are passed from the outside and are therefore assigned to special types of tokens. This value contains the name as a string without a $ at the beginning.")])])]),e._v(" "),a("li",[a("strong",[e._v("Line")]),e._v(" - the line where the token is found;")]),e._v(" "),a("li",[a("strong",[e._v("Column")]),e._v(" - in-line position of the token.")])]),e._v(" "),a("p",[e._v("Let us analyze the "),a("strong",[e._v("lexParser")]),e._v(" function in detail. The "),a("strong",[e._v("todo")]),e._v(" function looks up the symbol index in the alphabet based on the current state and the incoming symbol, and obtains a new state, token identifier (if any), and other tokens from the conversion table. The parsing itself involves calling the "),a("strong",[e._v("todo")]),e._v(" function in turn for each next character and switching to a new state. Once the tag is received, we create the corresponding token in the output criteria and continue the parsing process. It should be noted that during the parsing process, we do not accumulate the token symbols into a separate stack or array, because we only save the offset of the start of the token. After getting the token, we move the offset of the next token to the current parsing position.")]),e._v(" "),a("p",[e._v("All that remains is to check the lexical status tokens used in the parsing:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexfPush")]),e._v(" - this token means that we start to accumulate symbols in a new token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfNext")]),e._v(" - the character must be added to the current token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfPop")]),e._v(" - the receipt of the token is complete. Usually, with this flag we have the identifier type of the parsed token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfSkip")]),e._v(' - this token is used to exclude characters from parsing. For example, the control slashes in the string are \\n \\r ". They will be automatically replaced during the lexical analysis stage.')])]),e._v(" "),a("h2",{attrs:{id:"needle-language"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle-language"}},[e._v("#")]),e._v(" Needle language")]),e._v(" "),a("h3",{attrs:{id:"lexemes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexemes"}},[e._v("#")]),e._v(" Lexemes")]),e._v(" "),a("p",[e._v("The source code of a program must be in UTF-8 encoding.")]),e._v(" "),a("p",[e._v("The following lexical types are processed:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Keywords")]),e._v(" - "),a("code",[e._v("action, break, conditions, continue, contract, data, else, error, false, func, If, info, nil, return, settings, true, var, warning, while")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Number")]),e._v(" - only decimal numbers are accepted. There are two basic types: "),a("strong",[e._v("int")]),e._v(" and "),a("strong",[e._v("float")]),e._v(". If the number has a decimal point, it becomes a float "),a("strong",[e._v("float")]),e._v(". "),a("strong",[e._v("int")]),e._v(" type is equivalent to "),a("strong",[e._v("int64")]),e._v(" in golang, while "),a("strong",[e._v("float")]),e._v(" type is equivalent to "),a("strong",[e._v("float64")]),e._v(" in golang.")]),e._v(" "),a("li",[a("strong",[e._v("String")]),e._v(" - the string can be enclosed in double quotes "),a("code",[e._v('("a string")')]),e._v(" or backquotes "),a("code",[e._v("(\\`a string\\`)")]),e._v(". Both types of strings can contain newline characters. Strings in double quotes can contain double quotes, newline characters, and carriage returns escaped with slashes. For example, "),a("code",[e._v('"This is a \\"first string\\".\\r\\nThis is a second string."')]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Comment")]),e._v(" - there are two types of comments. Single-line comments use two slashes (//). For example, // This is a single-line comment. Multi-line comments use slash and asterisk symbols and can span multiple lines. For example, "),a("code",[e._v("/* This is a multi-line comment */")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Identifier")]),e._v(" - the names of variables and functions composed of a-z and A-Z letters, UTF-8 symbols, numbers and underscores. The name can start with a letter, underscore, "),a("code",[e._v("@")]),e._v(" or "),a("code",[e._v("$")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" is the name of the variable defined in the "),a("strong",[e._v("data section")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" can also be used to define global variables in the scope of "),a("strong",[e._v("conditions")]),e._v(" and "),a("strong",[e._v("action sections")]),e._v(". Ecosystem contracts can be called using the "),a("code",[e._v("@")]),e._v(" symbol. For example: "),a("code",[e._v("@1NewTable(...)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#types"}},[e._v("#")]),e._v(" Types")]),e._v(" "),a("p",[e._v("Corresponding golang types are specified next to theNeedle types.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("bool")]),e._v(" - bool, "),a("strong",[e._v("false")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("bytes")]),e._v(" - []byte{}, an empty byte array by default;")]),e._v(" "),a("li",[a("strong",[e._v("int")]),e._v(" - int64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - uint64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("array")]),e._v(" - []interface{}, an empty array by default;")]),e._v(" "),a("li",[a("strong",[e._v("map")]),e._v(" - map[string]interface{}, an empty object array by default;")]),e._v(" "),a("li",[a("strong",[e._v("money")]),e._v(" - decimal. Decimal, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("float")]),e._v(" - float64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("string")]),e._v(" - string, an empty string by default;")]),e._v(" "),a("li",[a("strong",[e._v("file")]),e._v(" - map[string]interface{}, an empty object array by default.")])]),e._v(" "),a("p",[e._v("These types of variables are defined with the "),a("code",[e._v("var")]),e._v(" keyword. For example, "),a("code",[e._v("var var1, var2 int")]),e._v(". When defined in this way, a variable will be assigned with a default value by type.")]),e._v(" "),a("p",[e._v("All variable values are of the interface{} type, and then they are assigned to the required golang types. Therefore, for example, array and map types are golang types []interface{} and map[string]interface{}. Both types of arrays can contain elements of any type.")]),e._v(" "),a("h3",{attrs:{id:"expressions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expressions"}},[e._v("#")]),e._v(" Expressions")]),e._v(" "),a("p",[e._v("An expression may include arithmetic operations, logical operations, and function calls. All expressions are evaluated from left to right by priority of operators. If having an equal priority, operators are evaluated from left to right.")]),e._v(" "),a("p",[e._v("Priority of operations from high to low:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Function call and parentheses")]),e._v(" - when a function is called, passed parameters will be calculated from left to right;")]),e._v(" "),a("li",[a("strong",[e._v("Unary Operation")]),e._v(" - logical negation "),a("code",[e._v("!")]),e._v(" and arithmetic sign change "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Multiplication and Division")]),e._v(" - arithmetic multiplication "),a("code",[e._v("*")]),e._v(" and division "),a("code",[e._v("/")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Addition and Subtraction")]),e._v(" - arithmetic addition "),a("code",[e._v("+")]),e._v(" and subtraction "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical comparison")]),e._v(" - "),a("code",[e._v(">=>> >=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical equality and inequality")]),e._v(" - "),a("code",[e._v("== !=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical AND")]),e._v(" - "),a("code",[e._v("&&")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical OR")]),e._v(" - "),a("code",[e._v("||")]),e._v(".")])]),e._v(" "),a("p",[e._v("When evaluating logical AND and OR, both sides of the expression are evaluated in any case.")]),e._v(" "),a("p",[e._v("Needle has no type checking during compilation. When evaluating operands, an attempt is made to convert the type to a more complex type. The type of complexity order can be as follows: "),a("code",[e._v("string, int, float, money")]),e._v(". Only part of the type conversions is implemented. The string type supports addition operations, and the result will be string concatenation. For example, "),a("code",[e._v("string + string = string, money-int = money, int * float = float")]),e._v(".")]),e._v(" "),a("p",[e._v("For functions, type checking is performed on the "),a("code",[e._v("string")]),e._v(" and "),a("code",[e._v("int")]),e._v(" types during execution.")]),e._v(" "),a("p",[a("strong",[e._v("array")]),e._v(" and "),a("strong",[e._v("map")]),e._v(" types can be addressed by index. For the "),a("strong",[e._v("array")]),e._v(" type, the "),a("strong",[e._v("int")]),e._v(" value must be specified as the index. For the "),a("strong",[e._v("map")]),e._v(" type, a variable or "),a("strong",[e._v("string")]),e._v(" value must be specified. If you assign a value to an "),a("strong",[e._v("array")]),e._v(" element whose index is greater than the current maximum index, an empty element will be added to the array. The initial value of these elements is "),a("strong",[e._v("nil")]),e._v(". For example: .. code:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('var my array\nmy[5] = 0\nvar mymap map\nmymap["index"] = my[3]\n')])])]),a("p",[e._v("In expressions of conditional logical values (such as "),a("code",[e._v("if, while, &&, ||, !")]),e._v("), the type is automatically converted to a logical value. If the type is not the default value, it is true.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var mymap map\nvar val string\nif mymap && val {\n...\n}\n")])])]),a("h3",{attrs:{id:"scope"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#scope"}},[e._v("#")]),e._v(" Scope")]),e._v(" "),a("p",[e._v("Braces specify a block that can contain local scope variables. By default, the scope of a variable extends to its own blocks and all nested blocks. In a block, you can define a new variable using the name of an existing variable. However, in this case, external variables with the same name become unavailable.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var a int\na = 3\n{\n var a int\n a = 4\n Println(a) // 4\n}\nPrintln(a) // 3\n")])])]),a("h3",{attrs:{id:"contract-execution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-execution"}},[e._v("#")]),e._v(" Contract execution")]),e._v(" "),a("p",[e._v("When calling a contract, parameters defined in "),a("strong",[e._v("data")]),e._v(" must be passed to it. Before executing a contract, the virtual machine receives these parameters and assigns them to the corresponding variables ($Param). Then, the predefined "),a("strong",[e._v("conditions")]),e._v(" function and "),a("strong",[e._v("action")]),e._v(" function are called.")]),e._v(" "),a("p",[e._v("Errors that occur during contract execution can be divided into two types: form errors and environment errors. Form errors are generated using special commands: "),a("code",[e._v("error, warning, info")]),e._v(" and when the built-in function returns "),a("code",[e._v("err")]),e._v(" not equal to "),a("em",[e._v("nil")]),e._v(".")]),e._v(" "),a("p",[e._v("The Needle language does not handle exceptions. Any error will terminate the execution of contracts. Since a separate stack and structure for saving variable values are created when a contract is executed, the golang garbage collection mechanism will automatically delete these data when a contract is executed.")]),e._v(" "),a("h3",{attrs:{id:"backus-naur-form-bnf"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backus-naur-form-bnf"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"backus-naur-form-bnf"}},[e._v("Backus–Naur Form (BNF)")])]),e._v(" "),a("p",[e._v("In computer science, BNF is a notation technique for context-free syntax and is usually used to describe the syntax of the language used in computing.")]),e._v(" "),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("''''''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] ]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("' | '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'A' |'B' | ... |'Z' |'a' |'b' | ... |'z' | 0x80 | 0x81 | ... | 0xFF\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x20'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x09'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x0D 0x0A'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'!' |'\"' |'$' |''' |'(' |')' |'\\*' |'+' |',' |'-' |'.' |'/ '|'<' |'=' |'>' |'[' |'\\\\' |']' |'_' |'|' |'}' | '{' | | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( |'_') { |'_' | }\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | |'!' |'#' | ... |'[' |']' | ...\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{ |'\\\"' |'\\n' |'\\r'}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'\"' {}'\"' |'\\`' {}'\\`'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'='\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'==' |'!=' |'>' |'<' |'<=' |'>=' |'&&' |'||' |'\\*' |'/' |'+ '|'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {','}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'(' []')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" [{'.' '(' []')'}]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'{''}'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( | | | | | break | continue | return)\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'if [else ]'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'while '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'contract '{'[] {} [] []'}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'data '{' {} '}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" '\"'{}'\"'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'optional | image | file | hidden | text | polymap | map | address | signature:'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'conditions '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'action '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'func '('[{','}]')'[{}] [] '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {',' } \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'.''('[{','}]')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'var {','}'\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{443:function(e,t,a){"use strict";a.r(t);var n=a(51),s=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"compiler-and-virtual-machine"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#compiler-and-virtual-machine"}},[e._v("#")]),e._v(" Compiler and Virtual Machine")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#source-code-storage-and-compilation"}},[e._v("Source code storage and compilation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-machine-structures"}},[e._v("Virtual machine structures")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#vm-structure"}},[e._v("VM Structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-structure"}},[e._v("Block structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#objinfo-structure"}},[e._v("ObjInfo structure")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contractinfo-structure"}},[e._v("ContractInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fieldinfo-structure"}},[e._v("FieldInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#funcname-structure"}},[e._v("FuncName Structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#extfuncinfo-structure"}},[e._v("ExtFuncInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#varinfo-structure"}},[e._v("VarInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#objextend-value"}},[e._v("ObjExtend value")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-machine-commands"}},[e._v("Virtual machine commands")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#bytecode-structure"}},[e._v("ByteCode structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#command-identifiers"}},[e._v("Command identifiers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#stack-operation-commands"}},[e._v("Stack operation commands")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#runtime-structure"}},[e._v("Runtime structure")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockstack-structure"}},[e._v("blockStack structure")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#runcode-function"}},[e._v("RunCode function")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("Other functions for operations with VM")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#compiler"}},[e._v("Compiler")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#lexical-analyzer"}},[e._v("Lexical analyzer")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#needle-language"}},[e._v("Needle language")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#lexemes"}},[e._v("Lexemes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#types"}},[e._v("Types")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expressions"}},[e._v("Expressions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#scope"}},[e._v("Scope")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-execution"}},[e._v("Contract execution")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#backus-naur-form-bnf"}},[e._v("Backus–Naur Form (BNF)")])])])])]),e._v(" "),a("p",[e._v("This section involves program compilation and Needle language operations in the Virtual Machine (VM).")]),e._v(" "),a("h2",{attrs:{id:"source-code-storage-and-compilation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#source-code-storage-and-compilation"}},[e._v("#")]),e._v(" Source code storage and compilation")]),e._v(" "),a("p",[e._v("Contracts and functions are written with Golang and stored in the contract tables of ecosystems.")]),e._v(" "),a("p",[e._v("When a contract is executed, its source code will be read from the database and compiled into bytecode.")]),e._v(" "),a("p",[e._v("When a contract is changed, its source code will be updated and saved in the database. Then, the source code is compiled, thereby updating the bytecode in the corresponding virtual machine.")]),e._v(" "),a("p",[e._v("As bytecodes are not physically saved, it will be compiled anew when the program is executed again.")]),e._v(" "),a("p",[e._v("The entire source code described in the contract table of each ecosystem is compiled into a virtual machine in strict order, and the status of the virtual machine is the same on all nodes.")]),e._v(" "),a("p",[e._v("When the contract is called, the virtual machine will not change its status in any way. The execution of any contract or calling of any function occurs on a separate running stack created during each external call.")]),e._v(" "),a("p",[e._v("Each ecosystem can have a so-called virtual ecosystem, which can be used within a node in conjunction with tables outside the blockchain, without direct affection on the blockchain or other virtual ecosystems. In this case, the node hosting such a virtual ecosystem will compile its contract and create its own virtual machine.")]),e._v(" "),a("h2",{attrs:{id:"virtual-machine-structures"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-machine-structures"}},[e._v("#")]),e._v(" Virtual machine structures")]),e._v(" "),a("h3",{attrs:{id:"vm-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vm-structure"}},[e._v("#")]),e._v(" VM Structure")]),e._v(" "),a("p",[e._v("A virtual machine is organized in memory as a structure like below.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type VM struct {\n Block\n ExtCost func(string) int64\n FuncCallsDB map[string]struct{}\n Extern bool\n ShiftContract int64\n logger *log.Entry\n}\n")])])]),a("p",[e._v("A VM structure has the following elements:")]),e._v(" "),a("ul",[a("li",[e._v("Block - contains a "),a("a",{attrs:{href:"#block-structure"}},[e._v("block structure")]),e._v(";")]),e._v(" "),a("li",[e._v("ExtCost - a function returns the cost of executing an external golang function;")]),e._v(" "),a("li",[e._v("FuncCallsDB - a collection of Golang function names. This function returns the execution cost as the first parameter. These functions use EXPLAIN to calculate the cost of database processing;")]),e._v(" "),a("li",[e._v("Extern - a Boolean flag indicating whether a contract is an external contract. It is set to true when a VM is created. Contracts called are not displayed when the code is compiled. In other words, it allows to call the contract code determined in the future;")]),e._v(" "),a("li",[e._v("ShiftContract - ID of the first contract in the VM;")]),e._v(" "),a("li",[e._v("logger - VM error log output.")])]),e._v(" "),a("h3",{attrs:{id:"block-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-structure"}},[e._v("#")]),e._v(" Block structure")]),e._v(" "),a("p",[e._v("A virtual machine is a tree composed of "),a("strong",[e._v("Block type")]),e._v(" objects.")]),e._v(" "),a("p",[e._v("A block is an independent unit that contains some bytecodes. In simple terms, everything you put in the braces ("),a("code",[e._v("{}")]),e._v(") in the language is a block.")]),e._v(" "),a("p",[e._v("For example, the following code would create a block with functions. This block also contains another block with an if statement, which contains a block with a while statement.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("func my() {\n if true {\n while false {\n ...\n }\n }\n}\n")])])]),a("p",[e._v("The block is organized in the memory as a structure like below.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type Block struct {\n Objects map[string]*ObjInfo\n Type int\n Owner *OwnerInfo\n Info interface{}\n Parent *Block\n Vars []reflect.Type\n Code ByteCodes\n Children Blocks\n}\n")])])]),a("p",[e._v("A block structure consists of the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Objects")]),e._v(" - a map of internal objects of the pointer type "),a("a",{attrs:{href:"#objInfo-structure"}},[e._v("ObjInfo")]),e._v(". For example, if there is a variable in the block, you can get information about it by its name;")]),e._v(" "),a("li",[a("strong",[e._v("Type")]),e._v(" - the type of the block. For a function block, its type is "),a("strong",[e._v("ObjFunc")]),e._v("; for a contract block, its type is "),a("strong",[e._v("ObjContract")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - a structure of "),a("strong",[e._v("OwnerInfo")]),e._v(" pointer type. This structure contains information about the owner of the compiled contract, which is specified during contract compilation or obtained from the "),a("strong",[e._v("contracts")]),e._v(" table;")]),e._v(" "),a("li",[a("strong",[e._v("Info")]),e._v(" - it contains information about the object, which depends on the block type;")]),e._v(" "),a("li",[a("strong",[e._v("Parent")]),e._v(" - a pointer to the parent block;")]),e._v(" "),a("li",[a("strong",[e._v("Vars")]),e._v(" - an array containing the types of current block variables;")]),e._v(" "),a("li",[a("strong",[e._v("Code")]),e._v(" - the bytecode of the block itself, which will be executed when the control rights are passed to the block, for example, function calls or loop bodies;")]),e._v(" "),a("li",[a("strong",[e._v("Children")]),e._v(" - an array containing sub-blocks, such as function nesting, loops, conditional operators.")])]),e._v(" "),a("h3",{attrs:{id:"objinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#objinfo-structure"}},[e._v("#")]),e._v(" ObjInfo structure")]),e._v(" "),a("p",[e._v("The ObjInfo structure contains information about internal objects.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ObjInfo struct {\n Type int\n Value interface{}\n}\n")])])]),a("p",[e._v("The ObjInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Type")]),e._v(" is the object type, which has any of the following values:\n"),a("ul",[a("li",[a("strong",[e._v("ObjContract")]),e._v(" – "),a("a",{attrs:{href:"#contractInfo-structure"}},[e._v("contract")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("ObjFunc")]),e._v(" - function;")]),e._v(" "),a("li",[a("strong",[e._v("ObjExtFunc")]),e._v(" - external golang function;")]),e._v(" "),a("li",[a("strong",[e._v("ObjVar")]),e._v(" - variable;")]),e._v(" "),a("li",[a("strong",[e._v("ObjExtend")]),e._v(" - $name variable.")])])]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" – it contains the structure of each type.")])]),e._v(" "),a("h4",{attrs:{id:"contractinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contractinfo-structure"}},[e._v("#")]),e._v(" ContractInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjContract")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a "),a("strong",[e._v("ContractInfo")]),e._v(" structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ContractInfo struct {\n ID uint32\n Name string\n Owner *OwnerInfo\n Used map[string]bool\n Tx *[]*FieldInfo\n}\n")])])]),a("p",[e._v("The ContractInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ID")]),e._v(" - contract ID, displayed in the blockchain when calling the contract;")]),e._v(" "),a("li",[a("strong",[e._v("Name")]),e._v(" - contract name;")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - other information about the contract;")]),e._v(" "),a("li",[a("strong",[e._v("Used")]),e._v(" - map of contracts names that has been called;")]),e._v(" "),a("li",[a("strong",[e._v("Tx")]),e._v(" - a data array described in the "),a("RouterLink",{attrs:{to:"/fr/topics/script.html#data-section"}},[e._v("data section")]),e._v(" of the contract.")],1)]),e._v(" "),a("h4",{attrs:{id:"fieldinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fieldinfo-structure"}},[e._v("#")]),e._v(" FieldInfo structure")]),e._v(" "),a("p",[e._v("The FieldInfo structure is used in the "),a("strong",[e._v("ContractInfo")]),e._v(" structure and describes elements in "),a("RouterLink",{attrs:{to:"/fr/topics/script.html#data-section"}},[e._v("data section")]),e._v(" of a contract.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FieldInfo struct {\n Name string\n Type reflect.Type\n Original uint32\n Tags string\n}\n")])])]),a("p",[e._v("The FieldInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Name")]),e._v(" - field name;")]),e._v(" "),a("li",[a("strong",[e._v("Type")]),e._v(" - field type;")]),e._v(" "),a("li",[a("strong",[e._v("Original")]),e._v(" - optional field;")]),e._v(" "),a("li",[a("strong",[e._v("Tags")]),e._v(" - additional labels for this field.")])]),e._v(" "),a("h4",{attrs:{id:"funcinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#funcinfo-structure"}},[e._v("#")]),e._v(" FuncInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the ObjFunc type, and the Value field contains a FuncInfo structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FuncInfo struct {\n Params []reflect.Type\n Results []reflect.Type\n Names *map[string]FuncName\n Variadic bool\n ID uint32\n}\n")])])]),a("p",[e._v("The FuncInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Params")]),e._v(" - an array of parameter types;")]),e._v(" "),a("li",[a("strong",[e._v("Results")]),e._v(" - an array of returned types;")]),e._v(" "),a("li",[a("strong",[e._v("Names")]),e._v(" - map of data for tail functions, for example, "),a("code",[e._v("DBFind().Columns ()")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Variadic")]),e._v(" - true if the function can have a variable number of parameters;")]),e._v(" "),a("li",[a("strong",[e._v("ID")]),e._v(" - function ID.")])]),e._v(" "),a("h4",{attrs:{id:"funcname-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#funcname-structure"}},[e._v("#")]),e._v(" FuncName Structure")]),e._v(" "),a("p",[e._v("The FuncName structure is used for FuncInfo and describes the data of a tail function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FuncName struct {\n Params []reflect.Type\n Offset []int\n Variadic bool\n}\n")])])]),a("p",[e._v("The FuncName structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Params")]),e._v(" - an array of parameter types;")]),e._v(" "),a("li",[a("strong",[e._v("Offset")]),e._v(" - the array of offsets for these variables. In fact, the values of all parameters in a function can be initialized with the dot .;")]),e._v(" "),a("li",[a("strong",[e._v("Variadic")]),e._v(" - true if the tail function can have a variable number of parameters.")])]),e._v(" "),a("h4",{attrs:{id:"extfuncinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#extfuncinfo-structure"}},[e._v("#")]),e._v(" ExtFuncInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the ObjExtFunc type, and the Value field contains a ExtFuncInfo structure. It is used to describe golang functions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ExtFuncInfo struct {\n Name string\n Params []reflect.Type\n Results []reflect.Type\n Auto []string\n Variadic bool\n Func interface{}\n}\n")])])]),a("p",[e._v("The ExtFuncInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Name")]),e._v(", "),a("strong",[e._v("Params")]),e._v(", "),a("strong",[e._v("Results")]),e._v(" parameters have the same structure as "),a("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Auto")]),e._v(" - an array of variables. If any, passes to the function as an additional parameter. For example, a variable of type SmartContract sc;")]),e._v(" "),a("li",[a("strong",[e._v("Func")]),e._v(" - golang functions.")])]),e._v(" "),a("h4",{attrs:{id:"varinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#varinfo-structure"}},[e._v("#")]),e._v(" VarInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjVar")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a "),a("strong",[e._v("VarInfo")]),e._v(" structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type VarInfo struct {\n Obj *ObjInfo\n Owner *Block\n}\n")])])]),a("p",[e._v("The VarInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Obj")]),e._v(" - information about the type and value of the variable;")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - Pointer to the owner block.")])]),e._v(" "),a("h4",{attrs:{id:"objextend-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#objextend-value"}},[e._v("#")]),e._v(" ObjExtend value")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjExtend")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a string containing the name of the variable or function.")]),e._v(" "),a("h2",{attrs:{id:"virtual-machine-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-machine-commands"}},[e._v("#")]),e._v(" Virtual machine commands")]),e._v(" "),a("h3",{attrs:{id:"bytecode-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bytecode-structure"}},[e._v("#")]),e._v(" ByteCode structure")]),e._v(" "),a("p",[e._v("A bytecode is a sequence of "),a("strong",[e._v("ByteCode")]),e._v(" type structures.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ByteCode struct {\n Cmd uint16\n Value interface{}\n}\n")])])]),a("p",[e._v("This structure has the following fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Cmd")]),e._v(" - the identifier of the storage commands;")]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" - contains the operand (value).")])]),e._v(" "),a("p",[e._v("In general, commands perform an operation on the top element of the stack and writes the result value into it if necessary.")]),e._v(" "),a("h3",{attrs:{id:"command-identifiers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#command-identifiers"}},[e._v("#")]),e._v(" Command identifiers")]),e._v(" "),a("p",[e._v("Identifiers of the virtual machine commands are described in the vm/cmds_list.go file.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("cmdPush")]),e._v(" – put a value from the Value field to the stack. For example, put numbers and lines to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdVar")]),e._v(" - put the value of a variable to the stack. Value contains a pointer to the VarInfo structure and information about the variable;")]),e._v(" "),a("li",[a("strong",[e._v("cmdExtend")]),e._v(" – put the value of an external variable to the stack. Value contains a string with the variable name (starting with $);")]),e._v(" "),a("li",[a("strong",[e._v("cmdCallExtend")]),e._v(" – call an external function (starting with $). The parameters of the function are obtained from the stack, and the results are placed to the stack. Value contains a function name (starting with $);")]),e._v(" "),a("li",[a("strong",[e._v("cmdPushStr")]),e._v(" – put the string in Value to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdCall")]),e._v(" - calls the virtual machine function. Value contains a "),a("strong",[e._v("ObjInfo")]),e._v(" structure. This command is applicable to the "),a("strong",[e._v("ObjExtFunc")]),e._v(" golang function and "),a("strong",[e._v("ObjFunc")]),e._v(" Needle function. If a function is called, its parameters will be obtained from the stack and the result values will be placed to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdCallVari")]),e._v(" - similar to the "),a("strong",[e._v("cmdCall")]),e._v(" command, it calls the virtual machine function. This command is used to call a function with a variable number of parameters;")]),e._v(" "),a("li",[a("strong",[e._v("cmdReturn")]),e._v(" - used to exit the function. The return values will be put to the stack, and the Value field is not used;")]),e._v(" "),a("li",[a("strong",[e._v("cmdIf")]),e._v(" – transfer control to the bytecode in the "),a("strong",[e._v("block")]),e._v(" structure, which is passed in the Value field. The control will be transferred to the stack only when the top element of the stack is called by the "),a("em",[e._v("valueToBool")]),e._v(" function and returned "),a("code",[e._v("true")]),e._v(". Otherwise, the control will be transferred to the next command;")]),e._v(" "),a("li",[a("strong",[e._v("cmdElse")]),e._v(" - this command works in the same way as the "),a("strong",[e._v("cmdIf")]),e._v(", but only when the top element of the stack is called by the valueToBool function and returned "),a("code",[e._v("false")]),e._v(", the control will be transferred to the specified block;")]),e._v(" "),a("li",[a("strong",[e._v("cmdAssignVar")]),e._v(" – get a list of variables of type "),a("strong",[e._v("VarInfo")]),e._v(" from Value. These variables use the "),a("strong",[e._v("cmdAssign")]),e._v(" command to get the value;")]),e._v(" "),a("li",[a("strong",[e._v("cmdAssign")]),e._v(" – assign the value in the stack to the variable obtained by the "),a("strong",[e._v("cmdAssignVar")]),e._v(" command;")]),e._v(" "),a("li",[a("strong",[e._v("cmdLabel")]),e._v(" - defines a label when control is returned during the while loop;")]),e._v(" "),a("li",[a("strong",[e._v("cmdContinue")]),e._v(" - this command transfers control to the "),a("strong",[e._v("cmdLabel")]),e._v(" label. When executing a new iteration of the loop, Value is not used;")]),e._v(" "),a("li",[a("strong",[e._v("cmdWhile")]),e._v(" – use valueToBool to check the top element of the stack. If this value is "),a("code",[e._v("true")]),e._v(", the "),a("strong",[e._v("block")]),e._v(" structure will be called from the value field;")]),e._v(" "),a("li",[a("strong",[e._v("cmdBreak")]),e._v(" - exits the loop;")]),e._v(" "),a("li",[a("strong",[e._v("cmdIndex")]),e._v(" – put the value in map or array into the stack by index, without using Value. For example, "),a("code",[e._v("(map | array) (index value) => (map | array [index value])")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSetIndex")]),e._v(" – assigns the value of the top element of the stack to elements of map or array, without using Value. For example, "),a("code",[e._v("(map | array) (index value) (value) => (map | array)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdFuncName")]),e._v(" - adds parameters that are passed using sequential descriptions divided by dot . For example, "),a("code",[e._v("func name => Func (...) .Name (...)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdUnwrapArr")]),e._v(" - defines a Boolean flag if the top element of the stack is an array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdMapInit")]),e._v(" – initializes the value of map;")]),e._v(" "),a("li",[a("strong",[e._v("cmdArrayInit")]),e._v(" – initializes the value of array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdError")]),e._v(" - this command is created when a contract or function terminates with a specified "),a("code",[e._v("error, warning, info")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"stack-operation-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stack-operation-commands"}},[e._v("#")]),e._v(" Stack operation commands")]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("In the current version, automatic type conversion is not fully applicable for these commands. For example,")])]),e._v(" "),a("blockquote",[a("p",[a("code",[e._v("string + float | int | decimal => float | int | decimal, float + int | str => float, but int + string => runtime error")]),e._v(".")])]),e._v(" "),a("p",[e._v("The following are commands for direct stack processing. The Value field is not used in these commands.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("cmdNot")]),e._v(" - logical negation. "),a("code",[e._v("(val) => (!ValueToBool(val))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSign")]),e._v(" - change of sign. "),a("code",[e._v("(val) => (-val)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAdd")]),e._v(" - addition. "),a("code",[e._v("(val1)(val2) => (val1 + val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSub")]),e._v(" - subtraction. "),a("code",[e._v("(val1)(val2) => (val1-val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdMul")]),e._v(" - multiplication. "),a("code",[e._v("(val1)(val2) => (val1 * val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdDiv")]),e._v(" - division. "),a("code",[e._v("(val1)(val2) => (val1 / val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAnd")]),e._v(" - logical AND. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) && valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdOr")]),e._v(" - logical OR. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) || valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdEqual")]),e._v(" - equality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 == val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotEq")]),e._v(" - inequality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 != val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdLess")]),e._v(" - less-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 (val1 >= val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdGreat")]),e._v(" - greater-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1> val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotGreat")]),e._v(" - less-than-or-equal comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 <= val2)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"runtime-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runtime-structure"}},[e._v("#")]),e._v(" Runtime structure")]),e._v(" "),a("p",[e._v("The execution of bytecodes will not affect the virtual machine. For example, it allows various functions and contracts to run simultaneously in a single virtual machine. The Runtime structure is used to run functions and contracts, as well as any expressions and bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type RunTime struct {\n stack []interface{}\n blocks []*blockStack\n vars []interface{}\n extend *map[string]interface{}\n vm *VM\n cost int64\n err error\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("stack")]),e._v(" - the stack to execute the bytecode;")]),e._v(" "),a("li",[a("strong",[e._v("blocks")]),e._v(" - block calls stack;")]),e._v(" "),a("li",[a("strong",[e._v("vars")]),e._v(" - stack of variables. Its variable will be added to the stack of variables when the bytecode is called in the block. After exiting the block, the size of the stack of variables will return to the previous value;")]),e._v(" "),a("li",[a("strong",[e._v("extend")]),e._v(" - a pointer to map with values of external variables ("),a("code",[e._v("$name")]),e._v(");")]),e._v(" "),a("li",[a("strong",[e._v("vm")]),e._v(" - a virtual machine pointer;")]),e._v(" "),a("li",[a("strong",[e._v("cost")]),e._v(" - fuel unit of the resulting cost of execution;")]),e._v(" "),a("li",[a("strong",[e._v("err")]),e._v(" - error occurred during execution.")])]),e._v(" "),a("h4",{attrs:{id:"blockstack-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockstack-structure"}},[e._v("#")]),e._v(" blockStack structure")]),e._v(" "),a("p",[e._v("The blockStack structure is used in the Runtime structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type blockStack struct {\n Block *Block\n Offset int\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Block")]),e._v(" - a pointer to the block being executed;")]),e._v(" "),a("li",[a("strong",[e._v("Offset")]),e._v(" – the offset of the last command executed in the bytecode of the specified block.")])]),e._v(" "),a("h3",{attrs:{id:"runcode-function"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runcode-function"}},[e._v("#")]),e._v(" RunCode function")]),e._v(" "),a("p",[e._v("Bytecodes are executed in the "),a("strong",[e._v("RunCode")]),e._v(" function. It contains a loop that performs the corresponding operation for each bytecode command. Before processing a bytecode, the data required must be initialized.")]),e._v(" "),a("p",[e._v("New blocks are added to other blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = append(rt.blocks, &blockStack{block, len(rt.vars)})\n")])])]),a("p",[e._v("Next, get the information of relevant parameters of the tail function. These parameters are contained in the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var namemap map[string][]interface{}\nif block.Type == ObjFunc && block.Info.(*FuncInfo).Names != nil {\n if rt.stack[len(rt.stack)-1] != nil {\n namemap = rt.stack[len(rt.stack)-1].(map[string][]interface{})\n }\n rt.stack = rt.stack[:len(rt.stack)-1]\n}\n")])])]),a("p",[e._v("Then, all variables defined in the current block must be initialized with their initial values.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("start := len(rt.stack)\nvaroff := len(rt.vars)\nfor vkey, vpar := range block.Vars {\n rt.cost--\n var value interface{}\n")])])]),a("p",[e._v("Since variables in the function are also variables, we need to retrieve them from the last element of the stack in the order described by the function itself.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if block.Type == ObjFunc && vkey = len(params.Params)-1 {\n")])])]),a("p",[e._v("If variable parameters passed belongs to a variable number of parameters, then these parameters will be combined into an array of variables.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" off := varoff + params.Offset[len(params.Params)-1]\n rt.vars[off] = append(rt.vars[off].([]interface{}), value)\n } else {\n rt.vars[varoff+params.Offset[i]] = value\n }\n }\n }\n}\n")])])]),a("p",[e._v("After that, all we have to do is delete values passed from the top of the stack as function parameters, thereby moving the stack. We have copied their values into a variable array.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if block.Type == ObjFunc {\n start -= len(block.Info.(*FuncInfo).Params)\n}\n")])])]),a("p",[e._v("When a bytecode command loop finished, we must clear the stack correctly.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("last := rt.blocks[len(rt.blocks)-1]\n")])])]),a("p",[e._v("Delete the current block from the stack of blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = rt.blocks[:len(rt.blocks)-1]\nif status == statusReturn {\n")])])]),a("p",[e._v("If successfully exited from a function already executed, we will add the return value to the end of the previous stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if last.Block.Type == ObjFunc {\n for count := len(last.Block.Info.(*FuncInfo).Results); count > 0; count-- {\n rt.stack[start] = rt.stack[len(rt.stack)-count]\n start++\n }\n status = statusNormal\n } else {\n")])])]),a("p",[e._v("As you can see, if we do not execute the function, then we will not restore the stack status and exit the function as is. The reason is that loops and conditional structures that have been executed in the function are also bytecode blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" return\n\n }\n}\n\nrt.stack = rt.stack[:start]\n")])])]),a("h3",{attrs:{id:"other-functions-for-operations-with-vm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("#")]),e._v(" Other functions for operations with VM")]),e._v(" "),a("p",[e._v("Your may create a virtual machine with the "),a("strong",[e._v("NewVM")]),e._v(" function. Each virtual machine will be added with four functions, such as "),a("strong",[e._v("ExecContract")]),e._v(", "),a("strong",[e._v("MemoryUsage")]),e._v(", "),a("strong",[e._v("CallContract")]),e._v(", and "),a("strong",[e._v("Settings")]),e._v(", through the "),a("strong",[e._v("Extend")]),e._v(" function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for key, item := range ext.Objects {\n fobj := reflect.ValueOf(item).Type()\n")])])]),a("p",[e._v("We traverse all the objects passed and only look at the functions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" switch fobj.Kind() {\n case reflect.Func:\n")])])]),a("p",[e._v("We fill the "),a("strong",[e._v("ExtFuncInfo")]),e._v(" structure according to the information received about the function, and add its structure to the top level map "),a("strong",[e._v("Objects")]),e._v(" by name.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" data := ExtFuncInfo{key, make([]reflect.Type, fobj.NumIn()), make([]reflect.Type, fobj.NumOut()),\n make([]string, fobj.NumIn()), fobj.IsVariadic(), item}\n for i := 0; i 0 && ((*lexems)[i-1].Type == isComma || (*lexems)[i-1].Type == lexOper) {\n continue main\n }\n for k := len(buffer) - 1; k >= 0; k-- {\n if buffer[k].Cmd == cmdSys {\n continue main\n }\n}\nbreak main\n\n")])])]),a("p",[e._v("In general, the algorithm itself corresponds to an algorithm for converting to inverse Polish notation. With the consideration of the calling of necessary contracts, functions, and indexes, as well as other things not encountered during parsing and options for parsing lexIdent type tokens, then, variables, functions or contracts with this name will be checked. If nothing is found and this is not a function or contract call, then it will indicate an error.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("objInfo, tobj := vm.findObj(lexem.Value.(string), block)\nif objInfo == nil && (!vm.Extern || i> *ind || i >= len(*lexems)-2 || (*lexems)[i+1].Type != isLPar) {\n return fmt.Errorf(`unknown identifier %s`, lexem.Value.(string))\n}\n")])])]),a("p",[e._v("We may encounter such a situation, and the contract call will be described later. In this example, if no functions or variables with the same name are found, then we think it is necessary to call a contract. In this compiled language, there is no difference between contracts and function calls. But we need to call the contract through the "),a("strong",[e._v("ExecContract")]),e._v(" function used in the bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if objInfo.Type == ObjContract {\n if objInfo.Value != nil {\n objContract = objInfo.Value.(*Block)\n }\n objInfo, tobj = vm.findObj(`ExecContract`, block)\n isContract = true\n}\n")])])]),a("p",[e._v("We record the number of variables so far in "),a("code",[e._v("count")]),e._v(", which will also be written to the stack along with the number of function parameters. In each subsequent detection of parameters, we only need to increase this number by one unit at the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("count := 0\nif (*lexems)[i+2].Type != isRPar {\n count++\n}\n")])])]),a("p",[e._v("We have a list Used of called parameters for contracts, then we need to mark the case of the contract is called. If the contract is called without parameters, we must add two empty parameters to call "),a("strong",[e._v("ExecContract")]),e._v(" to get at least two parameters.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('if isContract {\n name := StateName((*block)[0].Info.(uint32), lexem.Value.(string))\n for j := len(*block) - 1; j >= 0; j-- {\n topblock := (*block)[j]\n if topblock.Type == ObjContract {\n if topblock.Info.(*ContractInfo).Used == nil {\n topblock.Info.(*ContractInfo).Used = make(map[string]bool)\n }\n topblock.Info.(*ContractInfo).Used[name] = true\n }\n }\n bytecode = append(bytecode, &ByteCode{cmdPush, name})\n if count == 0 {\n count = 2\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n }\n count++\n}\n')])])]),a("p",[e._v("If we see that there is a square bracket next, then we add the "),a("strong",[e._v("cmdIndex")]),e._v(" command to get the value by the index.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if (*lexems)[i+1].Type == isLBrack {\n if objInfo == nil || objInfo.Type != ObjVar {\n return fmt.Errorf(`unknown variable %s`, lexem.Value.(string))\n }\n buffer = append(buffer, &ByteCode{cmdIndex, 0})\n}\n")])])]),a("p",[e._v("The "),a("strong",[e._v("CompileBlock")]),e._v(" function can generate object trees and expression-independent bytecodes. The compilation process is based on a finite state machine, just like a lexical analyzer, but with the following differences. First, we do not use symbols but tokens; second, we will immediately describe the "),a("em",[e._v("states")]),e._v(" variables in all states and transitions. It represents an array of objects indexed by token type. Each token has a structure of "),a("em",[e._v("compileState")]),e._v(", and a new state is specified in "),a("em",[e._v("NewState")]),e._v(". If it is clear what structure we have resolved, we can specify the function of the handler in the "),a("em",[e._v("Func")]),e._v(" field.")]),e._v(" "),a("p",[e._v("Let us review the main state as an example.")]),e._v(" "),a("p",[e._v("If we encounter a newline or comment, then we will remain in the same state. If we encounter the "),a("strong",[e._v("contract")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateContract")]),e._v(" and start parsing the structure. If we encounter the "),a("strong",[e._v("func")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateFunc")]),e._v(". If other tokens are received, the function generating error will be called.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateRoot\n lexNewLine: {stateRoot, 0},\n lexKeyword | (keyContract << 8): {stateContract | statePush, 0},\n lexKeyword | (keyFunc << 8): {stateFunc | statePush, 0},\n lexComment: {stateRoot, 0},\n 0: {errUnknownCmd, cfError},\n},\n")])])]),a("p",[e._v("Suppose we encountered the "),a("strong",[e._v("func")]),e._v(" keyword and we have changed the state to "),a("em",[e._v("stateFunc")]),e._v(". Since the function name must follow the "),a("strong",[e._v("func")]),e._v(" keyword, we will keep the same state when changing the function name. For all other tokens, we will generate corresponding errors. If we get the function name in the token identifier, then we go to the "),a("em",[e._v("stateFParams")]),e._v(" state, where we can get the parameters of the function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateFunc\n lexNewLine: {stateFunc, 0},\n lexIdent: {stateFParams, cfNameBlock},\n 0: {errMustName, cfError},\n},\n")])])]),a("p",[e._v("At the same time as the above operations, we will call the "),a("strong",[e._v("fNameBlock")]),e._v(" function. It should be noted that the Block structure is created with the statePush mark, where we get it from the buffer and fill it with the data we need. The "),a("strong",[e._v("fNameBlock")]),e._v(" function is suitable for contracts and functions (including those nested in them). It fills the "),a("em",[e._v("Info")]),e._v(" field with the corresponding structure and writes itself into the "),a("em",[e._v("Objects")]),e._v(" of the parent block. In this way, we can call the function or contract with the specified name. Similarly, we create corresponding functions for all states and variables. These functions are usually very small and perform some duties when constructing the virtual machine tree.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("func fNameBlock(buf *[]*Block, state int, lexem *Lexem) error {\n var itype int\n prev := (*buf)[len(*buf)-2]\n fblock := (*buf)[len(*buf)-1]\n name := lexem.Value.(string)\n switch state {\n case stateBlock:\n itype = ObjContract\n name = StateName((*buf)[0].Info.(uint32), name)\n fblock.Info = &ContractInfo{ID: uint32(len(prev.Children) - 1), Name: name,\n Owner: (*buf)[0].Owner}\n default:\n itype = ObjFunc\n fblock.Info = &FuncInfo{}\n }\n fblock.Type = itype\n prev.Objects[name] = &ObjInfo{Type: itype, Value: fblock}\n return nil\n}\n")])])]),a("p",[e._v("For the "),a("strong",[e._v("CompileBlock")]),e._v(" function, it just traverses all the tokens and switches states according to the tokens described in states. Almost all additional tokens correspond to additional program codes.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("statePush")]),e._v(" – adds the "),a("strong",[e._v("Block")]),e._v(" object to the object tree;")]),e._v(" "),a("li",[a("strong",[e._v("statePop")]),e._v(" - used when the block ends with a closing brace;")]),e._v(" "),a("li",[a("strong",[e._v("stateStay")]),e._v(" - you need to keep the current mark when changing to a new state;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBlock")]),e._v(" - transition to the "),a("strong",[e._v("stateBlock")]),e._v(" state for processing "),a("em",[e._v("while")]),e._v(" and "),a("em",[e._v("if")]),e._v(". After processing expressions, you need to process blocks within the braces;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBody")]),e._v(" - transition to the "),a("strong",[e._v("stateBody")]),e._v(" state;")]),e._v(" "),a("li",[a("strong",[e._v("stateFork")]),e._v(" - save the marked position. When the expression starts with an identifier or a name with "),a("code",[e._v("$")]),e._v(", we can make function calls or assignments;")]),e._v(" "),a("li",[a("strong",[e._v("stateToFork")]),e._v(" – used to get the token stored in "),a("strong",[e._v("stateFork")]),e._v(", which will be passed to the process function;")]),e._v(" "),a("li",[a("strong",[e._v("stateLabel")]),e._v(" – used to insert "),a("strong",[e._v("cmdLabel")]),e._v(" commands. "),a("em",[e._v("while")]),e._v(" structure requires this flag;")]),e._v(" "),a("li",[a("strong",[e._v("stateMustEval")]),e._v(" – check the availability of conditional expressions at the beginning of "),a("em",[e._v("if")]),e._v(" and "),a("em",[e._v("while")]),e._v(" structures.")])]),e._v(" "),a("p",[e._v("In addition to the "),a("strong",[e._v("CompileBlock")]),e._v(" function, the "),a("strong",[e._v("FlushBlock")]),e._v(" function should also be mentioned. But the problem is that the block tree is constructed independently of existing virtual machines. More precisely, we obtain information about functions and contracts that exist in a virtual machine, but we collect the compiled blocks into a separate tree. Otherwise, if an error occurs during compilation, we must roll back the virtual machine to the previous state. Therefore, we go to the compilation tree separately, but after the compilation is successful, the "),a("strong",[e._v("FlushContract")]),e._v(" function must be called. This function adds the completed block tree to the current virtual machine. The compilation phase is now complete.")]),e._v(" "),a("h2",{attrs:{id:"lexical-analyzer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexical-analyzer"}},[e._v("#")]),e._v(" Lexical analyzer")]),e._v(" "),a("p",[e._v("The lexical analyzer processes incoming strings and forms a sequence of tokens of the following types :")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - system token, for example: "),a("code",[e._v("{}, [], (), ,, .")]),e._v(" etc;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - operation token, for example: "),a("code",[e._v("+, -, /, \\, *")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - number;")]),e._v(" "),a("li",[a("strong",[e._v("lexident")]),e._v(" - identifier;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewline")]),e._v(" - newline character;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comment;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - keyword;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" - type;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" - reference to external variables or functions, for example: "),a("code",[e._v("$myname")]),e._v(".")])]),e._v(" "),a("p",[e._v("In the current version, a conversion table (finite state machine) is initially constructed with the help of the "),a("a",{attrs:{href:"#lextablelextablego"}},[e._v("script/lextable/lextable.go")]),e._v(" file to parse the tokens, which is written to the lex_table.go file. In general, you can get rid of the conversion table initially generated by the file and create a conversion table in the memory ("),a("code",[e._v("init()")]),e._v(") immediately upon startup. The lexical analysis itself occurs in the lexParser function in the "),a("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lextable-lextable-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lextable-lextable-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),a("p",[e._v("Here we define the alphabet to operate and describe how the finite state machine changes from one state to another based on the next received symbol.")]),e._v(" "),a("p",[a("em",[e._v("states")]),e._v(" is a JSON object containing a list of states.")]),e._v(" "),a("p",[e._v("Except for specific symbols, "),a("code",[e._v("d")]),e._v(" stands for all symbols not specified in the state.\n"),a("code",[e._v("n")]),e._v(" stands for 0x0a, "),a("code",[e._v("s")]),e._v(" stands for space, "),a("code",[e._v("q")]),e._v(" stands for backquote, "),a("code",[e._v("Q")]),e._v(" stands for double quote, "),a("code",[e._v("r")]),e._v(" stands for character >= 128, "),a("code",[e._v("a")]),e._v(" stands for AZ and az, and "),a("code",[e._v("1")]),e._v(" stands for 1- 9.")]),e._v(" "),a("p",[e._v("The name of these states are keys, and the possible values are listed in the value object. Then, there is a new state to make transitions for each group. Then there is the name of the token. If we need to return to the initial state, the third parameter is the service token, which indicates how to handle the current symbol.")]),e._v(" "),a("p",[e._v("For example, we have the main state and the incoming characters "),a("code",[e._v("/")]),e._v(", "),a("code",[e._v('"/": ["solidus", "", "push next"]')]),e._v(",")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("push")]),e._v(" - gives the command to remember that it is in a separate stack ;")]),e._v(" "),a("li",[a("strong",[e._v("next")]),e._v(" - goes to the next character, and at the same time we change the status to "),a("strong",[e._v("solidus")]),e._v(". After that, gets the next character and check the status of "),a("strong",[e._v("solidus")]),e._v(".")])]),e._v(" "),a("p",[e._v("If the next character has "),a("code",[e._v("/")]),e._v(" or "),a("code",[e._v("/*")]),e._v(", then we go to the comment "),a("strong",[e._v("comment")]),e._v(" state because they start with "),a("code",[e._v("//")]),e._v(" or "),a("code",[e._v("/*")]),e._v(". Obviously, each comment has a different state afterwards, because they end with a different symbol.")]),e._v(" "),a("p",[e._v("If the next character is not "),a("code",[e._v("/")]),e._v(" and "),a("code",[e._v("*")]),e._v(", then we record everything in the stack as "),a("strong",[e._v("lexOper")]),e._v(" type tags, clear the stack and return to the main state.")]),e._v(" "),a("p",[e._v("The following module converts the state tree into a numeric array and writes it into the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("p",[e._v("In the first loop:")]),e._v(" "),a("p",[e._v("We form an alphabet of valid symbols.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for ind, ch := range alphabet {\n i := byte(ind)\n")])])]),a("p",[e._v("In addition, in "),a("strong",[e._v("state2int")]),e._v(", we provide each state with its own sequence identifier.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" state2int := map[string]uint{`main`: 0}\n if err := json.Unmarshal([]byte(states), &data); err == nil {\n for key := range data {\n if key != `main` {\n state2int[key] = uint(len(state2int))\n")])])]),a("p",[e._v("When we traverse all states and each set in a state and each symbol in a set, we write a three-byte number [new state identifier (0 = main)] + [token type ( 0-no token)] + [token].\nThe bidimensionality of the "),a("em",[e._v("table")]),e._v(" array is that it is divided into states and 34 input symbols from the "),a("em",[e._v("alphabet")]),e._v(" array, which are arranged in the same order.\nWe are in the "),a("em",[e._v("main")]),e._v(" state on the zero row of the "),a("em",[e._v("table")]),e._v(". Take the first character, find its index in the "),a("em",[e._v("alphabet")]),e._v(" array, and get the value from the column with the given index. Starting from the value received, we receive the token in the low byte. If the parsing is complete, the second byte indicates the type of token received. In the third byte, we receive the index of the next new state.\nAll of these are described in more detail in the "),a("strong",[e._v("lexParser")]),e._v(" function in "),a("em",[e._v("lex.go")]),e._v(".\nIf you want to add some new characters, you need to add them to the "),a("em",[e._v("alphabet")]),e._v(" array and increase the quantity of the "),a("em",[e._v("AlphaSize")]),e._v(" constant. If you want to add a new symbol combination, it should be described in the status, similar to the existing options. After the above operation, run the "),a("em",[e._v("lextable.go")]),e._v(" file to update the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lex-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lex-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lex-go"}},[e._v("lex.go")])]),e._v(" "),a("p",[e._v("The "),a("strong",[e._v("lexParser")]),e._v(" function directly generates lexical analysis and returns an array of received tags based on incoming strings. Let us analyze the structure of tokens.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type Lexem struct {\n Type uint32 // Type of the lexem\n Value interface{} // Value of lexem\n Line uint32 // Line of the lexem\n Column uint32 // Position inside the line\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Type")]),e._v(" - token type. It has one of the following values: "),a("code",[e._v("lexSys, lexOper, lexNumber, lexIdent, lexString, lexComment, lexKeyword, lexType, lexExtend")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" – token value. The type of value depends on the token type, Let us analyze it in more detail:\n"),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - includes brackets, commas, etc. In this case, "),a("code",[e._v("Type = ch << 8 | lexSys")]),e._v(", please refer to the "),a("code",[e._v("isLPar ... isRBrack")]),e._v(" constant, and its value is uint32 bits;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - the value represents an equivalent character sequence in the form of uint32. See the "),a("code",[e._v("isNot ... isOr")]),e._v(" constants;")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - numbers are stored as int64 or float64. If the number has a decimal point, it is float64;")]),e._v(" "),a("li",[a("strong",[e._v("lexIdent")]),e._v(" - identifiers are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewLine")]),e._v(" - newline character. Also used to calculate the row and token position;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - lines are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comments are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - for keywords, only the corresponding indexes are stored, see the "),a("code",[e._v("keyContract ... keyTail")]),e._v(" constant. In this case "),a("code",[e._v("Type = KeyID << 8 | lexKeyword")]),e._v(". In addition, it should be noted that the "),a("code",[e._v("true, false, nil")]),e._v(" keywords will be immediately converted to lexNumber type tokens, and the corresponding "),a("code",[e._v("bool")]),e._v(" and "),a("code",[e._v("intreface {}")]),e._v(" types will be used;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" – this value contains the corresponding "),a("code",[e._v("reflect.Type")]),e._v(" type value;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" – identifiers beginning with a "),a("code",[e._v("$")]),e._v(". These variables and functions are passed from the outside and are therefore assigned to special types of tokens. This value contains the name as a string without a $ at the beginning.")])])]),e._v(" "),a("li",[a("strong",[e._v("Line")]),e._v(" - the line where the token is found;")]),e._v(" "),a("li",[a("strong",[e._v("Column")]),e._v(" - in-line position of the token.")])]),e._v(" "),a("p",[e._v("Let us analyze the "),a("strong",[e._v("lexParser")]),e._v(" function in detail. The "),a("strong",[e._v("todo")]),e._v(" function looks up the symbol index in the alphabet based on the current state and the incoming symbol, and obtains a new state, token identifier (if any), and other tokens from the conversion table. The parsing itself involves calling the "),a("strong",[e._v("todo")]),e._v(" function in turn for each next character and switching to a new state. Once the tag is received, we create the corresponding token in the output criteria and continue the parsing process. It should be noted that during the parsing process, we do not accumulate the token symbols into a separate stack or array, because we only save the offset of the start of the token. After getting the token, we move the offset of the next token to the current parsing position.")]),e._v(" "),a("p",[e._v("All that remains is to check the lexical status tokens used in the parsing:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexfPush")]),e._v(" - this token means that we start to accumulate symbols in a new token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfNext")]),e._v(" - the character must be added to the current token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfPop")]),e._v(" - the receipt of the token is complete. Usually, with this flag we have the identifier type of the parsed token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfSkip")]),e._v(' - this token is used to exclude characters from parsing. For example, the control slashes in the string are \\n \\r ". They will be automatically replaced during the lexical analysis stage.')])]),e._v(" "),a("h2",{attrs:{id:"needle-language"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle-language"}},[e._v("#")]),e._v(" Needle language")]),e._v(" "),a("h3",{attrs:{id:"lexemes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexemes"}},[e._v("#")]),e._v(" Lexemes")]),e._v(" "),a("p",[e._v("The source code of a program must be in UTF-8 encoding.")]),e._v(" "),a("p",[e._v("The following lexical types are processed:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Keywords")]),e._v(" - "),a("code",[e._v("action, break, conditions, continue, contract, data, else, error, false, func, If, info, nil, return, settings, true, var, warning, while")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Number")]),e._v(" - only decimal numbers are accepted. There are two basic types: "),a("strong",[e._v("int")]),e._v(" and "),a("strong",[e._v("float")]),e._v(". If the number has a decimal point, it becomes a float "),a("strong",[e._v("float")]),e._v(". "),a("strong",[e._v("int")]),e._v(" type is equivalent to "),a("strong",[e._v("int64")]),e._v(" in golang, while "),a("strong",[e._v("float")]),e._v(" type is equivalent to "),a("strong",[e._v("float64")]),e._v(" in golang.")]),e._v(" "),a("li",[a("strong",[e._v("String")]),e._v(" - the string can be enclosed in double quotes "),a("code",[e._v('("a string")')]),e._v(" or backquotes "),a("code",[e._v("(\\`a string\\`)")]),e._v(". Both types of strings can contain newline characters. Strings in double quotes can contain double quotes, newline characters, and carriage returns escaped with slashes. For example, "),a("code",[e._v('"This is a \\"first string\\".\\r\\nThis is a second string."')]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Comment")]),e._v(" - there are two types of comments. Single-line comments use two slashes (//). For example, // This is a single-line comment. Multi-line comments use slash and asterisk symbols and can span multiple lines. For example, "),a("code",[e._v("/* This is a multi-line comment */")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Identifier")]),e._v(" - the names of variables and functions composed of a-z and A-Z letters, UTF-8 symbols, numbers and underscores. The name can start with a letter, underscore, "),a("code",[e._v("@")]),e._v(" or "),a("code",[e._v("$")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" is the name of the variable defined in the "),a("strong",[e._v("data section")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" can also be used to define global variables in the scope of "),a("strong",[e._v("conditions")]),e._v(" and "),a("strong",[e._v("action sections")]),e._v(". Ecosystem contracts can be called using the "),a("code",[e._v("@")]),e._v(" symbol. For example: "),a("code",[e._v("@1NewTable(...)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#types"}},[e._v("#")]),e._v(" Types")]),e._v(" "),a("p",[e._v("Corresponding golang types are specified next to theNeedle types.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("bool")]),e._v(" - bool, "),a("strong",[e._v("false")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("bytes")]),e._v(" - []byte{}, an empty byte array by default;")]),e._v(" "),a("li",[a("strong",[e._v("int")]),e._v(" - int64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - uint64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("array")]),e._v(" - []interface{}, an empty array by default;")]),e._v(" "),a("li",[a("strong",[e._v("map")]),e._v(" - map[string]interface{}, an empty object array by default;")]),e._v(" "),a("li",[a("strong",[e._v("money")]),e._v(" - decimal. Decimal, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("float")]),e._v(" - float64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("string")]),e._v(" - string, an empty string by default;")]),e._v(" "),a("li",[a("strong",[e._v("file")]),e._v(" - map[string]interface{}, an empty object array by default.")])]),e._v(" "),a("p",[e._v("These types of variables are defined with the "),a("code",[e._v("var")]),e._v(" keyword. For example, "),a("code",[e._v("var var1, var2 int")]),e._v(". When defined in this way, a variable will be assigned with a default value by type.")]),e._v(" "),a("p",[e._v("All variable values are of the interface{} type, and then they are assigned to the required golang types. Therefore, for example, array and map types are golang types []interface{} and map[string]interface{}. Both types of arrays can contain elements of any type.")]),e._v(" "),a("h3",{attrs:{id:"expressions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expressions"}},[e._v("#")]),e._v(" Expressions")]),e._v(" "),a("p",[e._v("An expression may include arithmetic operations, logical operations, and function calls. All expressions are evaluated from left to right by priority of operators. If having an equal priority, operators are evaluated from left to right.")]),e._v(" "),a("p",[e._v("Priority of operations from high to low:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Function call and parentheses")]),e._v(" - when a function is called, passed parameters will be calculated from left to right;")]),e._v(" "),a("li",[a("strong",[e._v("Unary Operation")]),e._v(" - logical negation "),a("code",[e._v("!")]),e._v(" and arithmetic sign change "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Multiplication and Division")]),e._v(" - arithmetic multiplication "),a("code",[e._v("*")]),e._v(" and division "),a("code",[e._v("/")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Addition and Subtraction")]),e._v(" - arithmetic addition "),a("code",[e._v("+")]),e._v(" and subtraction "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical comparison")]),e._v(" - "),a("code",[e._v(">=>> >=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical equality and inequality")]),e._v(" - "),a("code",[e._v("== !=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical AND")]),e._v(" - "),a("code",[e._v("&&")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical OR")]),e._v(" - "),a("code",[e._v("||")]),e._v(".")])]),e._v(" "),a("p",[e._v("When evaluating logical AND and OR, both sides of the expression are evaluated in any case.")]),e._v(" "),a("p",[e._v("Needle has no type checking during compilation. When evaluating operands, an attempt is made to convert the type to a more complex type. The type of complexity order can be as follows: "),a("code",[e._v("string, int, float, money")]),e._v(". Only part of the type conversions is implemented. The string type supports addition operations, and the result will be string concatenation. For example, "),a("code",[e._v("string + string = string, money-int = money, int * float = float")]),e._v(".")]),e._v(" "),a("p",[e._v("For functions, type checking is performed on the "),a("code",[e._v("string")]),e._v(" and "),a("code",[e._v("int")]),e._v(" types during execution.")]),e._v(" "),a("p",[a("strong",[e._v("array")]),e._v(" and "),a("strong",[e._v("map")]),e._v(" types can be addressed by index. For the "),a("strong",[e._v("array")]),e._v(" type, the "),a("strong",[e._v("int")]),e._v(" value must be specified as the index. For the "),a("strong",[e._v("map")]),e._v(" type, a variable or "),a("strong",[e._v("string")]),e._v(" value must be specified. If you assign a value to an "),a("strong",[e._v("array")]),e._v(" element whose index is greater than the current maximum index, an empty element will be added to the array. The initial value of these elements is "),a("strong",[e._v("nil")]),e._v(". For example: .. code:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('var my array\nmy[5] = 0\nvar mymap map\nmymap["index"] = my[3]\n')])])]),a("p",[e._v("In expressions of conditional logical values (such as "),a("code",[e._v("if, while, &&, ||, !")]),e._v("), the type is automatically converted to a logical value. If the type is not the default value, it is true.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var mymap map\nvar val string\nif mymap && val {\n...\n}\n")])])]),a("h3",{attrs:{id:"scope"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#scope"}},[e._v("#")]),e._v(" Scope")]),e._v(" "),a("p",[e._v("Braces specify a block that can contain local scope variables. By default, the scope of a variable extends to its own blocks and all nested blocks. In a block, you can define a new variable using the name of an existing variable. However, in this case, external variables with the same name become unavailable.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var a int\na = 3\n{\n var a int\n a = 4\n Println(a) // 4\n}\nPrintln(a) // 3\n")])])]),a("h3",{attrs:{id:"contract-execution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-execution"}},[e._v("#")]),e._v(" Contract execution")]),e._v(" "),a("p",[e._v("When calling a contract, parameters defined in "),a("strong",[e._v("data")]),e._v(" must be passed to it. Before executing a contract, the virtual machine receives these parameters and assigns them to the corresponding variables ($Param). Then, the predefined "),a("strong",[e._v("conditions")]),e._v(" function and "),a("strong",[e._v("action")]),e._v(" function are called.")]),e._v(" "),a("p",[e._v("Errors that occur during contract execution can be divided into two types: form errors and environment errors. Form errors are generated using special commands: "),a("code",[e._v("error, warning, info")]),e._v(" and when the built-in function returns "),a("code",[e._v("err")]),e._v(" not equal to "),a("em",[e._v("nil")]),e._v(".")]),e._v(" "),a("p",[e._v("The Needle language does not handle exceptions. Any error will terminate the execution of contracts. Since a separate stack and structure for saving variable values are created when a contract is executed, the golang garbage collection mechanism will automatically delete these data when a contract is executed.")]),e._v(" "),a("h3",{attrs:{id:"backus-naur-form-bnf"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backus-naur-form-bnf"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"backus-naur-form-bnf"}},[e._v("Backus–Naur Form (BNF)")])]),e._v(" "),a("p",[e._v("In computer science, BNF is a notation technique for context-free syntax and is usually used to describe the syntax of the language used in computing.")]),e._v(" "),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("''''''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] ]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("' | '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'A' |'B' | ... |'Z' |'a' |'b' | ... |'z' | 0x80 | 0x81 | ... | 0xFF\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x20'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x09'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x0D 0x0A'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'!' |'\"' |'$' |''' |'(' |')' |'\\*' |'+' |',' |'-' |'.' |'/ '|'<' |'=' |'>' |'[' |'\\\\' |']' |'_' |'|' |'}' | '{' | | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( |'_') { |'_' | }\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | |'!' |'#' | ... |'[' |']' | ...\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{ |'\\\"' |'\\n' |'\\r'}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'\"' {}'\"' |'\\`' {}'\\`'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'='\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'==' |'!=' |'>' |'<' |'<=' |'>=' |'&&' |'||' |'\\*' |'/' |'+ '|'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {','}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'(' []')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" [{'.' '(' []')'}]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'{''}'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( | | | | | break | continue | return)\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'if [else ]'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'while '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'contract '{'[] {} [] []'}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'data '{' {} '}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" '\"'{}'\"'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'optional | image | file | hidden | text | polymap | map | address | signature:'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'conditions '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'action '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'func '('[{','}]')'[{}] [] '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {',' } \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'.''('[{','}]')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'var {','}'\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/66.b3f22aae.js b/assets/js/66.de8e5b74.js similarity index 99% rename from assets/js/66.b3f22aae.js rename to assets/js/66.de8e5b74.js index d81dbd1..015f9f1 100644 --- a/assets/js/66.b3f22aae.js +++ b/assets/js/66.de8e5b74.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{448:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/fr/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/fr/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/fr/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/fr/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/fr/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/fr/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/fr/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/fr/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{446:function(t,a,e){"use strict";e.r(a);var s=e(51),n=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ibax-development-tutorial"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-development-tutorial"}},[t._v("#")]),t._v(" IBAX Development Tutorial")]),t._v(" "),e("h2",{attrs:{id:"getting-started-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started-guide"}},[t._v("#")]),t._v(" Getting Started Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("Deploy first smart contract via command line tool")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#command-line-tool-eco-development"}},[t._v("Command Line Tool Eco Development")])])]),t._v(" "),e("h2",{attrs:{id:"deployment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[t._v("#")]),t._v(" Deployment")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("Deploy application using command line tools")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("Ecological configuration using command line tool")])])]),t._v(" "),e("h2",{attrs:{id:"advanced-guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#advanced-guide"}},[t._v("#")]),t._v(" Advanced Guide")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("Deploy applications using application packaging tool")])])]),t._v(" "),e("h2",{attrs:{id:"deploy-first-smart-contract-via-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-first-smart-contract-via-command-line-tool"}},[t._v("#")]),t._v(" Deploy first smart contract via command line tool")]),t._v(" "),e("p",[t._v("We will deploy "),e("RouterLink",{attrs:{to:"/fr/concepts/thesaurus.html#smart-contract"}},[t._v("smart contracts")]),t._v(" on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", and learn how to invoke smart contracts.\nAs our first smart contract, we deployed it to "),e("RouterLink",{attrs:{to:"/fr/concepts/blockchain-layers.html"}},[t._v("local test network")]),t._v(" How to deploy a local network you can refer to "),e("RouterLink",{attrs:{to:"/fr/howtos/deployment.html"}},[t._v("Network Deployment")]),t._v(" ,\nso you can deploy and run it as you like without any overhead.")],1),t._v(" "),e("h3",{attrs:{id:"create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-application"}},[t._v("#")]),t._v(" Create application")]),t._v(" "),e("p",[t._v("Call the contract @1NewApplication to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("permission parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 $ ibax-cli console\n2 \n3 Welcome to the IBAX console!\n4 To exit, press ctrl-d or type exit\n5 >callContract @1NewApplication {"Name": "testapp", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n6 \n7 {\n8 "block_id": 1217,\n9 "hash": "6327161d2202c33c06d34ab4ed9b509c05fc2cbb15cf260c6d3d404a6f640028",\n10 "penalty": 0,\n11 "err": "31"\n12 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, start command line terminal")]),t._v(" "),e("li",[t._v("Line 5, call the contract @1NewApplication to create an application with the application name "),e("code",[t._v("testapp")]),t._v(" and the application modification permission "),e("code",[t._v("@1DeveloperCondition")]),t._v(" with developer permission")]),t._v(" "),e("li",[t._v("Row 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("On line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the application")])]),t._v(" "),e("p",[t._v("Of course if you want to see what fields and field types are available in this contract, you can call the "),e("code",[t._v("getContractInfo")]),t._v(" method, which will return the contract information as follows:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getContractInfo @1NewApplication\n\n{\n "id": 5022,\n "state": 1,\n "tableid": "22",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Name",\n "type": "string",\n "optional": false\n },\n {\n "name": "Conditions",\n "type": "string",\n "optional": false\n },\n {\n "name": "VotingId",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1NewApplication",\n "app_id": 1,\n "ecosystem": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n}\n')])])]),e("p",[t._v("The "),e("code",[t._v("fields")]),t._v(" field is the parameters of the contract, including the name of the parameter "),e("code",[t._v("name")]),t._v(", "),e("code",[t._v("type")]),t._v(", "),e("code",[t._v("optional")]),t._v(",\n"),e("code",[t._v("Name")]),t._v(" and "),e("code",[t._v("Conditions")]),t._v(" are required, "),e("code",[t._v("VotingId")]),t._v(" is optional, refer to "),e("RouterLink",{attrs:{to:"/fr/reference/api2.html#contract-name"}},[t._v("contract/name")]),t._v(" API method")],1),t._v(" "),e("h3",{attrs:{id:"writing-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#writing-contracts"}},[t._v("#")]),t._v(" Writing contracts")]),t._v(" "),e("p",[t._v("We use "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#needle-contract-language"}},[t._v("Needle")]),t._v(" to write a smart contract that\nWe implement a simple addition operation, the source code of the contract is as follows, we save the contract as "),e("code",[t._v("SumMath.sim")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("1 contract SumMath {\n2 data {\n3 A int\n4 B int\n5 }\n6 conditions {\n7 \n8 }\n9 action {\n10 var sum int\n11 sum = $A + $B\n12 $result = sum\n13 }\n14 }\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("In line 1, we define a contract with the name SumMath")]),t._v(" "),e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#data-section"}},[t._v("Data Section")])],1),t._v(" "),e("li",[t._v("In lines 3-4, we define two input 64-bit integer-type parameters "),e("code",[t._v("A B")])]),t._v(" "),e("li",[t._v("Line 6, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#conditions-section"}},[t._v("Conditional Section")])],1),t._v(" "),e("li",[t._v("Line 9, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#action-section"}},[t._v("Operations Section")]),t._v(" We define a variable sum to receive the result of A+B.\nAssign the value of sum to $result, as the result of the contract. Of course it is possible to assign the value of A+B to $result directly, but it can be shown as an example.")],1)]),t._v(" "),e("h3",{attrs:{id:"create-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-contract"}},[t._v("#")]),t._v(" Create Contract")]),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nIn the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract SumMath {\\n data {\\n A int\\n B int\\n }\\n conditions {\\n\\n }\\n action {\\n var sum int\\n sum = $A + $B\\n $result = sum\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, "),e("code",[t._v("Value")]),t._v(" is the contract source code, need to escape special characters, "),e("code",[t._v("Conditions")]),t._v(" is the contract modification rights")]),t._v(" "),e("p",[t._v("We named it SumMathParams.json")]),t._v(" "),e("p",[t._v("The second step calls to create a contract @1NewContract")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewContract -f=./data/SumMathParams.json\n2 {\n3 "block_id": 1238,\n4 "hash": "f3fe7aff8a613c96299723b7e9af0682aa8cabe7becf67a485e2a77a974f58b6",\n5 "penalty": 0,\n6 "err": "328"\n7 }\n')])])]),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("31")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SumMath.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2055")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"cdf25060669cf7cba137278...26ca463fd5d458f3402a5f0137f693db"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"368"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: Call the contract @1NewContract to create the contract, -f uses the file to import the contract parameters")]),t._v(" "),e("li",[t._v("Row 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the contract")])]),t._v(" "),e("p",[t._v("Let's try calling the contract we just deployed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @5SumMath "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"A"')]),t._v(":1, "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"B"')]),t._v(":2"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1239")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"7fa09da0b9f65634119a910f9d91aaf4927208278efd62961499ef7e4f4c8c9c"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"3"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The call is completed and the result is as expected, as explained below by line:")]),t._v(" "),e("ul",[e("li",[t._v("The first line calls the contract, here we deploy the contract to the ecology with ecological id 5, of course, if the current ecological id is 5, in the same ecology, you can also call "),e("code",[t._v('callContract SumMath {"A":1, "B":2}')]),t._v(" in this way")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the result of the contract, which is the value of "),e("code",[t._v("$result")])])]),t._v(" "),e("h2",{attrs:{id:"command-line-tool-eco-development"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#command-line-tool-eco-development"}},[t._v("#")]),t._v(" Command Line Tool Eco Development")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[t._v("1."),e("a",{attrs:{href:"#step-1-create-ecosystem"}},[t._v("Create Ecosystem")])]),t._v(" "),e("li",[t._v("2."),e("a",{attrs:{href:"#step-2-create-application"}},[t._v("Create Application")])]),t._v(" "),e("li",[t._v("3."),e("a",{attrs:{href:"#step-3-create-table"}},[t._v("Create Table")])]),t._v(" "),e("li",[t._v("4."),e("a",{attrs:{href:"#step-4-create-application-parameters"}},[t._v("Create Application Parameters")])]),t._v(" "),e("li",[t._v("5."),e("a",{attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("Create & Deploy Contract")])]),t._v(" "),e("li",[t._v("6."),e("a",{attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("Create Ecological Parameters")])]),t._v(" "),e("li",[t._v("7."),e("a",{attrs:{href:"#step-7-add-localization"}},[t._v("Add Localization")])]),t._v(" "),e("li",[t._v("8."),e("a",{attrs:{href:"#step-8-modify-the-contract"}},[t._v("Modify Contract")])]),t._v(" "),e("li",[t._v("9."),e("a",{attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("Modify data table permissions")])])]),t._v(" "),e("p",[t._v("In order to understand more clearly how the IBAX ecology and applications are like and what they do, it is preferred that we understand where the ecology and applications should belong, and we can understand better with a simple mind map:\n"),e("img",{attrs:{src:"/ibax-eco.png",alt:"image"}})]),t._v(" "),e("p",[t._v("It can be seen that IBAX networks can have many "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#ecolib"}},[t._v("Ecosystems")]),t._v(".\nEach ecology can have multiple "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#applications"}},[t._v("applications")]),t._v(".\nEach application has "),e("RouterLink",{attrs:{to:"/fr/concepts/thesaurus.html#smart-contract"}},[t._v("contract")]),t._v(".\n"),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#tables"}},[t._v("Tables")]),t._v(".\nEcology has ecological parameters, application has application parameters")],1),t._v(" "),e("h3",{attrs:{id:"step-1-create-ecosystem"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1-create-ecosystem"}},[t._v("#")]),t._v(" Step 1 Create Ecosystem")]),t._v(" "),e("p",[t._v("We start by creating an ecology using the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(", calling the contract @1NewEcosystem.\nIf you want to change the ecological name, you can call the "),e("code",[t._v("@1EditEcosystemName")]),t._v(" contract.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" $ ibax-cli console\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" Welcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" To exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"goodBoy school"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(" \n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("7")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("8")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1199")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"a1dc90c1772545c16394b9521...227676b27b145743556a8973dd"')]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("11")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("12")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, which starts the command line console program")]),t._v(" "),e("li",[t._v("Line 5, call the contract "),e("code",[t._v("@1NewEcosystem")]),t._v(" to create an ecosystem with the name test ecosystem")]),t._v(" "),e("li",[t._v("Line 8, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 9, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 10, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 11, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field is the id of the ecology as "),e("code",[t._v("18")])])]),t._v(" "),e("p",[t._v("Then we configure the command tool "),e("code",[t._v("config.yml")]),t._v(", set "),e("code",[t._v("ecosystem")]),t._v(" to the created ecid "),e("code",[t._v("18")]),t._v(" and restart the command line console program")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("exit\nINFO"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("0002"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Exit\n\n$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("vim")]),t._v(" data/config.yml\n\n$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-2-create-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2-create-application"}},[t._v("#")]),t._v(" Step 2 Create Application")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewApplication")]),t._v(" to create the application, which has an application name parameter and a modify "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Parameter")])],1),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @1NewApplication {"Name": "GradesRecorder", "Conditions": "ContractConditions(\\"@1DeveloperCondition\\")"}\n2 \n3 {\n4 "block_id": 1246,\n5 "hash": "85ab8953d26d0d1047fc610866115331babfaf88c80792d50b41826185c9f6f8",\n6 "penalty": 0,\n7 "err": "47"\n8 }\n')])])]),e("p",[t._v("If you need to modify the application permissions, you can call the "),e("code",[t._v("EditApplication")]),t._v(" contract")]),t._v(" "),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1, call the contract @1NewApplication to create an application, the application name is "),e("code",[t._v("GradesRecorder")]),t._v(", the application modification permission is developer permission "),e("code",[t._v("@1DeveloperCondition")])]),t._v(" "),e("li",[t._v("Line 4, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 7, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the application is "),e("code",[t._v("47")])])]),t._v(" "),e("p",[t._v("Let's write a simple example of an application that keeps track of students' grades.\nThe data table fields include student information, grade "),e("code",[t._v("grade")]),t._v(", class\n"),e("code",[t._v("class")]),t._v(", subject grades "),e("code",[t._v("mathematics,physics,literature")]),t._v(", and Composite score "),e("code",[t._v("overall_score")]),t._v(", rating "),e("code",[t._v("score")]),t._v(", creation timestamp (ms) "),e("code",[t._v("created_at")])]),t._v(" "),e("h3",{attrs:{id:"step-3-create-table"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3-create-table"}},[t._v("#")]),t._v(" Step 3 Create Table")]),t._v(" "),e("p",[t._v("In the first step we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ColumnsArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"class"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mathematics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"physics"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"literature"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"overall_score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"score"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"created_at"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"TypesArr"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"InsertPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"NewColumnPerm"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"MainCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id,"),e("code",[t._v("Name")]),t._v(" is the name of the created data table "),e("code",[t._v("test_teble")]),t._v(".\n"),e("code",[t._v("ColumnsArr")]),t._v(" is an array of data table fields, "),e("code",[t._v("TypesArr")]),t._v(" is the type of data table fields, including 9 "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#tables"}},[t._v("types")]),t._v(" "),e("code",[t._v("varchar")]),t._v(","),e("code",[t._v("character")]),t._v(","),e("code",[t._v("json")]),t._v(","),e("code",[t._v("number")]),t._v(","),e("code",[t._v("datetime")]),t._v(","),e("code",[t._v("double")]),t._v(","),e("code",[t._v("money")]),t._v(","),e("code",[t._v("text")]),t._v(","),e("code",[t._v("bytea")]),t._v(", the field name and the field type are one-to-one correspondence.\n"),e("code",[t._v("InsertPerm")]),t._v(" for data table new entry permission, "),e("code",[t._v("UpdatePerm")]),t._v(" for data table update entry permission, "),e("code",[t._v("ReadPerm")]),t._v(" for data table data read permission, "),e("code",[t._v("NewColumnPerm")]),t._v(" for new data table field permission\nReferring to "),e("RouterLink",{attrs:{to:"/fr/concepts/about-the-platform.html#access-rights-control-mechanism"}},[t._v("Permission Control")]),t._v(" , here"),e("code",[t._v('ContractConditions(\\"MainCondition\\")')]),t._v(" is available for the current ecosystem creator.")],1),t._v(" "),e("p",[t._v("We name it createTable.json, and then call the contract to create the data table "),e("code",[t._v("@1NewTableJoint")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(">callContract @1NewTableJoint -f ./createTestTable.json\n")])])]),e("h3",{attrs:{id:"modify-data-table-field-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-data-table-field-permissions"}},[t._v("#")]),t._v(" Modify data table field permissions")]),t._v(" "),e("p",[t._v("We can modify the data table field permissions, data table field permissions include read permissions and update permissions, where read permissions,\nin the contract using "),e("code",[t._v("DBFind.Columns")]),t._v(" filter fields or interfaces such as "),e("RouterLink",{attrs:{to:"/fr/reference/api2.html#list-name-limit-offset-columns"}},[t._v("list")]),t._v(" query,\nif there is no permission, it will report a permission error.\nThe update permission is the permission to update the data table fields.\nWe set the "),e("code",[t._v("student")]),t._v(" field read and update permissions to "),e("code",[t._v("false")]),t._v(", but of course it can be set to be operable by some contract.\nCall the "),e("code",[t._v("@1EditColumn")]),t._v(" contract to modify the data table field permissions")],1),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditColumn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TableName"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"grade_info"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"UpdatePerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ReadPerm"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can create several application parameters"),e("code",[t._v("grade_best_type")]),t._v(","),e("code",[t._v("grade_type_a+")]),t._v(","),e("code",[t._v("grade_type_a")]),t._v(","),e("code",[t._v("grade_type_b+")]),t._v(","),e("code",[t._v("grade_type_b")]),t._v(","),e("code",[t._v("grade_type_c")]),t._v(", grade rating type")]),t._v(" "),e("h3",{attrs:{id:"step-4-create-application-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4-create-application-parameters"}},[t._v("#")]),t._v(" Step 4 Create Application Parameters")]),t._v(" "),e("p",[t._v("Call the contract "),e("code",[t._v("@1NewAppParam")]),t._v(" to create the application parameters, if you want to modify the application parameters you can call the contract "),e("code",[t._v("@1EditAppParam")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_best_type", "Value": "A+", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a+", "Value": "{\\"max\\": 101,\\"min\\": 90}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_a", "Value": "{\\"max\\": 90,\\"min\\": 80}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b+", "Value": "{\\"max\\": 80,\\"min\\": 70}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_b", "Value": "{\\"max\\": 70,\\"min\\": 60}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n>callContract @1NewAppParam {"ApplicationId": 47, "Name": "grade_type_c", "Value": "{\\"max\\": 60,\\"min\\": 0}", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("where "),e("code",[t._v("grade_best_type")]),t._v(" is the best rating type.\n"),e("code",[t._v("grade_type_a+")]),t._v(" is the condition triggered by the rating "),e("code",[t._v("A+")]),t._v(", when the score is greater than or equal to 90 and less than 101, the rating is"),e("code",[t._v("A+")]),t._v(", other parameters are similar")]),t._v(" "),e("h3",{attrs:{id:"step-5-create-contract-deploy-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5-create-contract-deploy-contract"}},[t._v("#")]),t._v(" Step 5 Create Contract Deploy Contract")]),t._v(" "),e("p",[t._v("We create a contract to record the student's grade information and final rating for each subject, and enter the student's grade class and grade for each subject when entering the information.\nBased on the input scores of each subject, the average calculation is done to get the overall score "),e("code",[t._v("overallScore")]),t._v(" and the final rating"),e("code",[t._v("score")]),t._v(".\nWhen the contract is called, it will create a record to the data table we just created "),e("code",[t._v("grade_info")])]),t._v(" "),e("p",[t._v("First we write a contract and name it "),e("code",[t._v("NewRecord.sim")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1\tcontract NewRecord {\t\t\t\t\n2\t data {\t\t\t\t\n3\t Student string\t\t\t\t\n4\t Grade int\t\t\t\t\n5\t Class int\t\t\t\t\n6\t Mathematics int\t\t\t\t\n7\t Physics int\t\t\t\t\n8\t Literature int\t\t\t\t\n9\t }\t\t\t\t\n10\t func getScore(a b c int) map{\t\t\t\t\n11\t var m map\t\t\t\t\n12\t var overallScore int\t\t\t\t\n13\t overallScore = (a+b+c) / 3\t\t\t\t\n14\t m["overallScore"] = overallScore\t\t\t\t\n15\t if overallScore >= $gradeTypeABest["min"] && overallScore < $gradeTypeABest["max"] {\t\t\t\t\n16\t m["score"] = "A+"\t\t\t\t\n17\t }elif overallScore >= $gradeTypeA["min"] && overallScore < $gradeTypeA["max"] {\t\t\t\t\n18\t m["score"] = "A"\t\t\t\t\n19\t }elif overallScore >= $gradeTypeBBest["min"] && overallScore < $gradeTypeBBest["max"] {\t\t\t\t\n20\t m["score"] = "B+"\t\t\t\t\n21\t }elif overallScore >= $gradeTypeB["min"] && overallScore < $gradeTypeB["max"] {\t\t\t\t\n22\t m["score"] = "B"\t\t\t\t\n23\t }elif overallScore >= $gradeTypeC["min"] && overallScore < $gradeTypeC["max"]{\t\t\t\t\n24\t m["score"] = "C"\t\t\t\t\n25\t }else{\t\t\t\t\n26\t m["score"] = "Notset"\t\t\t\t\n27\t }\t\t\t\t\n28\t return m\t\t\t\t\n29\t }\t\t\t\t\n30\t func safeJsonDecode(m string) map {\t\t\t\t\n31\t var res map\t\t\t\t\n32\t if Size(m) > 0 {\t\t\t\t\n33\t res = JSONDecode(m)\t\t\t\t\n34\t }\t\t\t\t\n35\t return res\t\t\t\t\n36\t }\t\t\t\t\n37\t\t\t\t\t\n38\t conditions {\t\t\t\t\n39\t if Size($Student) == 0 {\t\t\t\t\n40\t warning "Student Can not be empty"\t\t\t\t\n41\t }\t\t\t\t\n42\t if $Class <= 0{\t\t\t\t\n43\t warning "Class cannot be less than or equal to zero"\t\t\t\t\n44\t }\t\t\t\t\n45\t if $Grade <= 0{\t\t\t\t\n46\t warning "Grade cannot be less than or equal to zero"\t\t\t\t\n47\t }\t\t\t\t\n48\t if $Mathematics < 0 {\t\t\t\t\n49\t warning "Mathematics cannot be less than zero"\t\t\t\t\n50\t }\t\t\t\t\n51\t if $Physics < 0 {\t\t\t\t\n52\t warning "Physics cannot be less than zero"\t\t\t\t\n53\t }\t\t\t\t\n54\t if $Literature < 0 {\t\t\t\t\n55\t warning "Literature cannot be less than zero"\t\t\t\t\n56\t }\t\t\t\t\n57\t if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\t\t\t\t\n58\t warning "Score cannot exceed 100"\t\t\t\t\n59\t }\t\t\t\t\n60\t var app map\t\t\t\t\n61\t app = DBFind("@1applications").Columns("id,ecosystem").Where({"ecosystem": 18,"name":"GradesRecorder","deleted":0}).Row()\t\t\t\t\n62\t if !app {\t\t\t\t\n63\t warning LangRes("@1app_not_found")\t\t\t\t\n64\t }\t\t\t\t\n65\t\t\t\t\t\n66\t var app_id int\t\t\t\t\n67\t app_id = Int(app["id"])\t\t\t\t\n68\t $eId = Int(app["ecosystem"])\t\t\t\t\n69\t $gradeBestType = AppParam(app_id, "grade_best_type", $eId)\t\t\t\t\n70\t $gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))\t\t\t\t\n71\t $gradeTypeA = safeJsonDecode(AppParam(app_id, "grade_type_a", $eId))\t\t\t\t\n72\t $gradeTypeBBest = safeJsonDecode(AppParam(app_id, "grade_type_b+", $eId))\t\t\t\t\n73\t $gradeTypeB = safeJsonDecode(AppParam(app_id, "grade_type_b", $eId))\t\t\t\t\n74\t $gradeTypeC = safeJsonDecode(AppParam(app_id, "grade_type_c", $eId))\t\t\t\t\n75\t }\t\t\t\t\n76\t action {\t\t\t\t\n77\t var m map \t\t\t\t\n78\t m = getScore($Mathematics,$Physics,$Literature)\t\t\t\t\n79\t var in map\t\t\t\t\n80\t in["student"] = $Student\t\t\t\t\n81\t in["class"] = $Class\t\t\t\t\n82\t in["grade"] = $Grade\t\t\t\t\n83\t in["mathematics"] = $Mathematics\t\t\t\t\n84\t in["physics"] = $Physics \t\t\t\t\n85\t in["literature"] = $Literature \t\t\t\t\n86\t in["overall_score"] = m["overallScore"]\t\t\t\t\n87\t in["score"] = m["score"]\t\t\t\t\n88\t in["created_at"] = $time\t\t\t\t\n89\t DBInsert("@"+ Str($eId)+"grade_info", in)\t\t\t\t\n90\t }\t\t\t\t\n91\t}\t\t\t\t\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 2, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#data-section"}},[t._v("data section")]),t._v(" defines the input parameters "),e("code",[t._v("Student")]),t._v(" student name, "),e("code",[t._v("Grade")]),t._v(" grade, "),e("code",[t._v("Class")]),t._v(" class, "),e("code",[t._v("Mathematics")]),t._v(" math score, "),e("code",[t._v("Physics")]),t._v("Physics score,"),e("code",[t._v("Literature")]),t._v("Literature score")],1),t._v(" "),e("li",[t._v("Line 10, the getScore function, produces a composite score and final rating based on each subject's score")]),t._v(" "),e("li",[t._v("Line 30, safeJsonDecode function, json decode the string and convert to map")]),t._v(" "),e("li",[t._v("Line 38, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#conditions-section"}},[t._v("conditional section")])],1),t._v(" "),e("li",[t._v("Line 39, "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#action-section"}},[t._v("operation section")])],1)]),t._v(" "),e("p",[t._v("As you can see, when the contract is called, it first goes through the conditional part, verifying that the contract input parameters are valid, such as whether the student name "),e("code",[t._v("if Size($Student) == 0 {")]),t._v(" is empty (line 39), and if it is, then an error message is returned\n"),e("code",[t._v('"Student Can not be empty"')]),t._v(" (line 30), after all input parameters have been verified, on line 61, use "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" to retrieve the information from the database for the application with the ecid "),e("code",[t._v("18")]),t._v(" and the application name "),e("code",[t._v("GradesRecorder")]),t._v(" and the application information with "),e("code",[t._v("deleted=0")]),t._v(" is not deleted.\nLines 69-74, use "),e("RouterLink",{attrs:{to:"/fr/topics/script.html#appparam"}},[t._v("AppParam")]),t._v(" to retrieve the application parameters, e.g. "),e("code",[t._v('$gradeBestType = AppParam(app_id, "grade_best_type", $ eId)')]),t._v(" (line 69).\nIf the application parameter is stored in json format, such as "),e("code",[t._v("grade_type_a")]),t._v(", you can refer to "),e("code",[t._v('$gradeTypeABest = safeJsonDecode(AppParam(app_id, "grade_type_a+", $eId))')]),t._v(", which will get the application parameter by safeJsonDecode function to map format")],1),t._v(" "),e("p",[t._v("Then execute to the operation part, call the getScore function to get the resulting composite score and final rating (line 10), use map to store, line 79, define a map to store student achievement information, and\n"),e("RouterLink",{attrs:{to:"/fr/topics/script.html#dbinsert"}},[t._v("DBInsert")]),t._v(" Insert data to data table"),e("code",[t._v("@18grade_info")]),t._v(".")],1),t._v(" "),e("p",[t._v("There are two ways to create a contract, the first of which is:\nFirst we write a contract parameter file in json format:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions(\\"@1DeveloperCondition\\")"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Where "),e("code",[t._v("ApplicationId")]),t._v(" is the application id, which needs to be escaped for special characters, and "),e("code",[t._v("Conditions")]),t._v(" is the contract modification permission.\n"),e("code",[t._v("Value")]),t._v(" contract source code, which we save as "),e("code",[t._v("NewRecordParams.json")]),t._v(":")]),t._v(" "),e("p",[t._v("After writing the contract, we need to deploy the contract by calling CreateContract"),e("code",[t._v("@1NewContract")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >>callContract @1NewContract -f=./data/NewRecordParams.json\n2 {\n3 "block_id": 1262,\n4 "hash": "d896f12f685835f6cf71705e1ba...4d8bcc0a1406f7b0b6482b2d230fc",\n5 "penalty": 0,\n6 "err": "348"\n7 }\n')])])]),e("p",[t._v("The following is explained by line:")]),t._v(" "),e("ul",[e("li",[t._v("Line 1: call contract "),e("code",[t._v("@1NewContract")]),t._v(" to create the contract, -f uses the file to import the just created file "),e("code",[t._v("NewRecord.json")]),t._v(" as the contract parameter")]),t._v(" "),e("li",[t._v("Line 3, the block id generated by the transaction")]),t._v(" "),e("li",[t._v("Line 4, the block hash generated by the transaction")]),t._v(" "),e("li",[t._v("Line 5, if the transaction execution fails (0: no penalty 1: penalty)")]),t._v(" "),e("li",[t._v("Line 6, if the transaction execution fails, an error text message is returned, and if the block id is returned, the err field the id of the contract is "),e("code",[t._v("348")])])]),t._v(" "),e("p",[t._v("Second method:\nThe saved contract source file is passed directly into the contract parameters in the parameter format "),e("code",[t._v("paramsName")]),t._v(" + "),e("code",[t._v("-")]),t._v(' + "file",'),e("code",[t._v("paramsName-file")]),t._v(" as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewContract "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("47")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value-file"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NewRecord.sim"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('@1DeveloperCondition\\ "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v('"'),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Let's try to call the contract we just created")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1263,\n5 "hash": "1b964a47fe6c5fd43ea55a752d01edb5ad576432fd6f63315344d87999a0473d",\n6 "penalty": 0,\n7 "err": ""\n8 }\n')])])]),e("p",[t._v("The call is complete, and then we check to see if the data table has saved a record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>getList @18grade_info\n{\n "count": 1,\n "list": [\n {\n "class": "1",\n "created_at": "1683698914109",\n "grade": "1",\n "id": "9",\n "literature": "93",\n "mathematics": "18",\n "overall_score": "56",\n "physics": "57",\n "score": "C",\n "student": "tom"\n }\n ]\n}\n')])])]),e("p",[t._v("You can see that there is already a record in the data table, "),e("code",[t._v("student")]),t._v(" tom with an overall rating of 56 and a grade of C")]),t._v(" "),e("p",[t._v("The above example is only for study and research purposes, you need to change the relevant parameters according to the actual situation, such as the data table write permission, contract modification permission, etc.")]),t._v(" "),e("p",[t._v("For example, if we want to specify that only one person can call this new record contract and no one else can call it, we can set an ecological parameter "),e("code",[t._v("new_record_account")])]),t._v(" "),e("h3",{attrs:{id:"step-6-create-ecological-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-6-create-ecological-parameters"}},[t._v("#")]),t._v(" Step 6 Create Ecological Parameters")]),t._v(" "),e("p",[t._v("Calling the contract "),e("code",[t._v("@1NewParameter")]),t._v(" will create the eco-parameter\n"),e("code",[t._v("new_record_account")]),t._v(" in the "),e("code",[t._v("@1parameters")]),t._v(" table, if you need to modify the eco-parameter you can call "),e("code",[t._v("@1EditParameter")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1NewParameter {"Name": "new_record_account", "Value": "6667782293976713160", "Conditions": "ContractConditions(\\"MainCondition\\")"}\n\n{\n "block_id": 1416,\n "hash": "12fc87ce6a70e2fc993ab9ffe623311f1c50edd1157595ce6183c38c93960cae",\n "penalty": 0,\n "err": "273"\n}\n')])])]),e("p",[t._v("We create an ecological parameter "),e("code",[t._v("new_record_account")]),t._v(", set the value to keyId "),e("code",[t._v("6667782293976713160")]),t._v(", modify the permission to"),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(' which means the current ecological creator can modify\nWhen the transaction is executed successfully, the ecological parameter id of the "err" field is '),e("code",[t._v("273")]),t._v(".")]),t._v(" "),e("h3",{attrs:{id:"step-7-add-localization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-7-add-localization"}},[t._v("#")]),t._v(" Step 7 add localization")]),t._v(" "),e("p",[t._v("You can call the "),e("code",[t._v("@1NewLangJoint")]),t._v(" contract to create the localization parameter"),e("code",[t._v("account_not_access")]),t._v(", which will create the parameter in the"),e("code",[t._v("@1languages")]),t._v(" table, and you can modify the localization parameter via"),e("code",[t._v("@1EditLangJoint")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("callContract @1NewLangJoint "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account_not_access"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"LocaleArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"en"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ja"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ValueArr"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Sorry, you do not have access to this action"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"申し訳ありませんが、このアクションにアクセスする権限がありません"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"step-8-modify-the-contract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-8-modify-the-contract"}},[t._v("#")]),t._v(" Step 8 Modify the contract")]),t._v(" "),e("p",[t._v("Next, we need to modify the "),e("code",[t._v("conditions")]),t._v(" section of the contract source code by adding the following code to "),e("code",[t._v("conditions")])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('conditions {\n if EcosysParam("new_record_account") != $key_id {\n warning LangRes("account_not_access")\n }\n}\n')])])]),e("p",[t._v("Call to modify the contract @1EditContract, where "),e("code",[t._v("Id")]),t._v(" is the contract id, "),e("code",[t._v("Value")]),t._v(": is the contract source code")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditContract {"Id": 348, "Value": "contract NewRecord {\\n data {\\n Student string\\n Grade int\\n Class int\\n Mathematics int\\n Physics int\\n Literature int\\n }\\n func getScore(a b c int) map{\\n var m map\\n var overallScore int\\n overallScore = (a+b+c) / 3\\n m[\\"overallScore\\"] = overallScore\\n if overallScore >= $gradeTypeABest[\\"min\\"] && overallScore < $gradeTypeABest[\\"max\\"] {\\n m[\\"score\\"] = \\"A+\\"\\n }elif overallScore >= $gradeTypeA[\\"min\\"] && overallScore < $gradeTypeA[\\"max\\"] {\\n m[\\"score\\"] = \\"A\\"\\n }elif overallScore >= $gradeTypeBBest[\\"min\\"] && overallScore < $gradeTypeBBest[\\"max\\"] {\\n m[\\"score\\"] = \\"B+\\"\\n }elif overallScore >= $gradeTypeB[\\"min\\"] && overallScore < $gradeTypeB[\\"max\\"] {\\n m[\\"score\\"] = \\"B\\"\\n }elif overallScore >= $gradeTypeC[\\"min\\"] && overallScore < $gradeTypeC[\\"max\\"]{\\n m[\\"score\\"] = \\"C\\"\\n }else{\\n m[\\"score\\"] = \\"Notset\\"\\n }\\n return m\\n }\\n func safeJsonDecode(m string) map {\\n var res map\\n if Size(m) > 0 {\\n res = JSONDecode(m)\\n }\\n return res\\n }\\n\\n conditions {\\n if EcosysParam(\\"new_record_account\\") != $key_id {\\n warning LangRes(\\"account_not_access\\")\\n }\\n if Size($Student) == 0 {\\n warning \\"Student Can not be empty\\"\\n }\\n if $Class <= 0{\\n warning \\"Class cannot be less than or equal to zero\\"\\n }\\n if $Grade <= 0{\\n warning \\"Grade cannot be less than or equal to zero\\"\\n }\\n if $Mathematics < 0 {\\n warning \\"Mathematics cannot be less than zero\\"\\n }\\n if $Physics < 0 {\\n warning \\"Physics cannot be less than zero\\"\\n }\\n if $Literature < 0 {\\n warning \\"Literature cannot be less than zero\\"\\n }\\n if $Mathematics > 100 || $Physics > 100 || $Literature > 100{\\n warning \\"Score cannot exceed 100\\"\\n }\\n var app map\\n app = DBFind(\\"@1applications\\").Columns(\\"id,ecosystem\\").Where({\\"ecosystem\\": 18,\\"name\\":\\"GradesRecorder\\",\\"deleted\\":0}).Row()\\n if !app {\\n warning LangRes(\\"@1app_not_found\\")\\n }\\n\\n var app_id int\\n app_id = Int(app[\\"id\\"])\\n $eId = Int(app[\\"ecosystem\\"])\\n $gradeBestType = AppParam(app_id, \\"grade_best_type\\", $eId)\\n $gradeTypeABest = safeJsonDecode(AppParam(app_id, \\"grade_type_a+\\", $eId))\\n $gradeTypeA = safeJsonDecode(AppParam(app_id, \\"grade_type_a\\", $eId))\\n $gradeTypeBBest = safeJsonDecode(AppParam(app_id, \\"grade_type_b+\\", $eId))\\n $gradeTypeB = safeJsonDecode(AppParam(app_id, \\"grade_type_b\\", $eId))\\n $gradeTypeC = safeJsonDecode(AppParam(app_id, \\"grade_type_c\\", $eId))\\n }\\n action {\\n var m map \\n m = getScore($Mathematics,$Physics,$Literature)\\n var in map\\n in[\\"student\\"] = $Student\\n in[\\"class\\"] = $Class\\n in[\\"grade\\"] = $Grade\\n in[\\"mathematics\\"] = $Mathematics\\n in[\\"physics\\"] = $Physics \\n in[\\"literature\\"] = $Literature \\n in[\\"overall_score\\"] = m[\\"overallScore\\"]\\n in[\\"score\\"] = m[\\"score\\"]\\n in[\\"created_at\\"] = $time\\n DBInsert(\\"@\\"+ Str($eId)+\\"grade_info\\", in)\\n }\\n}"}\n')])])]),e("h4",{attrs:{id:"step-9-modify-data-table-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-9-modify-data-table-permissions"}},[t._v("#")]),t._v(" Step 9 Modify data table permissions")]),t._v(" "),e("p",[t._v("Here we need to change the insert permission of the data table, the original permission "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" for the ecreator, and the contract setting "),e("code",[t._v("new_record_account")]),t._v(" is not the ecreator.\nSo just change "),e("code",[t._v('ContractConditions("MainCondition")')]),t._v(" to specify that the contract can operate on "),e("code",[t._v('ContractAccess("@18NewRecord")')]),t._v(".\nCall the contract "),e("code",[t._v("@1EditTable")]),t._v(" to modify the data table permissions")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @1EditTable {"Name": "@18grade_info", "InsertPerm": "ContractAccess(\\"@18NewRecord\\")", "UpdatePerm": "ContractConditions(\\"MainCondition\\")", "ReadPerm": "true", "NewColumnPerm": "ContractConditions(\\"MainCondition\\")"}\n')])])]),e("p",[t._v("Then call the contract you just modified and create a new record")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('1 >callContract @18NewRecord {"Student": "tom", "Grade": 1, "Class": 1, "Mathematics": 18, "Physics": 57, "Literature": 93}\n2 \n3 {\n4 "block_id": 1435,\n5 "hash": "7d4b06d3738133f9c2ec775935478cd2d6c20fd04eca275769afd0f8e6a4f687",\n6 "penalty": 1,\n7 "err": "{\\"type\\":\\"warning\\",\\"error\\":\\"Sorry, you do not have access to this action\\"}"\n8 }\n')])])]),e("p",[t._v("You can see that the localization parameter we just set,"),e("code",[t._v("account_not_access")]),t._v(", is working")]),t._v(" "),e("p",[t._v("We found that the permission error is reported, the current user does not have permission to operate, we switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v(", we can get the current user's information through the command line tool"),e("code",[t._v("account info")]),t._v("\nSet up the command line tool config.yml and switch to the account with keyId "),e("code",[t._v("6667782293976713160")]),t._v("\nAfter the setup is complete, call the contract again")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('>callContract @18NewRecord {"Student": "tini", "Grade": 1, "Class": 3, "Mathematics": 69, "Physics": 89, "Literature": 98}\n\n{\n "block_id": 1436,\n "hash": "93327dafb7bae9f9f66718eb87020a7bca4c00060f4bd0a243b49eea304c52e6",\n "penalty": 0,\n "err": ""\n}\n')])])]),e("p",[t._v("The call completes, querying the data table via "),e("code",[t._v("getList @18grade_info")]),t._v(", and the result is as expected")]),t._v(" "),e("p",[t._v("We hope this article has helped you learn more about how the IBAX network works and how to write clear and secure "),e("code",[t._v("Needle")]),t._v(" code.")]),t._v(" "),e("h2",{attrs:{id:"deploy-application-using-command-line-tools"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-application-using-command-line-tools"}},[t._v("#")]),t._v(" Deploy application using command line tools")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#export-application"}},[t._v("Export Application")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#import-application"}},[t._v("Import Application")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will import the application on the IBAX blockchain via the "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(". Exporting an application")]),t._v(" "),e("h3",{attrs:{id:"export-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#export-application"}},[t._v("#")]),t._v(" Export Application")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("account info")]),t._v(" to query the current account information, here the login ecid is "),e("code",[t._v("9")]),t._v(", call "),e("code",[t._v("getList")]),t._v(" command to query the current ecid which applications")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n \nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("account info\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"public_key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04d11ea197fe23152562c6f54c4...889c074dfd9080099982d8b2d4d100315e1cebc7"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6660819")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".78795186,\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"36"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testapp"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"uuid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"00000000-0000-0000-0000-000000000000"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("We can see that the current ecology has 6 applications, we use the"),e("code",[t._v("export")]),t._v(" command to export the application with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("36")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("export "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),t._v(" -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The -f parameter here saves the exported application to the "),e("code",[t._v("data.json")]),t._v(" file in the current directory.\nIf there is no -f parameter, the application data will be output in the command terminal")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("export")]),t._v(" command encapsulates the steps to export an application. You can use the above command to export an application, or use the following steps, as follows:\nCalling the contract "),e("code",[t._v("@1ExportNewApp")]),t._v(" to export a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ExportNewApp "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Call the contract "),e("code",[t._v("@1Export")]),t._v(" to export the application, find the selected application in the "),e("code",[t._v("1_buffer_data")]),t._v(" table, and export all application resources to the generated json string.\nThe generated json string will be written to the "),e("code",[t._v("1_binaries")]),t._v(" table of the current ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Export\n")])])]),e("p",[t._v("Query the data in the "),e("code",[t._v("1_binaries")]),t._v(" table with the "),e("code",[t._v("getList")]),t._v(" command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1binaries -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"export"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-...-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"app_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("36")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id,hash"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"8542cb57b77e0ae2c...92c3e05dbbe35ab646789be5b8ba8"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"14"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Get the binary id and hash\nCall the "),e("code",[t._v("binaryVerify")]),t._v(" command to export the binary file")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("binaryVerify "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("14")]),t._v(" 8542cb57b77e0ae2c"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".92c3e05dbbe35ab646789be5b8ba8 -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"./data.json"')]),t._v(", \n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"application/json"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"import-application"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#import-application"}},[t._v("#")]),t._v(" Import Application")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" /data.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("import")]),t._v(" command encapsulates the steps to import an application, you can use the above command to import an application")]),t._v(" "),e("p",[t._v("Or use the following steps, which, for ease of study and research, are as follows:")]),t._v(" "),e("ul",[e("li",[t._v("Step 1\nCalling the contract "),e("code",[t._v("@1ImportUpload")]),t._v(" to import a new application will generate a record in the "),e("code",[t._v("1_buffer_data")]),t._v(" table for the exported application\n"),e("code",[t._v("@1ImportUpload")]),t._v(" The contract parameter "),e("code",[t._v("Data")]),t._v(" is "),e("code",[t._v("file")]),t._v(" "),e("RouterLink",{attrs:{to:"/fr/topics/vm.html#types"}},[t._v("type")]),t._v(".\nContains the keywords "),e("code",[t._v("Name")]),t._v(" file name (string), "),e("code",[t._v("MimeType")]),t._v(" file type (string), "),e("code",[t._v("Body")]),t._v(" ([]byte) file content\nYou need to base64 encode the application file data and pass it into "),e("code",[t._v("Body")]),t._v(", you can use the "),e("code",[t._v("base64Encode")]),t._v(" command to base64 encode it")],1)]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("base64Encode -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./data.json\n\nEncode:ewoJIm5hbWUiOiAid"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1ImportUpload "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"filename"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MimeType"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mimeType"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Body"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ewoJIm5hbWUiOiAid...CQkJIlR5cGUiOiAiY29udHJhY3RzIiwKCQkJIk5hbWUiOiAiSGVsbG9Xb3JsZCIsCgkJCSJWYWx1ZSI6..."')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 2\nAfter the call is completed, use the "),e("code",[t._v("getList")]),t._v(" command to query the data in the "),e("code",[t._v("1_buffer_data")]),t._v(" table")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1buffer_data -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"key"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"import"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-0819-xxxx-7879-5186"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -l"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("value-"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'data'")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"22"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"value.data"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[{"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("a,b"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}, {"')]),t._v("Data"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('": "')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("c,d"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"}]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 3\nAssemble the data in value.data->Data into a one-dimensional array, [a,b,c,d].\nThen create a contract parameters file "),e("code",[t._v("importParams.json")]),t._v(", with the following content:")])]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Data"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[a,b,c,d]"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("ul",[e("li",[t._v("Step 4\nCall the contract "),e("code",[t._v("@1Import")]),t._v(" to import the application data")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1Import -f"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("./importParams.json\n")])])]),e("h2",{attrs:{id:"ecological-configuration-using-command-line-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ecological-configuration-using-command-line-tool"}},[t._v("#")]),t._v(" Ecological configuration using command line tool")]),t._v(" "),e("p",[t._v("In this tutorial, you will learn how to:")]),t._v(" "),e("ul",[e("li",[e("ol",[e("li",[e("a",{attrs:{href:"#apply-to-join-the-ecology"}},[t._v("Apply to join the ecology")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"2"}},[e("li",[e("a",{attrs:{href:"#add-ecological-members"}},[t._v("Add ecological members")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"3"}},[e("li",[e("a",{attrs:{href:"#role-management"}},[t._v("Role management")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"4"}},[e("li",[e("a",{attrs:{href:"#issuance-of-token"}},[t._v("Issuance of Token")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"5"}},[e("li",[e("a",{attrs:{href:"#eco-deduction"}},[t._v("Eco Deduction")])])])]),t._v(" "),e("li",[e("ol",{attrs:{start:"6"}},[e("li",[e("a",{attrs:{href:"#dao-governance-ecology"}},[t._v("DAO Governance Ecology")])])])])]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to have an application of your own and know the concept of ecology and application, you can refer to "),e("a",{attrs:{href:"#getting-started-guide"}},[t._v("Getting Started Guide")]),t._v("\nWe will do the ecological configuration on the IBAX blockchain via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1)]),t._v(" "),e("h3",{attrs:{id:"apply-to-join-the-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#apply-to-join-the-ecology"}},[t._v("#")]),t._v(" Apply to join the ecology")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract to request to join the ecology\nThe following example:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"EcosystemId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("19")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("request to join the ecology with ecological id "),e("code",[t._v("19")]),t._v(", the "),e("code",[t._v("@1MembershipRequest")]),t._v(" contract makes a restriction on calling the ecology, only in the base ecology can be called\nWhen the application is successful, the target ecology manager will receive an application, and only when the application is approved by the ecology manager will it be considered as joining the target ecology.\nOf course, if the target ecology is public, you can join the target ecology directly")]),t._v(" "),e("h3",{attrs:{id:"add-ecological-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#add-ecological-members"}},[t._v("#")]),t._v(" Add ecological members")]),t._v(" "),e("p",[t._v("When the ecology is just created, the ecology member is only the ecology creator, when you need to invite other members to join, you need to know the public key of the invited person, and then call the contract "),e("code",[t._v("@1MembershipAdd")]),t._v(" to add members")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipAdd "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Keys"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"04f2c1780ca0aa0f343d0e541c77811...3b0d5bf3a9903253aad6e78c966b5f91ffb32703884020"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If the ecology is public and allows anyone to join, you can set the ecology parameter "),e("code",[t._v("free_membership")]),t._v(" = 1, which is not public by default.\nOnce set up, you don't need to be approved to join your ecosystem")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"free_membership"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("MainCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("If you don't set the parameter "),e("code",[t._v("free_membership")]),t._v(", when other members apply to join your ecology, you will receive an application notification.")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1MembershipDecide")]),t._v(" contract approval application, contract parameters "),e("code",[t._v("NotificId")]),t._v(" is the notification id, 'Accept' is the resolution mark, resolution mark "),e("code",[t._v("1")]),t._v(" is passed")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1MembershipDecide "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"NotificId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Accept"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"freezing-of-accounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#freezing-of-accounts"}},[t._v("#")]),t._v(" Freezing of accounts")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1DeleteMember")]),t._v(" contract to freeze the account, note that this operation cannot be restored")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1DeleteMember "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1539-2715-xxxx-1679-5385"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"role-management"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#role-management"}},[t._v("#")]),t._v(" Role management")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#new-role-creation"}},[t._v("New role creation")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#adding-role-members"}},[t._v("Add Role Member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role-members"}},[t._v("delete role member")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#modify-role-manager"}},[t._v("Modify role manager")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delete-role"}},[t._v("delete role")])])]),t._v(" "),e("h4",{attrs:{id:"new-role-creation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#new-role-creation"}},[t._v("#")]),t._v(" New role creation")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1RolesCreate")]),t._v(" contract to create a new role, role name "),e("code",[t._v("student")]),t._v(", type "),e("code",[t._v("2")]),t._v(" (1 - Assignable 2 - Elected by vote type 3 - System)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesCreate "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"student"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1685")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5321f2231a...d0d80158b62766395f14d0ff7"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The return result contains the role id "),e("code",[t._v("21")])]),t._v(" "),e("h4",{attrs:{id:"adding-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-role-members"}},[t._v("#")]),t._v(" Adding Role Members")]),t._v(" "),e("p",[t._v("There are two methods, the first method, the ecological member to initiate the application, call the contract "),e("code",[t._v("@1RolesRequest")]),t._v(" request to add as a member of the role, where "),e("code",[t._v("Rid")]),t._v(" is the role id")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesRequest "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("In the second method, the role manager assigns role members, and the role manager calls the contract "),e("code",[t._v("@1RolesAssign")]),t._v(" to add members to the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAssign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"MemberAccount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0666-7782-xxxx-7671- 3160"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role-members"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role-members"}},[t._v("#")]),t._v(" Delete role members")]),t._v(" "),e("p",[t._v("First we see what members a role has, which we can query via getList, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles_participants -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role->id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"appointed"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684916023"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"member"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("20"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("teacher"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("type"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("where")]),t._v(" condition "),e("code",[t._v("ecosystem")]),t._v(" specifies ecology, "),e("code",[t._v("role->id")]),t._v(" specifies the role id, and "),e("code",[t._v("deleted")]),t._v(": 0 specifies not deleted.\nWe can see that we have 3 rows, if we want to remove the role with member "),e("code",[t._v("1273-2644-xxxx-5846-6598")]),t._v(", that is, the role with "),e("code",[t._v("id")]),t._v(" of "),e("code",[t._v("21")]),t._v(".\nAdministrators can call the contract "),e("code",[t._v("@1RolesUnassign")]),t._v(" to remove role members, as follows")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesUnassign "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RowId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("21")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"modify-role-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#modify-role-manager"}},[t._v("#")]),t._v(" Modify Role Manager")]),t._v(" "),e("p",[t._v("Let's look at the current ecological roles")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1roles -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("18")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"company_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"creator"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{'),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("account"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("1273-2644-xxxx-5846-6598"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("image_id"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("0"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("member_name"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(": "),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("founder"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v('}"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_created"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1684910917"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"date_deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"default_page"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"deleted"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"18"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"20"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"image_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"teacher"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"role_type"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roles_access"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"[]"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("..")]),t._v(".\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("roles_access")]),t._v(" is the administrative role for the current role, which is an array and can have more than one.\nWe add an administrative role to the role "),e("code",[t._v("teacher")]),t._v(" by calling the "),e("code",[t._v("@1RolesAccessManager")]),t._v(" contract, where the contract parameters "),e("code",[t._v("Action")]),t._v(" administrative operator ("),e("code",[t._v("clean")]),t._v(", "),e("code",[t._v("remove")]),t._v(", "),e("code",[t._v("add")]),t._v("),"),e("code",[t._v("Rid")]),t._v(" the role ID to be managed, "),e("code",[t._v("ManagerRid")]),t._v(" the Rid Manager of the role")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesAccessManager "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Action"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"add"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("20")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ManagerRid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("13")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1745")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"e2eb8ff0dc309ec7652db...bbbe58bca4ca574804e46c2f63653eb73104"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"delete-role"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delete-role"}},[t._v("#")]),t._v(" Delete Role")]),t._v(" "),e("p",[t._v("We can call the "),e("code",[t._v("@1RolesDelete")]),t._v(" contract to delete roles, where the contract parameters "),e("code",[t._v("Rid")]),t._v(" is the ID of the role to be managed and "),e("code",[t._v("Ops")]),t._v(" is the operator ("),e("code",[t._v("D")]),t._v(" is delete "),e("code",[t._v("R")]),t._v(" is restore)")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesDelete "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rid"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ops"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"D"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1785")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1ebf99a04f504fc3d2...4ecfbdfc419bf3dbf39df0013dca913f844"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"issuance-of-token"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#issuance-of-token"}},[t._v("#")]),t._v(" Issuance of Token")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#create-ecology"}},[t._v("Create Ecology")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#installing-basic-applications"}},[t._v("Installing Basic Applications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#token-issuance"}},[t._v("Token Issuance")])])]),t._v(" "),e("h4",{attrs:{id:"create-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-ecology"}},[t._v("#")]),t._v(" Create Ecology")]),t._v(" "),e("p",[t._v("Create an ecology, call "),e("code",[t._v("@1NewEcosystem")]),t._v(" contract")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewEcosystem "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Test Ecosystem"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"block_id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1787")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hash"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"384f35ef93243c9dd4f53b9298873b356b25b31cf7c6a6be7600ee7694d77006"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"penalty"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"err"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"21"')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v('Then we modify the command line tool configuration to log into this newly created ecosystem: "21"')]),t._v(" "),e("h4",{attrs:{id:"installing-basic-applications"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-basic-applications"}},[t._v("#")]),t._v(" Installing Basic Applications")]),t._v(" "),e("p",[t._v("Call the contract to install the base application, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1PlatformAppsInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1RolesInstall\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1AppInstall "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ApplicationId"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Line 1, install the platform application\nLine 2, install default role\nLine 3-4, install the eco-configuration and token issuance application, where the application id "),e("code",[t._v("5,6")]),t._v(" can be queried via getList as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1applications -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$or")]),t._v('"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(","),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" -c"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name,ecosystem"')]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"count"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"list"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"5"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Token emission"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6"')]),t._v(",\n "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ecosystems catalog"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h4",{attrs:{id:"token-issuance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#token-issuance"}},[t._v("#")]),t._v(" Token Issuance")]),t._v(" "),e("p",[t._v("Because it is a new ecology, you need to set up the token issuance, call "),e("code",[t._v("@1TeSettings")]),t._v(" contract to specify the roles that can issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeSettings "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RoleDeveloper"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("RoleDeveloper")]),t._v(" is the current ecological role id, which can be obtained through the "),e("code",[t._v("@1roles")]),t._v(" data table")]),t._v(" "),e("p",[e("strong",[t._v("Token Issuance")]),t._v(" Call "),e("code",[t._v("@1NewToken")]),t._v(" contract to issue tokens")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewToken "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Symbol"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TEST Coin"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10000000000000000"')]),t._v(" ,"),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Digits"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"12"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameters "),e("code",[t._v("Symbol")]),t._v(" is the token symbol, "),e("code",[t._v("Name")]),t._v(" is the token name, "),e("code",[t._v("Amount")]),t._v(" is the total amount, and "),e("code",[t._v("Digits")]),t._v(" is the precision.")]),t._v(" "),e("p",[e("strong",[t._v("Token Emission")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeEmission "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Destroy tokens")])]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeBurn "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Amount"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000000000000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("Default token increment and token destruction is allowed, you can set it off by "),e("code",[t._v("@1TeChange")]),t._v(", where "),e("code",[t._v("TypeChange")]),t._v(" is the type ("),e("code",[t._v("emission")]),t._v(" increment,"),e("code",[t._v("withdraw")]),t._v(" destruction).\n"),e("code",[t._v("Value")]),t._v(" is the on/off status ("),e("code",[t._v("1")]),t._v(" on, "),e("code",[t._v("2")]),t._v(" off), e.g:\n"),e("strong",[t._v("Close Additions")]),t._v(" Note: Cannot be turned on after closing")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"emission"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[e("strong",[t._v("Turn off destruction")]),t._v(", if you want to turn on destruction again, just set "),e("code",[t._v("Value")]),t._v(" to "),e("code",[t._v("1")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1TeChange "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"TypeChange"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"withdraw"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"eco-deduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#eco-deduction"}},[t._v("#")]),t._v(" Eco Deduction")]),t._v(" "),e("p",[t._v("Before setting up eco-deductions, you need to understand the IBAX fee model, which can be found in the "),e("a",{attrs:{href:"https://github.com/IBAX-io/whitepaper",target:"_blank",rel:"noopener noreferrer"}},[t._v("white paper"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("We first set the eco-wallet address, call the "),e("code",[t._v("@1EditParameter")]),t._v(" contract and modify the eco-parameters")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditParameter "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Id"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("334")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1273-2644-xxxx-5846-6598"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where "),e("code",[t._v("Id")]),t._v(" is the ecowallet "),e("code",[t._v("ecosystem_wallet")]),t._v(" parameter id, which can be queried as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("getList @1parameters -w"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("22")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ecosystem_wallet"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("The "),e("code",[t._v("Value")]),t._v(" value is the address of the ecowallet that will be bound, and the contract generates the gas fee, which is paid by that address. The address must have enough tokens in the current ecology and needs to be agreed by the bound address before the modification will be successful")]),t._v(" "),e("p",[t._v("Call "),e("code",[t._v("@1EcoFeeModeManage")]),t._v(" contract to set up multi-ecological deduction, as follows:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EcoFeeModeManage "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"FollowFuel"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.01")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CombustionFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VmCostConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageConversionRate"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"StorageFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ExpediteFlag"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the contract parameter fields are defined as follows:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("FollowFuel")]),t._v(" parameter is a multiple of the follow eco1 rate")]),t._v(" "),e("li",[e("code",[t._v("CombustionFlag")]),t._v(" whether to turn on ecotrade gas fee combustion, 1- no, 2-yes")]),t._v(" "),e("li",[e("code",[t._v("CombustionPercent")]),t._v(" Combustion percentage, only effective when gas fee combustion is turned on, takes values 1 to 100, 0 when not turned on")]),t._v(" "),e("li",[e("code",[t._v("VmCostFlag")]),t._v(" VM cost flag, set direct or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("StorageFlag")]),t._v(" storage fee flag, set direct payment or proxy payment, 1 - direct payment, 2 - proxy payment")]),t._v(" "),e("li",[e("code",[t._v("ExpediteFlag")]),t._v(" Expedited fee flag, set direct payment or payment on behalf of, 1 - direct payment, 2 - payment on behalf of")]),t._v(" "),e("li",[e("code",[t._v("VmCostConversionRate")]),t._v(" Virtual machine cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")]),t._v(" "),e("li",[e("code",[t._v("StorageConversionRate")]),t._v(" The storage cost conversion rate, 2 decimal places, only in effect for proxy payments, greater than zero")])]),t._v(" "),e("p",[t._v("If you use the above settings, all transaction fees incurred by users invoking contracts within the ecology will be paid by the ecological wallet of the current ecological setup.\nAll users only need to pay for the gas costs incurred within the ecology. Of course you can adjust the cost parameters according to your actual needs")]),t._v(" "),e("h3",{attrs:{id:"dao-governance-ecology"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dao-governance-ecology"}},[t._v("#")]),t._v(" DAO Governance Ecology")]),t._v(" "),e("p",[t._v("Before modifying to DAO governance ecology, you need to ensure that the current ecology has issued tokens, and after modifying to DAO governance ecology, all proposals of the ecology will be voted on by the members of the governance committee.\nThe DAO Governance Board is no longer managed by the eco-developers alone, and the top 50 representatives of the eco-holdings are elected.")]),t._v(" "),e("p",[t._v("Call the "),e("code",[t._v("@1EditControlMode")]),t._v(" contract to change the eco governance mode to DAO governance mode.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1EditControlMode "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Value"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("where the "),e("code",[t._v("Value")]),t._v(" parameter "),e("code",[t._v("1")]),t._v(" represents the creator model "),e("code",[t._v("2")]),t._v(" represents the DAO governance model")]),t._v(" "),e("p",[t._v("We can try to create an application")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("callContract @1NewApplication "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Name"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testApp"')]),t._v(", "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Conditions"')]),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ContractConditions('),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v("@1DeveloperCondition"),e("span",{pre:!0,attrs:{class:"token entity",title:'\\"'}},[t._v('\\"')]),t._v(')"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("p",[t._v("At this point a DAO governance proposal is generated and voted on by the DAO Governance Board before the application is created. A valid proposal requires a 68% approval rate out of 75% of the votes cast.\nThe scope of DAO governance includes:")]),t._v(" "),e("ol",[e("li",[t._v("Add, delete and change applications, contracts, pages, code snippets, tabs, menus, application parameters, data tables and fields")]),t._v(" "),e("li",[t._v("Modify multilingual")]),t._v(" "),e("li",[t._v("DAO and creator model switch")]),t._v(" "),e("li",[t._v("Edit ecological parameters")]),t._v(" "),e("li",[t._v("role, assign remove role members")]),t._v(" "),e("li",[t._v("Issue additional destruction currency")]),t._v(" "),e("li",[t._v("Modify the platform parameters")]),t._v(" "),e("li",[t._v("Modify ecological information")]),t._v(" "),e("li",[t._v("Modification of delayed contracts")]),t._v(" "),e("li",[t._v("Modify the voting template")])]),t._v(" "),e("h2",{attrs:{id:"deploy-applications-using-application-packaging-tool"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deploy-applications-using-application-packaging-tool"}},[t._v("#")]),t._v(" Deploy applications using application packaging tool")]),t._v(" "),e("p",[t._v("Before starting this tutorial, you need to download "),e("a",{attrs:{href:"https://github.com/IBAX-io/app-tool",target:"_blank",rel:"noopener noreferrer"}},[t._v("IBAX Application Packaging Tool"),e("OutboundLink")],1),t._v(" , we need to use this tool to package IBAX application.")]),t._v(" "),e("p",[t._v("We need to store the application files according to the following directory structure")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("- APP Name\n - app_params\n params1.csv\n params2.csv\n ...\n - contracts\n contract1.sim\n contract2.sim\n ...\n - tables\n tableName1.json\n tableName2.json\n ...\n config.json\n")])])]),e("p",[t._v("As shown below:")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("airdrop$ "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ls")]),t._v(" *\nconfig.json\n\napp_params:\ndedicated_account.csv lock_percent.csv per_period_sec.csv period_count.csv\n\ncontracts:\nAddAirdrop.sim ClaimAirdrop.sim SpeedAirdrop.sim\n\ntables:\nairdrop_info.json\n")])])]),e("p",[t._v("The "),e("code",[t._v("app_params")]),t._v(" directory stores the application parameters file, named using the parameter name + file format "),e("code",[t._v(".csv")]),t._v(", the content of the file is the parameter value.\nThe "),e("code",[t._v("contracts")]),t._v(" directory holds the contracts, in "),e("code",[t._v(".sim")]),t._v(" file format, and the contents of the file are the contract source code.\nThe "),e("code",[t._v("tables")]),t._v(" directory holds the application data table structure in "),e("code",[t._v("json")]),t._v(" file format, as follows:")]),t._v(" "),e("div",{staticClass:"language-json extra-class"},[e("pre",{pre:!0,attrs:{class:"language-json"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"account"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{\\"read\\": \\"true\\", \\"update\\": \\"ContractConditions(\\"MainCondition\\")\\"}"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"varchar"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"balance_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"stake_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"surplus"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"number"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"total_amount"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"conditions"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"money"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),e("p",[e("code",[t._v("name")]),t._v(" is the datatable field name, "),e("code",[t._v("conditions")]),t._v(" is the datatable field permission, and "),e("code",[t._v("type")]),t._v(" is the field type.")]),t._v(" "),e("p",[t._v("In step 1, we generate a config.json file and save it to the airdrop directory with the following contents:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "name": "Airdrop",\n "conditions": "ContractConditions(\\"@1MainCondition\\")"\n}\n')])])]),e("p",[t._v("Where "),e("code",[t._v("name")]),t._v(" is the name of the application, "),e("code",[t._v("conditions")]),t._v(": is the permission to modify the application, and then save it to the airdrop directory.")]),t._v(" "),e("p",[t._v("Step 2, package the application, the following command will generate the application "),e("code",[t._v("airdrop.json")]),t._v(" in the current directory, if you modify the contract or application parameters, you need to repackage the application.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ./app-tool airdrop/\n")])])]),e("p",[t._v("We can import the application via "),e("a",{attrs:{href:"https://github.com/IBAX-io/ibax-cli",target:"_blank",rel:"noopener noreferrer"}},[t._v("command line tool"),e("OutboundLink")],1),t._v(" as follows:\nUse the "),e("code",[t._v("import")]),t._v(" command to import an application, with the "),e("code",[t._v("-f")]),t._v(" parameter to specify the application file to be imported")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ ibax-cli console\n\nWelcome to the IBAX console"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\nTo exit, press ctrl-d or "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("type")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("exit")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v("import -f ./airdrop.json\n")])])]),e("p",[t._v("Of course if you have an application, you can also generate the complete directory structure with the following command")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[t._v("$ app-tool.exe airdrop.json\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/67.d643eaeb.js b/assets/js/67.b3bfcbbe.js similarity index 99% rename from assets/js/67.d643eaeb.js rename to assets/js/67.b3bfcbbe.js index 2fc3803..c945652 100644 --- a/assets/js/67.d643eaeb.js +++ b/assets/js/67.b3bfcbbe.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{446:function(t,e,a){"use strict";a.r(e);var s=a(51),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"deployment-of-a-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deployment-of-a-ibax-network"}},[t._v("#")]),t._v(" Deployment of A IBAX Network")]),t._v(" "),a("p",[t._v("In this section, we will show you how to deploy your own blockchain network.")]),t._v(" "),a("h2",{attrs:{id:"an-deployment-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#an-deployment-example"}},[t._v("#")]),t._v(" An deployment example")]),t._v(" "),a("p",[t._v("A blockchain network will be deployed with the following three nodes as an example.")]),t._v(" "),a("p",[t._v("Three network nodes:")]),t._v(" "),a("ul",[a("li",[t._v("Node 1 is the first node in the blockchain network, which can generate new blocks and send transactions from clients connected to it;")]),t._v(" "),a("li",[t._v("Node 2 is another honor node, which can generate new blocks and send transactions from clients connected to it;")]),t._v(" "),a("li",[t._v("Node 3 is a guardian node, which cannot generate new blocks, but can send transactions from clients connected to it.")])]),t._v(" "),a("p",[t._v("Configurations of the three nodes to be deployed:")]),t._v(" "),a("ul",[a("li",[t._v("Each node uses its own PostgreSQL database system instance;")]),t._v(" "),a("li",[t._v("Each node uses its own Centrifugo service instance;")]),t._v(" "),a("li",[t._v("The server side github-backend is deployed on the same host as other backend components.")])]),t._v(" "),a("p",[t._v("The sample addresses and ports used by the nodes are described in the following table:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("Node")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Component")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("IP & port")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:7079")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:7079")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:7079")])])])]),t._v(" "),a("h2",{attrs:{id:"deploy-phase"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-phase"}},[t._v("#")]),t._v(" Deploy phase")]),t._v(" "),a("p",[t._v("Your own blockchain network must be deployed in several stages:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#deployment-of-a-ibax-network"}},[t._v("Deployment of A IBAX Network")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#an-deployment-example"}},[t._v("An deployment example")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#deploy-phase"}},[t._v("Deploy phase")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#server-deployment"}},[t._v("Server deployment")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#deploy-the-first-node"}},[t._v("Deploy the first node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#sudo"}},[t._v("sudo")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#golang"}},[t._v("Golang")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#postgresql"}},[t._v("PostgreSQL")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#directory-structure"}},[t._v("Directory structure")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create a database")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-centrifugo"}},[t._v("Configure Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-first-node"}},[t._v("Configure the first node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#initiate-the-first-node-server"}},[t._v("Initiate the first node server")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#deploy-other-nodes"}},[t._v("Deploy other nodes")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#node-2"}},[t._v("Node 2")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#node-3"}},[t._v("Node 3")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#front-end-deployment"}},[t._v("Front-end deployment")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#software-prerequisites"}},[t._v("Software prerequisites")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#build-a-weaver-application"}},[t._v("Build a Weaver application")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-the-configuration-file-for-the-blockchain-network"}},[t._v("Add the configuration file for the blockchain network")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#build-weaver-web-application"}},[t._v("Build Weaver Web Application")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-blockchain-network"}},[t._v("Configure the blockchain network")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#create-the-creator-account"}},[t._v("Create the creator account")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#import-applications-roles-and-templates"}},[t._v("Import applications, roles and templates")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-the-first-node-to-the-node-list"}},[t._v("Add the first node to the node list")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-other-honor-nodes"}},[t._v("Add other honor nodes")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#add-members-into-the-consensus-role-group"}},[t._v("Add members into the consensus role group")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-the-owner-account-for-other-nodes"}},[t._v("Create the owner account for other nodes")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#assign-the-node-owner-with-the-validators-role"}},[t._v("Assign the node owner with the Validators role")])])])])])])]),t._v(" "),a("h2",{attrs:{id:"server-deployment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-deployment"}},[t._v("#")]),t._v(" Server deployment")]),t._v(" "),a("h3",{attrs:{id:"deploy-the-first-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-the-first-node"}},[t._v("#")]),t._v(" Deploy the first node")]),t._v(" "),a("p",[t._v("The first node is a special one because it is essential to launch the blockchain network. The first block of the blockchain is generated by the first node, and all other nodes would download the blockchain from it. The owner of the first node is the platform creator.")]),t._v(" "),a("h3",{attrs:{id:"dependencies-and-environment-settings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependencies-and-environment-settings"}},[t._v("#")]),t._v(" Dependencies and environment settings")]),t._v(" "),a("h4",{attrs:{id:"sudo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sudo"}},[t._v("#")]),t._v(" sudo")]),t._v(" "),a("p",[t._v("All commands of Debian 9 must be run as a non-root user. However, some system commands require super user permissions to execute. By default, sudo is not installed on Debian 9, you must install it first.")]),t._v(" "),a("ol",[a("li",[t._v("Become a super user.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("su")]),t._v(" -\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Upgrade your system.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" upgrade -y "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" dist-upgrade -y\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Install sudo。")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -y\n")])])]),a("ol",{attrs:{start:"4"}},[a("li",[t._v("Add your user to the sudo group.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("usermod")]),t._v(" -a -G "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" user\n")])])]),a("ol",{attrs:{start:"5"}},[a("li",[t._v("After restarting, the changes take effect.")])]),t._v(" "),a("h3",{attrs:{id:"golang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#golang"}},[t._v("#")]),t._v(" Golang")]),t._v(" "),a("p",[t._v("Install Go according to the "),a("a",{attrs:{href:"https://golang.org/doc/install#tarball",target:"_blank",rel:"noopener noreferrer"}},[t._v("Official Documents"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("ol",[a("li",[t._v("Download the latest stable version of Go (> 1.10.x) from "),a("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Golang official website"),a("OutboundLink")],1),t._v(" or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Use tar to extract the tarball to the "),a("code",[t._v("/usr/local")]),t._v(" directory.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("tar")]),t._v(" -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Add "),a("code",[t._v("/usr/local/go/bin")]),t._v(" to PATH environment variables (located at "),a("code",[t._v("/etc/profile")]),t._v(" or "),a("code",[t._v("$HOME/.profile")]),t._v(").")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("PATH")])]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$PATH")]),t._v(":/usr/local/go/bin\n")])])]),a("ol",[a("li",[t._v("Execute the "),a("code",[t._v("source")]),t._v(" file to make the changes take effect, for example:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("source")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$HOME")]),t._v("/.profile\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Delete temporary files:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" go1.11.2.linux-amd64.tar.gz\n")])])]),a("h3",{attrs:{id:"postgresql"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#postgresql"}},[t._v("#")]),t._v(" PostgreSQL")]),t._v(" "),a("ol",[a("li",[t._v("Install PostgreSQL (> v.10) and psql:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y postgresql\n")])])]),a("h3",{attrs:{id:"centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#centrifugo"}},[t._v("#")]),t._v(" Centrifugo")]),t._v(" "),a("ol",[a("li",[t._v("Download Centrifugo V.1.8.0 from "),a("a",{attrs:{href:"https://github.com/centrifugal/centrifugo/releases/",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub"),a("OutboundLink")],1),t._v(" or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://github.com/centrifugal/centrifugo/releases/download/v1.8.0/centrifugo-1.8.0-linux-amd64.zip "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("unzip")]),t._v(" centrifugo-1.8.0-linux-amd64.zip "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mv")]),t._v(" centrifugo-1.8.0-linux-amd64/* centrifugo/\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Delete temporary files:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" -R centrifugo-1.8.0-linux-amd64 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" centrifugo-1.8.0-linux-amd64.zip\n")])])]),a("h3",{attrs:{id:"directory-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#directory-structure"}},[t._v("#")]),t._v(" Directory structure")]),t._v(" "),a("p",[t._v("For the Debian 9 system, it is recommended to store all software used by the blockchain platform in a separate directory.")]),t._v(" "),a("p",[t._v("The "),a("code",[t._v("/opt/backenddir")]),t._v(" directory is used here, but you can use any directory. In this case, please change all commands and configuration files accordingly.")]),t._v(" "),a("ol",[a("li",[t._v("Create a directory for the blockchain platform:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Make your user the owner of the directory:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("chown")]),t._v(" user /opt/backenddir/\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Create subdirectories for Centrifugo, go-ibax and node data. All node data is stored in a directory named "),a("code",[t._v("nodeX")]),t._v(", where "),a("code",[t._v("X")]),t._v(" is the node number. According to the node to be deployed, "),a("code",[t._v("node1")]),t._v(" is Node 1, "),a("code",[t._v("node2")]),t._v(" is Node 2, and so forth.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/go-ibax "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/go-ibax/node1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n")])])]),a("h3",{attrs:{id:"create-a-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-database"}},[t._v("#")]),t._v(" Create a database")]),t._v(" "),a("ol",[a("li",[t._v("Change the user password postgres to the default password "),a("em",[t._v("123456")]),t._v(". You can set your own password, but you must change it in the node configuration file "),a("em",[t._v("config.toml")]),t._v(".")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -u postgres psql -c "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"ALTER USER postgres WITH PASSWORD '123456'\"")]),t._v("\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Create a current state database for the node, for example "),a("strong",[t._v("chaindb")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -u postgres psql -c "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CREATE DATABASE chaindb"')]),t._v("\n")])])]),a("h3",{attrs:{id:"configure-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-centrifugo"}},[t._v("#")]),t._v(" Configure Centrifugo")]),t._v(" "),a("ol",[a("li",[t._v("Create the Centrifugo configuration file:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'{"secret":"CENT_SECRET"}\'')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" /opt/backenddir/centrifugo/config.json\n")])])]),a("p",[t._v("You can set your own "),a("em",[t._v("secret")]),t._v(", but you must also change it in the node configuration file "),a("em",[t._v("config.toml")]),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"install-go-ibax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-go-ibax"}},[t._v("#")]),t._v(" Install go-ibax")]),t._v(" "),a("ol",[a("li",[t._v("Download github-backend from GitHub:")]),t._v(" "),a("li",[t._v("Copy the go-ibax binary file to the "),a("code",[t._v("/opt/backenddir/go-ibax")]),t._v(" directory. If you are using default Go workspace, the binary files are located in the "),a("code",[t._v("$HOME/go/bin")]),t._v(" directory:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("cp")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$HOME")]),t._v("/go/bin/go-ibax /opt/backenddir/go-ibax\n")])])]),a("h3",{attrs:{id:"configure-the-first-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-first-node"}},[t._v("#")]),t._v(" Configure the first node")]),t._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Create the configuration file for Node 1:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.1:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v("\n")])])]),a("ol",{attrs:{start:"4"}},[a("li",[t._v("Generate the keys of Node 1, including the public and private keys of the node and the account:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("ol",{attrs:{start:"5"}},[a("li",[t._v("Generate the first block:")])]),t._v(" "),a("blockquote",[a("p",[t._v("Note")]),t._v(" "),a("p",[t._v("If you want to create your own blockchain network, you must use the "),a("code",[t._v("--test=true")]),t._v(" option. Otherwise, you cannot create a new account.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax generateFirstBlock "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --test"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("true\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Initialize the database:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax initDatabase "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("h3",{attrs:{id:"initiate-the-first-node-server"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initiate-the-first-node-server"}},[t._v("#")]),t._v(" Initiate the first node server")]),t._v(" "),a("p",[t._v("To start the first node server, you must start the following two services:")]),t._v(" "),a("ul",[a("li",[t._v("centrifugo")]),t._v(" "),a("li",[t._v("go-ibax")])]),t._v(" "),a("p",[t._v("If you failed to create "),a("a",{attrs:{href:"#https://wiki.debian.org/systemd/Services"}},[t._v("services")]),t._v(" with these files, you may execute binary files from directories in different consoles.")]),t._v(" "),a("ol",[a("li",[t._v("Run centrifugo:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n -a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config /opt/backenddir/centrifugo/config.json\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Run go-ibax:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("h2",{attrs:{id:"deploy-other-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-other-nodes"}},[t._v("#")]),t._v(" Deploy other nodes")]),t._v(" "),a("p",[t._v("Although the deployment of all other nodes (Node 2 and Node 3) is similar to the first, but there are three differences:")]),t._v(" "),a("ul",[a("li",[t._v("You do not need to generate the first block. But it must be copied from Node 1 to the current node data directory;")]),t._v(" "),a("li",[t._v("The node must download blocks from Node 1 by configuring the "),a("code",[t._v("--nodesAddr")]),t._v(" option;")]),t._v(" "),a("li",[t._v("The node must use its own addresses and ports.")])]),t._v(" "),a("h3",{attrs:{id:"node-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-2"}},[t._v("#")]),t._v(" Node 2")]),t._v(" "),a("p",[t._v("Follow operational instructions as shown below:")]),t._v(" "),a("ol",[a("li",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create database")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])]),t._v(" "),a("li",[t._v("Create the configuration file for Node 2:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.2:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--nodesAddr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Copy the first block file to Node 2. For example, you can perform this operation on Node 2 throughscp:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("scp")]),t._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node2/\n")])])]),a("ol",{attrs:{start:"7"}},[a("li",[t._v("Generate the keys of Node 2, including the public and private keys of the node and the account:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2/config.toml\n")])])]),a("ol",{attrs:{start:"8"}},[a("li",[t._v("Initiate the database:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" ./go-ibax initDatabase --config"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("node2/config.toml\n")])])]),a("ol",{attrs:{start:"9"}},[a("li",[t._v("Run centrifugo:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n-a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),a("ol",{attrs:{start:"10"}},[a("li",[t._v("Run go-ibax:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2/config.toml\n")])])]),a("p",[t._v("As a result, the node downloads the block from the first node. As this node is not a verification node, it cannot generate a new block. Node 2 will be added to the list of verification nodes later.")]),t._v(" "),a("h3",{attrs:{id:"node-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-3"}},[t._v("#")]),t._v(" Node 3")]),t._v(" "),a("p",[t._v("Follow operational instructions as shown below:")]),t._v(" "),a("ol",[a("li",[a("p",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create database")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])])]),t._v(" "),a("li",[a("p",[t._v("Create the configuration file for Node 3:")])])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.3:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--nodesAddr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Copy the first block file to Node 3. For example, you can perform this operation on Node 3 through scp:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("scp")]),t._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node3/\n")])])]),a("p",[t._v("7.Generate the key of Node 3, including the public and private keys of the node and the account:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3/config.toml\n")])])]),a("p",[t._v("8.Initiate the database:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" ./go-ibax initDatabase --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("node3/config.toml\n")])])]),a("p",[t._v("9.Run centrifugo:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n-a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),a("p",[t._v("10.Run go-ibax:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3/config.toml\n")])])]),a("p",[t._v("As a result, the node downloads the block from the first node. As this node is not a verification node, it cannot generate a new block. The client may be connected to the node, and it may send transactions to the network.")]),t._v(" "),a("h2",{attrs:{id:"front-end-deployment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#front-end-deployment"}},[t._v("#")]),t._v(" Front-end deployment")]),t._v(" "),a("p",[t._v("Only after installing "),a("strong",[t._v("GNOME GUI")]),t._v(" on Debian 9 (Stretch) 64-bit Official Release, the Govis client can be built with the "),a("code",[t._v("yarn")]),t._v(" package manager.")]),t._v(" "),a("h3",{attrs:{id:"software-prerequisites"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#software-prerequisites"}},[t._v("#")]),t._v(" Software prerequisites")]),t._v(" "),a("ol",[a("li",[t._v("Download Node.js LTS version 8.11 from Node.js official website or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -sL https://deb.nodesource.com/setup_8.x "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -E "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("bash")]),t._v("\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Node.js:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y nodejs\n")])])]),a("ol",[a("li",[t._v("Download Yarn version 1.7.0 from yarn's "),a("a",{attrs:{href:"https://github.com/yarnpkg/yarn/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github"),a("OutboundLink")],1),t._v(" repository or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://github.com/yarnpkg/yarn/releases/download/v1.7.0/yarn_1.7.0_all.deb\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Yarn:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" dpkg -i yarn_1.7.0_all.deb "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" yarn_1.7.0_all.deb\n")])])]),a("h3",{attrs:{id:"build-a-weaver-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-a-weaver-application"}},[t._v("#")]),t._v(" Build a Weaver application")]),t._v(" "),a("ol",[a("li",[t._v("Download the latest version of Weaver from github-frontend via git:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/ibax-io/ibax-front.git\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Weaver dependencies via Yarn:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front/ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v("\n")])])]),a("h3",{attrs:{id:"add-the-configuration-file-for-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-configuration-file-for-the-blockchain-network"}},[t._v("#")]),t._v(" Add the configuration file for the blockchain network")]),t._v(" "),a("ol",[a("li",[t._v("Create a "),a("em",[t._v("settings.json")]),t._v(" file that contains information about node connection:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cp/opt/backenddir/ibax-front/public/settings.json.dist "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n /opt/backenddir/ibax-front/public/public/settings.json\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Edit the "),a("em",[t._v("settings.json")]),t._v(" file in any text editor and add the required settings in this format:")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("http://Node_IP-address:Node_HTTP-Port\n")])])]),a("p",[t._v("Examples of "),a("em",[t._v("settings.json")]),t._v(" files for the three nodes:")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"fullNodes"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.1:7079"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.2:7079"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.3:7079"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Build Weaver Desktop Application")]),t._v(" "),a("p",[t._v("1.Use yarn to build the desktop version:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" build-desktop\n")])])]),a("p",[t._v("2.The desktop version will be packaged into AppImage suffix format:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" release --publish never -l\n")])])]),a("p",[t._v("After building, your application can be used, but its connection configuration cannot be changed. If these settings need to be changed, a new version of the application must be built.")]),t._v(" "),a("h3",{attrs:{id:"build-weaver-web-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-weaver-web-application"}},[t._v("#")]),t._v(" Build Weaver Web Application")]),t._v(" "),a("p",[t._v("1.Build a web application:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front/ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" build\n")])])]),a("p",[t._v("After building, the redistributable files will be placed in the /build directory. You can use any web server of your choice for deployment, and the "),a("em",[t._v("settings.json")]),t._v(" file must also be placed in this directory. Note that if the connection settings are changed, there is no need to build the application again. Instead, edit the "),a("em",[t._v("settings.json")]),t._v(" file and restart the web server.")]),t._v(" "),a("p",[t._v("1.For development or testing purposes, you can build Yarn's web server:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" global "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" serve "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" serve -s build\n")])])]),a("p",[t._v("After that, your Weaver web application will be available at the following location: "),a("code",[t._v("http://localhost:5000")]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"configure-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-blockchain-network"}},[t._v("#")]),t._v(" Configure the blockchain network")]),t._v(" "),a("h3",{attrs:{id:"create-the-creator-account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-the-creator-account"}},[t._v("#")]),t._v(" Create the creator account")]),t._v(" "),a("p",[t._v("Create an account for the first node owner. This account is the creator of the new blockchain platform and has the administrator access.")]),t._v(" "),a("p",[t._v("1.Run Weaver;")]),t._v(" "),a("p",[t._v("2.Import the existing account using the following data:")]),t._v(" "),a("p",[t._v("–Load the backup of the node owner's private key located in the "),a("code",[t._v("/opt/backenddir/node1/PrivateKey")]),t._v(" file.")]),t._v(" "),a("blockquote",[a("p",[t._v("Note")]),t._v(" "),a("p",[t._v("There are two private key files in this directory. The "),a("code",[t._v("PrivateKey")]),t._v(" file is used create the node owner's account. The "),a("code",[t._v("NodePrivateKey")]),t._v(" file is the private key of the node itself and must be kept secret.")])]),t._v(" "),a("p",[t._v("3.After logging in to the account, since no role has been created at this time, please select the Without role option.")]),t._v(" "),a("h3",{attrs:{id:"import-applications-roles-and-templates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#import-applications-roles-and-templates"}},[t._v("#")]),t._v(" Import applications, roles and templates")]),t._v(" "),a("p",[t._v("At this time, the blockchain platform is in a blank state. You can configure it by adding roles, templates, and application frameworks that support basic ecosystem functions.")]),t._v(" "),a("p",[t._v("1.Clone the application repository;")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/ibax-io/dapps.git\n")])])]),a("p",[t._v("2.Navigate to Developer> Import in Weaver;")]),t._v(" "),a("p",[t._v("3.Import applications as per the following order:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v(" A./opt/backenddir/dapps/system.json \n B./opt/backenddir/dapps/conditions.json \n C./opt/backenddir/dapps/basic.json \n D./opt/backenddir/dapps/lang_res.json\n")])])]),a("p",[t._v("4.Navigate to Admin> Role, and click Install Default Role;")]),t._v(" "),a("p",[t._v("5.Exit the system through the configuration file menu in the upper right corner;")]),t._v(" "),a("p",[t._v("6.Log in to the system as Admin;")]),t._v(" "),a("p",[t._v("7.Navigate to Home> Vote> Template List, and click Install Default Template.")]),t._v(" "),a("h3",{attrs:{id:"add-the-first-node-to-the-node-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-first-node-to-the-node-list"}},[t._v("#")]),t._v(" Add the first node to the node list")]),t._v(" "),a("p",[t._v("1.Navigate to Developer> Platform Parameters, and click the first_nodes parameter;")]),t._v(" "),a("p",[t._v("2.Specify the parameters of the first blockchain network node.")]),t._v(" "),a("ul",[a("li",[t._v("public_key - The public key of the node is located in the "),a("code",[t._v("/opt/backenddir/node1/NodePublicKey")]),t._v(" file;")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('{"api_address":"http://192.168.1.1:7079","public_key":"%node_public_key%","tcp_address":"192.168.1.1:7078"}\n')])])]),a("h2",{attrs:{id:"add-other-honor-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-other-honor-nodes"}},[t._v("#")]),t._v(" Add other honor nodes")]),t._v(" "),a("h3",{attrs:{id:"add-members-into-the-consensus-role-group"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-members-into-the-consensus-role-group"}},[t._v("#")]),t._v(" Add members into the consensus role group")]),t._v(" "),a("p",[t._v("By default, only members in the consensus role (Consensus) group can participate in the voting required to add other master nodes. This means that before adding a new master node, members of the ecosystem must be assigned to the role.\nIn this section, the creator's account is designated as the only member of the consensus role group. In a production environment, this role must be assigned to platform members that perform governance.")]),t._v(" "),a("p",[t._v("1.Navigate to Home> Role and click Consensus;")]),t._v(" "),a("p",[t._v("2.Click Assign to assign the creator's account to the role.")]),t._v(" "),a("h3",{attrs:{id:"create-the-owner-account-for-other-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-the-owner-account-for-other-nodes"}},[t._v("#")]),t._v(" Create the owner account for other nodes")]),t._v(" "),a("ol",[a("li",[a("p",[t._v("Run Weaver;")])]),t._v(" "),a("li",[a("p",[t._v("Import the existing account using the following data:\n– Load the backup of the node owner's private key located in the "),a("code",[t._v("/opt/backenddir/node2/PrivateKey")]),t._v(" file.")])]),t._v(" "),a("li",[a("p",[t._v("After logging in to the account, since no role has been created at this time, please select the Without role option.")])]),t._v(" "),a("li",[a("p",[t._v("Navigate to Home> Personal Information, and click the title of the personal information;")])]),t._v(" "),a("li",[a("p",[t._v("Add account details (personal information title, description, etc.).")])])]),t._v(" "),a("h3",{attrs:{id:"assign-the-node-owner-with-the-validators-role"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#assign-the-node-owner-with-the-validators-role"}},[t._v("#")]),t._v(" Assign the node owner with the Validators role")]),t._v(" "),a("ol",[a("li",[t._v("Operations by the new node owner:\n"),a("ol",[a("li",[t._v("Navigate to Home> Verifier;")]),t._v(" "),a("li",[t._v("Click Create Request and fill in the application form of the verifier candidate;")]),t._v(" "),a("li",[t._v("Click send request.")])])]),t._v(" "),a("li",[t._v("Operations by the creator:\n"),a("ol",[a("li",[t._v("Log in with a consensus role (Consensus);")]),t._v(" "),a("li",[t._v("Navigate to Home> Verifier;")]),t._v(" "),a("li",[t._v('Click the "Play" icon to start voting according to the candidate\'s request;')]),t._v(" "),a("li",[t._v("Navigate to Home> Vote, and click Update voting status;")]),t._v(" "),a("li",[t._v("Click the voting name and vote for the node owner.")])])])]),t._v(" "),a("p",[t._v("As a result, the account of the owner of the new node is assigned with the Validator role, and the new node is added to the list of master nodes.")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{447:function(t,e,a){"use strict";a.r(e);var s=a(51),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"deployment-of-a-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deployment-of-a-ibax-network"}},[t._v("#")]),t._v(" Deployment of A IBAX Network")]),t._v(" "),a("p",[t._v("In this section, we will show you how to deploy your own blockchain network.")]),t._v(" "),a("h2",{attrs:{id:"an-deployment-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#an-deployment-example"}},[t._v("#")]),t._v(" An deployment example")]),t._v(" "),a("p",[t._v("A blockchain network will be deployed with the following three nodes as an example.")]),t._v(" "),a("p",[t._v("Three network nodes:")]),t._v(" "),a("ul",[a("li",[t._v("Node 1 is the first node in the blockchain network, which can generate new blocks and send transactions from clients connected to it;")]),t._v(" "),a("li",[t._v("Node 2 is another honor node, which can generate new blocks and send transactions from clients connected to it;")]),t._v(" "),a("li",[t._v("Node 3 is a guardian node, which cannot generate new blocks, but can send transactions from clients connected to it.")])]),t._v(" "),a("p",[t._v("Configurations of the three nodes to be deployed:")]),t._v(" "),a("ul",[a("li",[t._v("Each node uses its own PostgreSQL database system instance;")]),t._v(" "),a("li",[t._v("Each node uses its own Centrifugo service instance;")]),t._v(" "),a("li",[t._v("The server side github-backend is deployed on the same host as other backend components.")])]),t._v(" "),a("p",[t._v("The sample addresses and ports used by the nodes are described in the following table:")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("Node")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("Component")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("IP & port")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("1")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.1:7079")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("2")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.2:7079")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("PostgreSQL")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("127.0.0.1:5432")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Centrifugo")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:8000")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (TCP service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:7078")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("3")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("go-ibax (API service)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("192.168.1.3:7079")])])])]),t._v(" "),a("h2",{attrs:{id:"deploy-phase"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-phase"}},[t._v("#")]),t._v(" Deploy phase")]),t._v(" "),a("p",[t._v("Your own blockchain network must be deployed in several stages:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#deployment-of-a-ibax-network"}},[t._v("Deployment of A IBAX Network")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#an-deployment-example"}},[t._v("An deployment example")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#deploy-phase"}},[t._v("Deploy phase")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#server-deployment"}},[t._v("Server deployment")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#deploy-the-first-node"}},[t._v("Deploy the first node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#sudo"}},[t._v("sudo")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#golang"}},[t._v("Golang")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#postgresql"}},[t._v("PostgreSQL")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#directory-structure"}},[t._v("Directory structure")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create a database")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-centrifugo"}},[t._v("Configure Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-first-node"}},[t._v("Configure the first node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#initiate-the-first-node-server"}},[t._v("Initiate the first node server")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#deploy-other-nodes"}},[t._v("Deploy other nodes")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#node-2"}},[t._v("Node 2")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#node-3"}},[t._v("Node 3")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#front-end-deployment"}},[t._v("Front-end deployment")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#software-prerequisites"}},[t._v("Software prerequisites")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#build-a-weaver-application"}},[t._v("Build a Weaver application")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-the-configuration-file-for-the-blockchain-network"}},[t._v("Add the configuration file for the blockchain network")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#build-weaver-web-application"}},[t._v("Build Weaver Web Application")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#configure-the-blockchain-network"}},[t._v("Configure the blockchain network")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#create-the-creator-account"}},[t._v("Create the creator account")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#import-applications-roles-and-templates"}},[t._v("Import applications, roles and templates")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-the-first-node-to-the-node-list"}},[t._v("Add the first node to the node list")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#add-other-honor-nodes"}},[t._v("Add other honor nodes")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#add-members-into-the-consensus-role-group"}},[t._v("Add members into the consensus role group")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-the-owner-account-for-other-nodes"}},[t._v("Create the owner account for other nodes")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#assign-the-node-owner-with-the-validators-role"}},[t._v("Assign the node owner with the Validators role")])])])])])])]),t._v(" "),a("h2",{attrs:{id:"server-deployment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-deployment"}},[t._v("#")]),t._v(" Server deployment")]),t._v(" "),a("h3",{attrs:{id:"deploy-the-first-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-the-first-node"}},[t._v("#")]),t._v(" Deploy the first node")]),t._v(" "),a("p",[t._v("The first node is a special one because it is essential to launch the blockchain network. The first block of the blockchain is generated by the first node, and all other nodes would download the blockchain from it. The owner of the first node is the platform creator.")]),t._v(" "),a("h3",{attrs:{id:"dependencies-and-environment-settings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependencies-and-environment-settings"}},[t._v("#")]),t._v(" Dependencies and environment settings")]),t._v(" "),a("h4",{attrs:{id:"sudo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sudo"}},[t._v("#")]),t._v(" sudo")]),t._v(" "),a("p",[t._v("All commands of Debian 9 must be run as a non-root user. However, some system commands require super user permissions to execute. By default, sudo is not installed on Debian 9, you must install it first.")]),t._v(" "),a("ol",[a("li",[t._v("Become a super user.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("su")]),t._v(" -\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Upgrade your system.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" upgrade -y "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" dist-upgrade -y\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Install sudo。")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -y\n")])])]),a("ol",{attrs:{start:"4"}},[a("li",[t._v("Add your user to the sudo group.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("usermod")]),t._v(" -a -G "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" user\n")])])]),a("ol",{attrs:{start:"5"}},[a("li",[t._v("After restarting, the changes take effect.")])]),t._v(" "),a("h3",{attrs:{id:"golang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#golang"}},[t._v("#")]),t._v(" Golang")]),t._v(" "),a("p",[t._v("Install Go according to the "),a("a",{attrs:{href:"https://golang.org/doc/install#tarball",target:"_blank",rel:"noopener noreferrer"}},[t._v("Official Documents"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("ol",[a("li",[t._v("Download the latest stable version of Go (> 1.10.x) from "),a("a",{attrs:{href:"https://golang.org/dl/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Golang official website"),a("OutboundLink")],1),t._v(" or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Use tar to extract the tarball to the "),a("code",[t._v("/usr/local")]),t._v(" directory.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("tar")]),t._v(" -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Add "),a("code",[t._v("/usr/local/go/bin")]),t._v(" to PATH environment variables (located at "),a("code",[t._v("/etc/profile")]),t._v(" or "),a("code",[t._v("$HOME/.profile")]),t._v(").")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("PATH")])]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$PATH")]),t._v(":/usr/local/go/bin\n")])])]),a("ol",[a("li",[t._v("Execute the "),a("code",[t._v("source")]),t._v(" file to make the changes take effect, for example:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("source")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$HOME")]),t._v("/.profile\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Delete temporary files:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" go1.11.2.linux-amd64.tar.gz\n")])])]),a("h3",{attrs:{id:"postgresql"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#postgresql"}},[t._v("#")]),t._v(" PostgreSQL")]),t._v(" "),a("ol",[a("li",[t._v("Install PostgreSQL (> v.10) and psql:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y postgresql\n")])])]),a("h3",{attrs:{id:"centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#centrifugo"}},[t._v("#")]),t._v(" Centrifugo")]),t._v(" "),a("ol",[a("li",[t._v("Download Centrifugo V.1.8.0 from "),a("a",{attrs:{href:"https://github.com/centrifugal/centrifugo/releases/",target:"_blank",rel:"noopener noreferrer"}},[t._v("GitHub"),a("OutboundLink")],1),t._v(" or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://github.com/centrifugal/centrifugo/releases/download/v1.8.0/centrifugo-1.8.0-linux-amd64.zip "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("unzip")]),t._v(" centrifugo-1.8.0-linux-amd64.zip "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mv")]),t._v(" centrifugo-1.8.0-linux-amd64/* centrifugo/\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Delete temporary files:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" -R centrifugo-1.8.0-linux-amd64 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" centrifugo-1.8.0-linux-amd64.zip\n")])])]),a("h3",{attrs:{id:"directory-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#directory-structure"}},[t._v("#")]),t._v(" Directory structure")]),t._v(" "),a("p",[t._v("For the Debian 9 system, it is recommended to store all software used by the blockchain platform in a separate directory.")]),t._v(" "),a("p",[t._v("The "),a("code",[t._v("/opt/backenddir")]),t._v(" directory is used here, but you can use any directory. In this case, please change all commands and configuration files accordingly.")]),t._v(" "),a("ol",[a("li",[t._v("Create a directory for the blockchain platform:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Make your user the owner of the directory:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("chown")]),t._v(" user /opt/backenddir/\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Create subdirectories for Centrifugo, go-ibax and node data. All node data is stored in a directory named "),a("code",[t._v("nodeX")]),t._v(", where "),a("code",[t._v("X")]),t._v(" is the node number. According to the node to be deployed, "),a("code",[t._v("node1")]),t._v(" is Node 1, "),a("code",[t._v("node2")]),t._v(" is Node 2, and so forth.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/go-ibax "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/go-ibax/node1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("mkdir")]),t._v(" /opt/backenddir/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n")])])]),a("h3",{attrs:{id:"create-a-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-database"}},[t._v("#")]),t._v(" Create a database")]),t._v(" "),a("ol",[a("li",[t._v("Change the user password postgres to the default password "),a("em",[t._v("123456")]),t._v(". You can set your own password, but you must change it in the node configuration file "),a("em",[t._v("config.toml")]),t._v(".")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -u postgres psql -c "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"ALTER USER postgres WITH PASSWORD '123456'\"")]),t._v("\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Create a current state database for the node, for example "),a("strong",[t._v("chaindb")]),t._v(":")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -u postgres psql -c "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CREATE DATABASE chaindb"')]),t._v("\n")])])]),a("h3",{attrs:{id:"configure-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-centrifugo"}},[t._v("#")]),t._v(" Configure Centrifugo")]),t._v(" "),a("ol",[a("li",[t._v("Create the Centrifugo configuration file:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('\'{"secret":"CENT_SECRET"}\'')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" /opt/backenddir/centrifugo/config.json\n")])])]),a("p",[t._v("You can set your own "),a("em",[t._v("secret")]),t._v(", but you must also change it in the node configuration file "),a("em",[t._v("config.toml")]),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"install-go-ibax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-go-ibax"}},[t._v("#")]),t._v(" Install go-ibax")]),t._v(" "),a("ol",[a("li",[t._v("Download github-backend from GitHub:")]),t._v(" "),a("li",[t._v("Copy the go-ibax binary file to the "),a("code",[t._v("/opt/backenddir/go-ibax")]),t._v(" directory. If you are using default Go workspace, the binary files are located in the "),a("code",[t._v("$HOME/go/bin")]),t._v(" directory:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("cp")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token environment constant"}},[t._v("$HOME")]),t._v("/go/bin/go-ibax /opt/backenddir/go-ibax\n")])])]),a("h3",{attrs:{id:"configure-the-first-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-first-node"}},[t._v("#")]),t._v(" Configure the first node")]),t._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Create the configuration file for Node 1:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.1:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v("\n")])])]),a("ol",{attrs:{start:"4"}},[a("li",[t._v("Generate the keys of Node 1, including the public and private keys of the node and the account:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("ol",{attrs:{start:"5"}},[a("li",[t._v("Generate the first block:")])]),t._v(" "),a("blockquote",[a("p",[t._v("Note")]),t._v(" "),a("p",[t._v("If you want to create your own blockchain network, you must use the "),a("code",[t._v("--test=true")]),t._v(" option. Otherwise, you cannot create a new account.")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax generateFirstBlock "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --test"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("true\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Initialize the database:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax initDatabase "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("h3",{attrs:{id:"initiate-the-first-node-server"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initiate-the-first-node-server"}},[t._v("#")]),t._v(" Initiate the first node server")]),t._v(" "),a("p",[t._v("To start the first node server, you must start the following two services:")]),t._v(" "),a("ul",[a("li",[t._v("centrifugo")]),t._v(" "),a("li",[t._v("go-ibax")])]),t._v(" "),a("p",[t._v("If you failed to create "),a("a",{attrs:{href:"#https://wiki.debian.org/systemd/Services"}},[t._v("services")]),t._v(" with these files, you may execute binary files from directories in different consoles.")]),t._v(" "),a("ol",[a("li",[t._v("Run centrifugo:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n -a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config /opt/backenddir/centrifugo/config.json\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Run go-ibax:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node1/config.toml\n")])])]),a("h2",{attrs:{id:"deploy-other-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deploy-other-nodes"}},[t._v("#")]),t._v(" Deploy other nodes")]),t._v(" "),a("p",[t._v("Although the deployment of all other nodes (Node 2 and Node 3) is similar to the first, but there are three differences:")]),t._v(" "),a("ul",[a("li",[t._v("You do not need to generate the first block. But it must be copied from Node 1 to the current node data directory;")]),t._v(" "),a("li",[t._v("The node must download blocks from Node 1 by configuring the "),a("code",[t._v("--nodesAddr")]),t._v(" option;")]),t._v(" "),a("li",[t._v("The node must use its own addresses and ports.")])]),t._v(" "),a("h3",{attrs:{id:"node-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-2"}},[t._v("#")]),t._v(" Node 2")]),t._v(" "),a("p",[t._v("Follow operational instructions as shown below:")]),t._v(" "),a("ol",[a("li",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create database")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])]),t._v(" "),a("li",[t._v("Create the configuration file for Node 2:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.2:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--nodesAddr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Copy the first block file to Node 2. For example, you can perform this operation on Node 2 throughscp:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("scp")]),t._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node2/\n")])])]),a("ol",{attrs:{start:"7"}},[a("li",[t._v("Generate the keys of Node 2, including the public and private keys of the node and the account:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2/config.toml\n")])])]),a("ol",{attrs:{start:"8"}},[a("li",[t._v("Initiate the database:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" ./go-ibax initDatabase --config"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("node2/config.toml\n")])])]),a("ol",{attrs:{start:"9"}},[a("li",[t._v("Run centrifugo:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n-a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.2 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),a("ol",{attrs:{start:"10"}},[a("li",[t._v("Run go-ibax:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("/opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node2/config.toml\n")])])]),a("p",[t._v("As a result, the node downloads the block from the first node. As this node is not a verification node, it cannot generate a new block. Node 2 will be added to the list of verification nodes later.")]),t._v(" "),a("h3",{attrs:{id:"node-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#node-3"}},[t._v("#")]),t._v(" Node 3")]),t._v(" "),a("p",[t._v("Follow operational instructions as shown below:")]),t._v(" "),a("ol",[a("li",[a("p",[a("a",{attrs:{href:"#dependencies-and-environment-settings"}},[t._v("Dependencies and environment settings")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#create-a-database"}},[t._v("Create database")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#centrifugo"}},[t._v("Centrifugo")])])]),t._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#install-go-ibax"}},[t._v("Install go-ibax")])])]),t._v(" "),a("li",[a("p",[t._v("Create the configuration file for Node 3:")])])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax config "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dataDir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--dbName"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("chaindb "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--centSecret"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CENT_SECRET"')]),t._v(" --centUrl"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http://192.168.1.3:8000 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--httpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7079")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpHost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--tcpPort"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("7078")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--nodesAddr"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.1\n")])])]),a("ol",{attrs:{start:"6"}},[a("li",[t._v("Copy the first block file to Node 3. For example, you can perform this operation on Node 3 through scp:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("scp")]),t._v(" user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node3/\n")])])]),a("p",[t._v("7.Generate the key of Node 3, including the public and private keys of the node and the account:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax generateKeys "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3/config.toml\n")])])]),a("p",[t._v("8.Initiate the database:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" ./go-ibax initDatabase --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("node3/config.toml\n")])])]),a("p",[t._v("9.Run centrifugo:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/centrifugo/centrifugo "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n-a "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("192.168")]),t._v(".1.3 -p "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8000")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n--config/opt/backenddir/centrifugo/config.json\n")])])]),a("p",[t._v("10.Run go-ibax:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v(" /opt/backenddir/go-ibax start "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/opt/backenddir/node3/config.toml\n")])])]),a("p",[t._v("As a result, the node downloads the block from the first node. As this node is not a verification node, it cannot generate a new block. The client may be connected to the node, and it may send transactions to the network.")]),t._v(" "),a("h2",{attrs:{id:"front-end-deployment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#front-end-deployment"}},[t._v("#")]),t._v(" Front-end deployment")]),t._v(" "),a("p",[t._v("Only after installing "),a("strong",[t._v("GNOME GUI")]),t._v(" on Debian 9 (Stretch) 64-bit Official Release, the Govis client can be built with the "),a("code",[t._v("yarn")]),t._v(" package manager.")]),t._v(" "),a("h3",{attrs:{id:"software-prerequisites"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#software-prerequisites"}},[t._v("#")]),t._v(" Software prerequisites")]),t._v(" "),a("ol",[a("li",[t._v("Download Node.js LTS version 8.11 from Node.js official website or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -sL https://deb.nodesource.com/setup_8.x "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" -E "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("bash")]),t._v("\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Node.js:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y nodejs\n")])])]),a("ol",[a("li",[t._v("Download Yarn version 1.7.0 from yarn's "),a("a",{attrs:{href:"https://github.com/yarnpkg/yarn/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github"),a("OutboundLink")],1),t._v(" repository or through the command line:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("wget")]),t._v(" https://github.com/yarnpkg/yarn/releases/download/v1.7.0/yarn_1.7.0_all.deb\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Yarn:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" dpkg -i yarn_1.7.0_all.deb "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("rm")]),t._v(" yarn_1.7.0_all.deb\n")])])]),a("h3",{attrs:{id:"build-a-weaver-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-a-weaver-application"}},[t._v("#")]),t._v(" Build a Weaver application")]),t._v(" "),a("ol",[a("li",[t._v("Download the latest version of Weaver from github-frontend via git:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/ibax-io/ibax-front.git\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Install Weaver dependencies via Yarn:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front/ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v("\n")])])]),a("h3",{attrs:{id:"add-the-configuration-file-for-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-configuration-file-for-the-blockchain-network"}},[t._v("#")]),t._v(" Add the configuration file for the blockchain network")]),t._v(" "),a("ol",[a("li",[t._v("Create a "),a("em",[t._v("settings.json")]),t._v(" file that contains information about node connection:")])]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cp/opt/backenddir/ibax-front/public/settings.json.dist "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n /opt/backenddir/ibax-front/public/public/settings.json\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Edit the "),a("em",[t._v("settings.json")]),t._v(" file in any text editor and add the required settings in this format:")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("http://Node_IP-address:Node_HTTP-Port\n")])])]),a("p",[t._v("Examples of "),a("em",[t._v("settings.json")]),t._v(" files for the three nodes:")]),t._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"fullNodes"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.1:7079"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.2:7079"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://192.168.1.3:7079"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("p",[t._v("Build Weaver Desktop Application")]),t._v(" "),a("p",[t._v("1.Use yarn to build the desktop version:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" build-desktop\n")])])]),a("p",[t._v("2.The desktop version will be packaged into AppImage suffix format:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" release --publish never -l\n")])])]),a("p",[t._v("After building, your application can be used, but its connection configuration cannot be changed. If these settings need to be changed, a new version of the application must be built.")]),t._v(" "),a("h3",{attrs:{id:"build-weaver-web-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-weaver-web-application"}},[t._v("#")]),t._v(" Build Weaver Web Application")]),t._v(" "),a("p",[t._v("1.Build a web application:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir/ibax-front/ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" build\n")])])]),a("p",[t._v("After building, the redistributable files will be placed in the /build directory. You can use any web server of your choice for deployment, and the "),a("em",[t._v("settings.json")]),t._v(" file must also be placed in this directory. Note that if the connection settings are changed, there is no need to build the application again. Instead, edit the "),a("em",[t._v("settings.json")]),t._v(" file and restart the web server.")]),t._v(" "),a("p",[t._v("1.For development or testing purposes, you can build Yarn's web server:")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" global "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" serve "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" serve -s build\n")])])]),a("p",[t._v("After that, your Weaver web application will be available at the following location: "),a("code",[t._v("http://localhost:5000")]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"configure-the-blockchain-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-the-blockchain-network"}},[t._v("#")]),t._v(" Configure the blockchain network")]),t._v(" "),a("h3",{attrs:{id:"create-the-creator-account"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-the-creator-account"}},[t._v("#")]),t._v(" Create the creator account")]),t._v(" "),a("p",[t._v("Create an account for the first node owner. This account is the creator of the new blockchain platform and has the administrator access.")]),t._v(" "),a("p",[t._v("1.Run Weaver;")]),t._v(" "),a("p",[t._v("2.Import the existing account using the following data:")]),t._v(" "),a("p",[t._v("–Load the backup of the node owner's private key located in the "),a("code",[t._v("/opt/backenddir/node1/PrivateKey")]),t._v(" file.")]),t._v(" "),a("blockquote",[a("p",[t._v("Note")]),t._v(" "),a("p",[t._v("There are two private key files in this directory. The "),a("code",[t._v("PrivateKey")]),t._v(" file is used create the node owner's account. The "),a("code",[t._v("NodePrivateKey")]),t._v(" file is the private key of the node itself and must be kept secret.")])]),t._v(" "),a("p",[t._v("3.After logging in to the account, since no role has been created at this time, please select the Without role option.")]),t._v(" "),a("h3",{attrs:{id:"import-applications-roles-and-templates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#import-applications-roles-and-templates"}},[t._v("#")]),t._v(" Import applications, roles and templates")]),t._v(" "),a("p",[t._v("At this time, the blockchain platform is in a blank state. You can configure it by adding roles, templates, and application frameworks that support basic ecosystem functions.")]),t._v(" "),a("p",[t._v("1.Clone the application repository;")]),t._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[t._v("cd/opt/backenddir "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/ibax-io/dapps.git\n")])])]),a("p",[t._v("2.Navigate to Developer> Import in Weaver;")]),t._v(" "),a("p",[t._v("3.Import applications as per the following order:")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v(" A./opt/backenddir/dapps/system.json \n B./opt/backenddir/dapps/conditions.json \n C./opt/backenddir/dapps/basic.json \n D./opt/backenddir/dapps/lang_res.json\n")])])]),a("p",[t._v("4.Navigate to Admin> Role, and click Install Default Role;")]),t._v(" "),a("p",[t._v("5.Exit the system through the configuration file menu in the upper right corner;")]),t._v(" "),a("p",[t._v("6.Log in to the system as Admin;")]),t._v(" "),a("p",[t._v("7.Navigate to Home> Vote> Template List, and click Install Default Template.")]),t._v(" "),a("h3",{attrs:{id:"add-the-first-node-to-the-node-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-first-node-to-the-node-list"}},[t._v("#")]),t._v(" Add the first node to the node list")]),t._v(" "),a("p",[t._v("1.Navigate to Developer> Platform Parameters, and click the first_nodes parameter;")]),t._v(" "),a("p",[t._v("2.Specify the parameters of the first blockchain network node.")]),t._v(" "),a("ul",[a("li",[t._v("public_key - The public key of the node is located in the "),a("code",[t._v("/opt/backenddir/node1/NodePublicKey")]),t._v(" file;")])]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('{"api_address":"http://192.168.1.1:7079","public_key":"%node_public_key%","tcp_address":"192.168.1.1:7078"}\n')])])]),a("h2",{attrs:{id:"add-other-honor-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-other-honor-nodes"}},[t._v("#")]),t._v(" Add other honor nodes")]),t._v(" "),a("h3",{attrs:{id:"add-members-into-the-consensus-role-group"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-members-into-the-consensus-role-group"}},[t._v("#")]),t._v(" Add members into the consensus role group")]),t._v(" "),a("p",[t._v("By default, only members in the consensus role (Consensus) group can participate in the voting required to add other master nodes. This means that before adding a new master node, members of the ecosystem must be assigned to the role.\nIn this section, the creator's account is designated as the only member of the consensus role group. In a production environment, this role must be assigned to platform members that perform governance.")]),t._v(" "),a("p",[t._v("1.Navigate to Home> Role and click Consensus;")]),t._v(" "),a("p",[t._v("2.Click Assign to assign the creator's account to the role.")]),t._v(" "),a("h3",{attrs:{id:"create-the-owner-account-for-other-nodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-the-owner-account-for-other-nodes"}},[t._v("#")]),t._v(" Create the owner account for other nodes")]),t._v(" "),a("ol",[a("li",[a("p",[t._v("Run Weaver;")])]),t._v(" "),a("li",[a("p",[t._v("Import the existing account using the following data:\n– Load the backup of the node owner's private key located in the "),a("code",[t._v("/opt/backenddir/node2/PrivateKey")]),t._v(" file.")])]),t._v(" "),a("li",[a("p",[t._v("After logging in to the account, since no role has been created at this time, please select the Without role option.")])]),t._v(" "),a("li",[a("p",[t._v("Navigate to Home> Personal Information, and click the title of the personal information;")])]),t._v(" "),a("li",[a("p",[t._v("Add account details (personal information title, description, etc.).")])])]),t._v(" "),a("h3",{attrs:{id:"assign-the-node-owner-with-the-validators-role"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#assign-the-node-owner-with-the-validators-role"}},[t._v("#")]),t._v(" Assign the node owner with the Validators role")]),t._v(" "),a("ol",[a("li",[t._v("Operations by the new node owner:\n"),a("ol",[a("li",[t._v("Navigate to Home> Verifier;")]),t._v(" "),a("li",[t._v("Click Create Request and fill in the application form of the verifier candidate;")]),t._v(" "),a("li",[t._v("Click send request.")])])]),t._v(" "),a("li",[t._v("Operations by the creator:\n"),a("ol",[a("li",[t._v("Log in with a consensus role (Consensus);")]),t._v(" "),a("li",[t._v("Navigate to Home> Verifier;")]),t._v(" "),a("li",[t._v('Click the "Play" icon to start voting according to the candidate\'s request;')]),t._v(" "),a("li",[t._v("Navigate to Home> Vote, and click Update voting status;")]),t._v(" "),a("li",[t._v("Click the voting name and vote for the node owner.")])])])]),t._v(" "),a("p",[t._v("As a result, the account of the owner of the new node is assigned with the Validator role, and the new node is added to the list of master nodes.")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/68.1391041a.js b/assets/js/68.70e1fec1.js similarity index 97% rename from assets/js/68.1391041a.js rename to assets/js/68.70e1fec1.js index df5c065..9f96eff 100644 --- a/assets/js/68.1391041a.js +++ b/assets/js/68.70e1fec1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{447:function(t,e,r){"use strict";r.r(e);var i=r(51),o=Object(i.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"ibax-documentazione"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#ibax-documentazione"}},[t._v("#")]),t._v(" IBAX Documentazione")]),t._v(" "),r("h2",{attrs:{id:"concetto"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#concetto"}},[t._v("#")]),t._v(" Concetto")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/it/concepts/about-the-platform.html"}},[t._v("IBAX Overview")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/concepts/blockchain-layers.html"}},[t._v("The IBAX Network")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/concepts/consensus.html"}},[t._v("Proof-of-Authority Consensus")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/concepts/thesaurus.html"}},[t._v("Terms and Definitions")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/concepts/faq.html"}},[t._v("FAQ")])],1)]),t._v(" "),r("h2",{attrs:{id:"tutorial"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#tutorial"}},[t._v("#")]),t._v(" Tutorial")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/it/tutorials/app_tutorial.html"}},[t._v("Tutorial for application development")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),r("h2",{attrs:{id:"guida"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#guida"}},[t._v("#")]),t._v(" Guida")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/it/topics/script.html"}},[t._v("Smart Contracts")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/topics/templates2.html"}},[t._v("Template Language")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/topics/vm.html"}},[t._v("Compiler and Virtual Machine")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/topics/daemons.html"}},[t._v("Daemon")])],1)]),t._v(" "),r("h2",{attrs:{id:"riferimento"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#riferimento"}},[t._v("#")]),t._v(" Riferimento")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/it/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/reference/platform-parameters.html"}},[t._v("Platform Parameters")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/reference/backend-config.html"}},[t._v("Server Configuration File")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/reference/desync_monitor.html"}},[t._v("Synchronized Monitoring Tool")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),r("h2",{attrs:{id:"distribuzione"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#distribuzione"}},[t._v("#")]),t._v(" Distribuzione")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/it/howtos/deployment.html"}},[t._v("Deployment of A IBAX Network")])],1)])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{448:function(t,e,r){"use strict";r.r(e);var i=r(51),o=Object(i.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"ibax-documentazione"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#ibax-documentazione"}},[t._v("#")]),t._v(" IBAX Documentazione")]),t._v(" "),r("h2",{attrs:{id:"concetto"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#concetto"}},[t._v("#")]),t._v(" Concetto")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/it/concepts/about-the-platform.html"}},[t._v("IBAX Overview")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/concepts/blockchain-layers.html"}},[t._v("The IBAX Network")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/concepts/consensus.html"}},[t._v("Proof-of-Authority Consensus")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/concepts/thesaurus.html"}},[t._v("Terms and Definitions")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/concepts/faq.html"}},[t._v("FAQ")])],1)]),t._v(" "),r("h2",{attrs:{id:"tutorial"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#tutorial"}},[t._v("#")]),t._v(" Tutorial")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/it/tutorials/app_tutorial.html"}},[t._v("Tutorial for application development")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/tutorials/tutorial.html"}},[t._v("Development Tutorial")])],1)]),t._v(" "),r("h2",{attrs:{id:"guida"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#guida"}},[t._v("#")]),t._v(" Guida")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/it/topics/script.html"}},[t._v("Smart Contracts")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/topics/templates2.html"}},[t._v("Template Language")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/topics/vm.html"}},[t._v("Compiler and Virtual Machine")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/topics/daemons.html"}},[t._v("Daemon")])],1)]),t._v(" "),r("h2",{attrs:{id:"riferimento"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#riferimento"}},[t._v("#")]),t._v(" Riferimento")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/it/reference/api2.html"}},[t._v("RESTful API")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/reference/platform-parameters.html"}},[t._v("Platform Parameters")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/reference/backend-config.html"}},[t._v("Server Configuration File")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/reference/desync_monitor.html"}},[t._v("Synchronized Monitoring Tool")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/it/reference/json-rpc.html"}},[t._v("JSON-RPC Application Programming Interface")])],1)]),t._v(" "),r("h2",{attrs:{id:"distribuzione"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#distribuzione"}},[t._v("#")]),t._v(" Distribuzione")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/it/howtos/deployment.html"}},[t._v("Deployment of A IBAX Network")])],1)])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/69.f076f69f.js b/assets/js/69.59a1ff4e.js similarity index 99% rename from assets/js/69.f076f69f.js rename to assets/js/69.59a1ff4e.js index ab91349..fade1a0 100644 --- a/assets/js/69.f076f69f.js +++ b/assets/js/69.59a1ff4e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{449:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ibax-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-overview"}},[e._v("#")]),e._v(" IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-overview"}},[e._v("IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#features"}},[e._v("Features")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#architecture"}},[e._v("Architecture")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#network"}},[e._v("Network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[e._v("Honor Node")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#transactions"}},[e._v("Transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#network-protocol"}},[e._v("Network protocol")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-and-transaction-verification"}},[e._v("Block and transaction verification")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#database"}},[e._v("Database")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[e._v("ECOLIB")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ide"}},[e._v("IDE")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#applications"}},[e._v("Applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables"}},[e._v("Tables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-parameters"}},[e._v("Ecosystem Parameters")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#access-rights-control-mechanism"}},[e._v("Access rights control mechanism")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#access-rights-management"}},[e._v("Access rights management")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exclusive-rights"}},[e._v("Exclusive rights")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecosystem"}},[e._v("Virtual private ecosystem")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#requests-to-web-resources"}},[e._v("Requests to web resources")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rights-to-read-data"}},[e._v("Rights to read data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-creation"}},[e._v("CLB creation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-usage"}},[e._v("CLB usage")])])])])])])]),e._v(" "),a("h2",{attrs:{id:"features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[e._v("#")]),e._v(" Features")]),e._v(" "),a("p",[e._v("The IBAX Network (IBAX) has an integrated application development environment (IDE). It is a multi-level access control system for data, user pages and smart contracts.")]),e._v(" "),a("p",[e._v("In terms of its structure and functions, IBAX is quite different from most existing blockchain platforms:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The development and use of IBAX applications are in an autonomous software environment called "),a("strong",[e._v("ecosystem")]),e._v(". Each ecosystem has its own membership rules that are initially established by the creator;")])]),e._v(" "),a("li",[a("p",[e._v("Ecosystem activities, such as the data involved in "),a("font",{attrs:{color:"Red"}},[e._v("database table")]),e._v(" records or updates, are based on "),a("strong",[e._v("registers")]),e._v(" created with "),a("strong",[e._v("smart contracts")]),e._v(". In most other blockchain platforms, activities are based on transaction exchange between accounts;")],1)]),e._v(" "),a("li",[a("p",[e._v("The access to "),a("strong",[e._v("registers")]),e._v(" and the control of relationships between ecosystem members are managed by a set of rules called "),a("strong",[e._v("smart laws")]),e._v(".")])])]),e._v(" "),a("h2",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("h3",{attrs:{id:"network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network"}},[e._v("#")]),e._v(" Network")]),e._v(" "),a("p",[e._v("IBAX is built on a peer-to-peer (P2P) network.")]),e._v(" "),a("p",[e._v("Guardian nodes in the network store the latest version of the blockchain database, which records the latest status of IBAX's blockchain.")]),e._v(" "),a("p",[e._v("Network users can receive data by sending requests from the guardian node database via "),a("strong",[e._v("Weaver")]),e._v(" or REST API commands. After signing by users, new requests are sent to the network as transactions in binary format. Essentially, these transactions are commands to modify relevant database records. Transactions are aggregated in blocks, and such blocks are sent to the blockchains of all network nodes. Each guardian node will process the transactions in the block, thereby updating the corresponding data in the database.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor Node")]),e._v(" "),a("p",[e._v("A guardian node which is privileged to generate new blocks in the network is called a honor node. The maximum number of honor nodes is defined by "),a("RouterLink",{attrs:{to:"/it/reference/platform-parameters.html#number-of-nodes"}},[e._v("number_of_nodes")]),e._v(" in the platform parameters table, showing that the number of honor nodes is limited.")],1),e._v(" "),a("p",[e._v("An Honor Node is one of the key components of IBAX Public Network. It executes and validates transactions, collects transaction information from other nodes, adds transactions to the queue, and verifies the correctness and validity of new blocks using the confirmation mechanism. Generally, it has two states: packaging and on-packaging.")]),e._v(" "),a("p",[e._v("An Honor Node in the packaging state delivers the highest performance. It obtains transaction requests to be executed from the transaction queue and verifies the ignature validity and correctness of transactions, e.g. transfer amount, permission for transaction operations, and accurate execution of transactions. All ransactional operations, correct or wrong (wrong transactions will be rolled back), will be written into the block. Wrong transactions will incur a punitive gas fee. Executed transactions are notified to other Honor Nodes along with the block through broadcasting.")]),e._v(" "),a("p",[e._v("An Honor Node in the non-packaging state is mainly responsible for block verification to ensure in-block transactions generated by a packaging node are executed orrectly. In case of an anomaly, it will trigger the exception handling mechanism and IBAX Network will roll back and re-verify the block.")]),e._v(" "),a("p",[e._v("In order to ensure transaction execution efficiency, Honor Nodes collect transaction information constantly.")]),e._v(" "),a("h3",{attrs:{id:"transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transactions"}},[e._v("#")]),e._v(" Transactions")]),e._v(" "),a("p",[e._v("Transactions, including data used to implement "),a("strong",[e._v("smart contracts")]),e._v(", are generated by Weaver.")]),e._v(" "),a("p",[e._v("Transactions are signed by users with a private key. The private key and Weaver's signature function can be stored in browsers, software clients, SIM cards or dedicated physical devices. In the current implementation, the private key is encrypted with the ECDSA algorithm and stored at the Weaver side. All transactions are signed with the ECDSA algorithm.")]),e._v(" "),a("p",[e._v("The structure of a transaction complies with the following format:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("ID - ID of the contract implemented;")])]),e._v(" "),a("li",[a("p",[e._v("Params - parameters sent to the contract;")])]),e._v(" "),a("li",[a("p",[e._v("KeyID - ID of the user sending the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("PublicKey - public key of the honor node;")])]),e._v(" "),a("li",[a("p",[e._v("Time - timestamp generated by the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("EcosystemID - ID of the ecosystem where the transaction is made;")])]),e._v(" "),a("li",[a("p",[e._v("ТokenEcosystem - ID of the ecosystem, 1 by default, and tokens within it are used to cover the transaction costs.")])])]),e._v(" "),a("h3",{attrs:{id:"network-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network-protocol"}},[e._v("#")]),e._v(" Network protocol")]),e._v(" "),a("p",[e._v("Transactions will be sent to honor nodes by users, where they are subject to basic verification to ensure the formats are correct and then are added to the queue. Transactions are also sent to other honor nodes on the network and added to the respective queue.")]),e._v(" "),a("p",[e._v("A honor node is privileged to generate new blocks within a specific time period which is determined by the platform parameter "),a("strong",[e._v("full_nodes")]),e._v(" and a special algorithm. Honor nodes retrieve transactions from queues and send them to the block generator. When generating a new block, transactions in such block will also be processed: each transaction is sent to a virtual machine, where the contract corresponding to the transaction parameters is implemented, thereby updating records in the database.")]),e._v(" "),a("p",[e._v("New blocks should be verified to ensure there are no errors before sending to other honor nodes on other networks.")]),e._v(" "),a("p",[e._v("A new block will be added to the block queue when received by other honor node and, after verification, to the blockchain of the honor node where it is located to process transactions in the block, and thereby updating records in the database.")]),e._v(" "),a("h3",{attrs:{id:"block-and-transaction-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-and-transaction-verification"}},[e._v("#")]),e._v(" Block and transaction verification")]),e._v(" "),a("p",[e._v("After generating or receiving a new block, it will be verified on all other honor nodes, which cover the following:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The first byte of the data received should be 0. If not, the data received will not be considered as a block;")])]),e._v(" "),a("li",[a("p",[e._v("The received block generation timestamp should be before the current timestamp;")])]),e._v(" "),a("li",[a("p",[e._v("The block generation timestamp should correspond to the time interval at which the honor node having privilege to generate new blocks;")])]),e._v(" "),a("li",[a("p",[e._v("The height of a new block should be greater than the height of the largest block on the existing blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the maximum expenses allowed for all transactions in the block;")])]),e._v(" "),a("li",[a("p",[e._v("The block must be properly signed with the secret key of the node which it is located. The signature data should contain:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The height of the block, the hash of the previous block, the timestamp of the block, the ID of the ecosystem where the block is located, and the account address of the honor node of the block;")])]),e._v(" "),a("li",[a("p",[e._v("The position of the honor node in the platform parameter full_nodes array, the Merkel Root (MrklRoot) of all transactions in the block, and the revert hash of the previous block.")])])])])]),e._v(" "),a("p",[e._v("To check the correctness of each transaction in the block with the following methods:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The hash of each transaction must be unique;")])]),e._v(" "),a("li",[a("p",[e._v("A key-signed transaction cannot exceed the limit ("),a("RouterLink",{attrs:{to:"/it/reference/platform-parameters.html#max-tx-block-per-user"}},[e._v("max_tx_block_per_user")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the limit of the maximum transaction size ("),a("RouterLink",{attrs:{to:"/it/reference/platform-parameters.html#max-tx-size"}},[e._v("max_tx_size")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("The transaction time can neither be greater than the block generation time nor be greater than the block generation time plus 600 seconds, and it can be no less than the block generation time minus 86400 seconds;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction must be signed properly;")])]),e._v(" "),a("li",[a("p",[e._v("The user who implements the contract must have sufficient tokens in his account to pay for the transaction cost.")])])]),e._v(" "),a("h3",{attrs:{id:"database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database"}},[e._v("#")]),e._v(" Database")]),e._v(" "),a("p",[e._v("The underlying data storage layer of IBAX Network is a "),a("code",[e._v("PGSQL")]),e._v(" database completely open to the public. Based on the permission design of the IBAX Operating System Platform, users do not need to worry about data security. With an object-oriented design philosophy, IBAX Network pre-compiles data through a relational PGSQL database and improves the data processing efficiency.")]),e._v(" "),a("p",[e._v("You may be interested in the following if you are a technical specialist, or just skip it if you are not.\n① All tables without a number prefix in their name belong to permission tables of IBAX Network Basic;\n② All tables with a number prefix in their name belong to permission tables of ecoLibs.")]),e._v(" "),a("h2",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[e._v("#")]),e._v(" ECOLIB")]),e._v(" "),a("p",[e._v("It is quite easy for users, even common users, to create an ecoLib of their own on the IBAX Network System Platform. We have integrated and developed an application where ecoLib creation takes just one click.")]),e._v(" "),a("p",[e._v("When creating an ecoLib, you can configure the ecosystem parameters and rules, and set the administrator account and charging model. Most importantly, to apply the DPoA consensus within ecoLibs better, creators can set it up by writing or importing their own contracts.")]),e._v(" "),a("p",[e._v("We support quick emission of ecoLib tokens by importing contract templates.")]),e._v(" "),a("p",[e._v("Due to the differences in consensus and management permissions, ecoLibs fall into decentralized and centralized ones. They have no specific advantage or disadvantage by type. You should choose the appropriate one against your service needs. What to do if it is OK for now but not for the future? You can change ecoLib parameters, even the consensus mechanism, token, and governance method, on the IBAX Network System Platform. You can leave it all to the self-governance mechanism maintained by the ecoLib administrator or members (depending on the ecoLib type).")]),e._v(" "),a("p",[e._v("On the IBAX Network System Platform, an ecoLib has complete data control permissions and permissions to design and access independent database tables and fields. In the data control permission design, we support triggering when a field satisfies a logical expression. This feature allows for imagination space in special services like monitoring, logic satisfaction, and triggering by time and specific conditions.")]),e._v(" "),a("p",[e._v("There may be multiple DApps in an ecoLib, and each of them can have independent parameters. An ecoLib is like a platform where you can implement anything you want.")]),e._v(" "),a("p",[e._v("In order to better support ecosystem developers, we provide the editing, management, and development tool Weaver. It will reduce the ecosystem development, maintenance, and management costs greatly.")]),e._v(" "),a("h3",{attrs:{id:"ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[e._v("#")]),e._v(" IDE")]),e._v(" "),a("p",[e._v("Weaver has a complete integrated development environment (IDE) for creating blockchain applications, which does not require software developers to have a deep understanding of the blockchain technology.")]),e._v(" "),a("p",[e._v("Weaver provides a table management tool, contract editor, page editor and other functions needed to create applications in the ecosystem, without the support of any software module.")]),e._v(" "),a("p",[e._v("The IDE mainly includes the following parts:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("list of ecosystem parameters;")])]),e._v(" "),a("li",[a("p",[e._v("contract editor;")])]),e._v(" "),a("li",[a("p",[e._v("table management tool;")])]),e._v(" "),a("li",[a("p",[e._v("page editor and visual page designer;")])]),e._v(" "),a("li",[a("p",[e._v("multi-language resources editor;")])]),e._v(" "),a("li",[a("p",[e._v("application import/export functions.")])])]),e._v(" "),a("h3",{attrs:{id:"applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#applications"}},[e._v("#")]),e._v(" Applications")]),e._v(" "),a("p",[e._v("An application is a collection of elements such as database tables, smart contracts, and user pages with access rights for configuration. The ecosystem to which the application element belongs is indicated by the prefix in the element name, such as "),a("code",[e._v("@1ElementName")]),e._v(", where the ecosystem ID is indicated by the number "),a("code",[e._v("1")]),e._v(" after the "),a("code",[e._v("@")]),e._v(" symbol. When using application elements in the current ecosystem, the prefix "),a("code",[e._v("@1")]),e._v(" can be omitted. These applications can perform useful functions or implement various services.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("In IBAX's database, each ecosystem can create an unlimited number of tables. Tables of a specific ecosystem can be identified by a prefix containing the ecosystem ID, which will not be displayed in Weaver.")]),e._v(" "),a("p",[e._v("A table is not bound in any way and belongs to a certain contract. It can be used by all applications within the scope of the table's access rights.")]),e._v(" "),a("p",[e._v("Each ecosystem can create a set of data tables for developing its applications or may, possibly, access data tables of other ecosystems by specifying the table name prefix.")]),e._v(" "),a("p",[e._v("By configuring access rights through smart laws, data are logged into tables. Smart laws are used for rights management.")]),e._v(" "),a("blockquote",[a("p",[e._v("Table table management tool")])]),e._v(" "),a("p",[e._v("You can find the table management tool in Weaver menu Table, which cover the following functions:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("View the list of tables and their entries;")])]),e._v(" "),a("li",[a("p",[e._v("Create new tables;")])]),e._v(" "),a("li",[a("p",[e._v("Add a table field and specify its data type, such as "),a("code",[e._v("Text, Date/Time, Varchar, Character, JSON, Number, Money, Double, Binary")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Manage privileges for insert, update data and change table structure.")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Table data manipulation")])]),e._v(" "),a("p",[e._v("For better database manipulation, both Needle and Logicor have the "),a("strong",[e._v("DBFind")]),e._v(" function, which is used to retrieve values and data arrays from tables.")]),e._v(" "),a("p",[e._v("The contract language "),a("strong",[e._v("DBInsert")]),e._v(" function is used to add entries to tables. The "),a("strong",[e._v("DBUpdate")]),e._v(" and "),a("strong",[e._v("DBUpdateExt")]),e._v(" functions are used to update the value of an existing entry. During updating, the corresponding data in tables will be updated, and the blockchain will add new transactions while retaining all historical transactions. Data in tables can only be modified and cannot be deleted.")]),e._v(" "),a("p",[e._v("In order to minimize the contract implementation time, the "),a("strong",[e._v("DBFind")]),e._v(" function cannot query multiple tables simultaneously, and JOIN is not supported. Therefore, we recommend not to normalize application tables, but to store all available information in entries or repeat the information available in other tables. This is not mandatory but necessary for a blockchain application. In this case, data should be stored fully, which cannot be updated even if the same data in other tables is updated, though it is updated synchronously in a relational database.")]),e._v(" "),a("h3",{attrs:{id:"ecosystem-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-parameters"}},[e._v("#")]),e._v(" Ecosystem Parameters")]),e._v(" "),a("p",[e._v("You may view and edit the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") in Weaver's menu. Ecosystem parameters can be divided into the following groups:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("General parameters: the account of the ecosystem creator (founder_account) and other information;")])]),e._v(" "),a("li",[a("p",[e._v("Access rights parameters: used to define access permissions for application elements")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("change the table structure (changing_tables);")])]),e._v(" "),a("li",[a("p",[e._v("change the contract (changing_contracts);")])]),e._v(" "),a("li",[a("p",[e._v("change the user page (changing_page);")])]),e._v(" "),a("li",[a("p",[e._v("change the menu (changing_menu);")])]),e._v(" "),a("li",[a("p",[e._v("change the multi-language resources (changing_language).")])])])]),e._v(" "),a("li",[a("p",[e._v("Technical parameters: used to define the user styles (stylesheet);")])]),e._v(" "),a("li",[a("p",[e._v("User parameters: used to define constants or lists (separated by commas) required for application operation.")])])]),e._v(" "),a("p",[e._v("You may specify the edit permission for parameters of each ecosystem.")]),e._v(" "),a("p",[e._v("You may use the EcosysParam function to retrieve the value of an ecosystem parameter by passing the ecosystem parameter title as a parameter to it.")]),e._v(" "),a("h2",{attrs:{id:"access-rights-control-mechanism"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-control-mechanism"}},[e._v("#")]),e._v(" Access rights control mechanism")]),e._v(" "),a("p",[e._v("IBAX has a multi-level access permission management system. By configuring access rights, you can create and change any application element, such as the contracts, tables, user pages, ecosystem parameters. You may also change the access rights through configuration.")]),e._v(" "),a("p",[e._v("By default, all rights in the IBAX ecosystem are managed by its creator, which is defined in the MainCondition contract of each ecosystem. But after creating smart laws, access control can be transferred to all or a group of ecosystem members.\nAccess rights control")]),e._v(" "),a("p",[e._v("The access rights are defined in contract tables ("),a("strong",[e._v("1_contracts")]),e._v(" ), data tables ("),a("strong",[e._v("1_tables")]),e._v(" ), user page tables ("),a("strong",[e._v("1_pages")]),e._v(" ), menu tables ("),a("strong",[e._v("1_menu")]),e._v(" ), and code block tables ("),a("strong",[e._v("1_blocks")]),e._v(" ). You can find the corresponding menus in Weaver.")]),e._v(" "),a("h3",{attrs:{id:"access-rights-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-management"}},[e._v("#")]),e._v(" Access rights management")]),e._v(" "),a("p",[e._v("The rules of access rights are configured by filling in the corresponding contract expressions "),a("strong",[e._v("ContractConditions(“@1MainCondition”)")]),e._v(", "),a("strong",[e._v("ContractAccess(“@1MainCondition”)")]),e._v(" or logical expressions in the permission field. If the result of the request expression passes (true ), then access is granted. Otherwise, access is denied and related operations are terminated.")]),e._v(" "),a("p",[e._v("The easy way to define rights is to enter a logical expression in the right field. For example, "),a("code",[e._v("$key_id == 8919730491904441614")]),e._v(", where "),a("strong",[e._v("$keyid")]),e._v(" represents the ID of an ecosystem member.")]),e._v(" "),a("p",[e._v("The most common and recommended way to define rights is to use the "),a("code",[e._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),e._v(" function. The contract name "),a("strong",[e._v("ContractsName")]),e._v(" is passed to the function as a parameter, and the contract result must be the result of a logical expression (true or false).")]),e._v(" "),a("p",[e._v("Another way to define rights is to use the "),a("code",[e._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),e._v(" function. The contract "),a("strong",[e._v("ContractsName")]),e._v(" qualified to implement the corresponding operation can be passed to the function as a parameter. For example, if the right field of the amount column is configured as "),a("code",[e._v('ContractAccess("@1TokenTransfer")')]),e._v(", then you can only implement the contract "),a("strong",[e._v("@1TokenTransfer")]),e._v(" if you want to change the value in the amount column. The right to access the contract itself can be managed in the conditions section, which are quite complex and may contain many other contracts.")]),e._v(" "),a("h3",{attrs:{id:"exclusive-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exclusive-rights"}},[e._v("#")]),e._v(" Exclusive rights")]),e._v(" "),a("p",[e._v("In case of emergencies or situations that are critical to the operation of an ecosystem, there are many special parameters in the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") (such as "),a("em",[e._v("changing_contracts")]),e._v(", "),a("em",[e._v("changing_pages")]),e._v(" ), etc., which defines rights to access all contracts, data tables, and pages of the current ecosystem. These rights are configured by key contracts.")]),e._v(" "),a("h2",{attrs:{id:"virtual-private-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecosystem"}},[e._v("#")]),e._v(" Virtual private ecosystem")]),e._v(" "),a("p",[e._v("In IBAX, you can create a virtual private ecosystem - "),a("strong",[e._v("Cross Ledgers Base (CLB)")]),e._v(". A CLB has the full functionality of the standard ecosystem, but operates outside the blockchain. In CLB, you can use and create contracts and template languages, tables, and use Weaver to create applications. You may call contracts on the blockchain ecosystem via API.")]),e._v(" "),a("h3",{attrs:{id:"requests-to-web-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requests-to-web-resources"}},[e._v("#")]),e._v(" Requests to web resources")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The main difference between a CLB and a standard ecosystem is that you can use contract functions ([HTTPRequest](../topics/script.md#httprequest)) and ([HTTPPostJSON](../topics/script.md#httppostjson)) to request any web resource within the contract via HTTP / HTTPS requests. Parameters passed to this function include: URLs, request methods (GET or POST), request headers and request parameters.\n")])])]),a("h3",{attrs:{id:"rights-to-read-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rights-to-read-data"}},[e._v("#")]),e._v(" Rights to read data")]),e._v(" "),a("p",[e._v("Though it is readable, data in CLB is not saved within the blockchain. You can choose to grant the read permission to database tables. You can set rights to read for individual columns, or for any row using a special contract.")]),e._v(" "),a("h3",{attrs:{id:"clb-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-creation"}},[e._v("#")]),e._v(" CLB creation")]),e._v(" "),a("p",[e._v("You may create a CLB node on the network. As predefined, the CLB node administrator is privileged to use the ecosystem list with the CLB functionality, and designate a user with ecosystem creator privileges to install applications, receive new members and configure the resources access permissions.")]),e._v(" "),a("h3",{attrs:{id:"clb-usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-usage"}},[e._v("#")]),e._v(" CLB usage")]),e._v(" "),a("p",[e._v("You may use a CLB to create registration forms, send verification information to users via email or phone, and store publicly accessible data. You can write and test applications, and then import them into the blockchain ecosystem. In a CLB, you may use scheduling contract tasks, create oracle machines to receive data from web resources and send such data to the blockchain ecosystem.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{450:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ibax-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-overview"}},[e._v("#")]),e._v(" IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-overview"}},[e._v("IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#features"}},[e._v("Features")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#architecture"}},[e._v("Architecture")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#network"}},[e._v("Network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[e._v("Honor Node")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#transactions"}},[e._v("Transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#network-protocol"}},[e._v("Network protocol")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-and-transaction-verification"}},[e._v("Block and transaction verification")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#database"}},[e._v("Database")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[e._v("ECOLIB")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ide"}},[e._v("IDE")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#applications"}},[e._v("Applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables"}},[e._v("Tables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-parameters"}},[e._v("Ecosystem Parameters")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#access-rights-control-mechanism"}},[e._v("Access rights control mechanism")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#access-rights-management"}},[e._v("Access rights management")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exclusive-rights"}},[e._v("Exclusive rights")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecosystem"}},[e._v("Virtual private ecosystem")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#requests-to-web-resources"}},[e._v("Requests to web resources")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rights-to-read-data"}},[e._v("Rights to read data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-creation"}},[e._v("CLB creation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-usage"}},[e._v("CLB usage")])])])])])])]),e._v(" "),a("h2",{attrs:{id:"features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[e._v("#")]),e._v(" Features")]),e._v(" "),a("p",[e._v("The IBAX Network (IBAX) has an integrated application development environment (IDE). It is a multi-level access control system for data, user pages and smart contracts.")]),e._v(" "),a("p",[e._v("In terms of its structure and functions, IBAX is quite different from most existing blockchain platforms:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The development and use of IBAX applications are in an autonomous software environment called "),a("strong",[e._v("ecosystem")]),e._v(". Each ecosystem has its own membership rules that are initially established by the creator;")])]),e._v(" "),a("li",[a("p",[e._v("Ecosystem activities, such as the data involved in "),a("font",{attrs:{color:"Red"}},[e._v("database table")]),e._v(" records or updates, are based on "),a("strong",[e._v("registers")]),e._v(" created with "),a("strong",[e._v("smart contracts")]),e._v(". In most other blockchain platforms, activities are based on transaction exchange between accounts;")],1)]),e._v(" "),a("li",[a("p",[e._v("The access to "),a("strong",[e._v("registers")]),e._v(" and the control of relationships between ecosystem members are managed by a set of rules called "),a("strong",[e._v("smart laws")]),e._v(".")])])]),e._v(" "),a("h2",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("h3",{attrs:{id:"network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network"}},[e._v("#")]),e._v(" Network")]),e._v(" "),a("p",[e._v("IBAX is built on a peer-to-peer (P2P) network.")]),e._v(" "),a("p",[e._v("Guardian nodes in the network store the latest version of the blockchain database, which records the latest status of IBAX's blockchain.")]),e._v(" "),a("p",[e._v("Network users can receive data by sending requests from the guardian node database via "),a("strong",[e._v("Weaver")]),e._v(" or REST API commands. After signing by users, new requests are sent to the network as transactions in binary format. Essentially, these transactions are commands to modify relevant database records. Transactions are aggregated in blocks, and such blocks are sent to the blockchains of all network nodes. Each guardian node will process the transactions in the block, thereby updating the corresponding data in the database.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor Node")]),e._v(" "),a("p",[e._v("A guardian node which is privileged to generate new blocks in the network is called a honor node. The maximum number of honor nodes is defined by "),a("RouterLink",{attrs:{to:"/it/reference/platform-parameters.html#number-of-nodes"}},[e._v("number_of_nodes")]),e._v(" in the platform parameters table, showing that the number of honor nodes is limited.")],1),e._v(" "),a("p",[e._v("An Honor Node is one of the key components of IBAX Public Network. It executes and validates transactions, collects transaction information from other nodes, adds transactions to the queue, and verifies the correctness and validity of new blocks using the confirmation mechanism. Generally, it has two states: packaging and on-packaging.")]),e._v(" "),a("p",[e._v("An Honor Node in the packaging state delivers the highest performance. It obtains transaction requests to be executed from the transaction queue and verifies the ignature validity and correctness of transactions, e.g. transfer amount, permission for transaction operations, and accurate execution of transactions. All ransactional operations, correct or wrong (wrong transactions will be rolled back), will be written into the block. Wrong transactions will incur a punitive gas fee. Executed transactions are notified to other Honor Nodes along with the block through broadcasting.")]),e._v(" "),a("p",[e._v("An Honor Node in the non-packaging state is mainly responsible for block verification to ensure in-block transactions generated by a packaging node are executed orrectly. In case of an anomaly, it will trigger the exception handling mechanism and IBAX Network will roll back and re-verify the block.")]),e._v(" "),a("p",[e._v("In order to ensure transaction execution efficiency, Honor Nodes collect transaction information constantly.")]),e._v(" "),a("h3",{attrs:{id:"transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transactions"}},[e._v("#")]),e._v(" Transactions")]),e._v(" "),a("p",[e._v("Transactions, including data used to implement "),a("strong",[e._v("smart contracts")]),e._v(", are generated by Weaver.")]),e._v(" "),a("p",[e._v("Transactions are signed by users with a private key. The private key and Weaver's signature function can be stored in browsers, software clients, SIM cards or dedicated physical devices. In the current implementation, the private key is encrypted with the ECDSA algorithm and stored at the Weaver side. All transactions are signed with the ECDSA algorithm.")]),e._v(" "),a("p",[e._v("The structure of a transaction complies with the following format:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("ID - ID of the contract implemented;")])]),e._v(" "),a("li",[a("p",[e._v("Params - parameters sent to the contract;")])]),e._v(" "),a("li",[a("p",[e._v("KeyID - ID of the user sending the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("PublicKey - public key of the honor node;")])]),e._v(" "),a("li",[a("p",[e._v("Time - timestamp generated by the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("EcosystemID - ID of the ecosystem where the transaction is made;")])]),e._v(" "),a("li",[a("p",[e._v("ТokenEcosystem - ID of the ecosystem, 1 by default, and tokens within it are used to cover the transaction costs.")])])]),e._v(" "),a("h3",{attrs:{id:"network-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network-protocol"}},[e._v("#")]),e._v(" Network protocol")]),e._v(" "),a("p",[e._v("Transactions will be sent to honor nodes by users, where they are subject to basic verification to ensure the formats are correct and then are added to the queue. Transactions are also sent to other honor nodes on the network and added to the respective queue.")]),e._v(" "),a("p",[e._v("A honor node is privileged to generate new blocks within a specific time period which is determined by the platform parameter "),a("strong",[e._v("full_nodes")]),e._v(" and a special algorithm. Honor nodes retrieve transactions from queues and send them to the block generator. When generating a new block, transactions in such block will also be processed: each transaction is sent to a virtual machine, where the contract corresponding to the transaction parameters is implemented, thereby updating records in the database.")]),e._v(" "),a("p",[e._v("New blocks should be verified to ensure there are no errors before sending to other honor nodes on other networks.")]),e._v(" "),a("p",[e._v("A new block will be added to the block queue when received by other honor node and, after verification, to the blockchain of the honor node where it is located to process transactions in the block, and thereby updating records in the database.")]),e._v(" "),a("h3",{attrs:{id:"block-and-transaction-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-and-transaction-verification"}},[e._v("#")]),e._v(" Block and transaction verification")]),e._v(" "),a("p",[e._v("After generating or receiving a new block, it will be verified on all other honor nodes, which cover the following:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The first byte of the data received should be 0. If not, the data received will not be considered as a block;")])]),e._v(" "),a("li",[a("p",[e._v("The received block generation timestamp should be before the current timestamp;")])]),e._v(" "),a("li",[a("p",[e._v("The block generation timestamp should correspond to the time interval at which the honor node having privilege to generate new blocks;")])]),e._v(" "),a("li",[a("p",[e._v("The height of a new block should be greater than the height of the largest block on the existing blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the maximum expenses allowed for all transactions in the block;")])]),e._v(" "),a("li",[a("p",[e._v("The block must be properly signed with the secret key of the node which it is located. The signature data should contain:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The height of the block, the hash of the previous block, the timestamp of the block, the ID of the ecosystem where the block is located, and the account address of the honor node of the block;")])]),e._v(" "),a("li",[a("p",[e._v("The position of the honor node in the platform parameter full_nodes array, the Merkel Root (MrklRoot) of all transactions in the block, and the revert hash of the previous block.")])])])])]),e._v(" "),a("p",[e._v("To check the correctness of each transaction in the block with the following methods:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The hash of each transaction must be unique;")])]),e._v(" "),a("li",[a("p",[e._v("A key-signed transaction cannot exceed the limit ("),a("RouterLink",{attrs:{to:"/it/reference/platform-parameters.html#max-tx-block-per-user"}},[e._v("max_tx_block_per_user")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the limit of the maximum transaction size ("),a("RouterLink",{attrs:{to:"/it/reference/platform-parameters.html#max-tx-size"}},[e._v("max_tx_size")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("The transaction time can neither be greater than the block generation time nor be greater than the block generation time plus 600 seconds, and it can be no less than the block generation time minus 86400 seconds;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction must be signed properly;")])]),e._v(" "),a("li",[a("p",[e._v("The user who implements the contract must have sufficient tokens in his account to pay for the transaction cost.")])])]),e._v(" "),a("h3",{attrs:{id:"database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database"}},[e._v("#")]),e._v(" Database")]),e._v(" "),a("p",[e._v("The underlying data storage layer of IBAX Network is a "),a("code",[e._v("PGSQL")]),e._v(" database completely open to the public. Based on the permission design of the IBAX Operating System Platform, users do not need to worry about data security. With an object-oriented design philosophy, IBAX Network pre-compiles data through a relational PGSQL database and improves the data processing efficiency.")]),e._v(" "),a("p",[e._v("You may be interested in the following if you are a technical specialist, or just skip it if you are not.\n① All tables without a number prefix in their name belong to permission tables of IBAX Network Basic;\n② All tables with a number prefix in their name belong to permission tables of ecoLibs.")]),e._v(" "),a("h2",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[e._v("#")]),e._v(" ECOLIB")]),e._v(" "),a("p",[e._v("It is quite easy for users, even common users, to create an ecoLib of their own on the IBAX Network System Platform. We have integrated and developed an application where ecoLib creation takes just one click.")]),e._v(" "),a("p",[e._v("When creating an ecoLib, you can configure the ecosystem parameters and rules, and set the administrator account and charging model. Most importantly, to apply the DPoA consensus within ecoLibs better, creators can set it up by writing or importing their own contracts.")]),e._v(" "),a("p",[e._v("We support quick emission of ecoLib tokens by importing contract templates.")]),e._v(" "),a("p",[e._v("Due to the differences in consensus and management permissions, ecoLibs fall into decentralized and centralized ones. They have no specific advantage or disadvantage by type. You should choose the appropriate one against your service needs. What to do if it is OK for now but not for the future? You can change ecoLib parameters, even the consensus mechanism, token, and governance method, on the IBAX Network System Platform. You can leave it all to the self-governance mechanism maintained by the ecoLib administrator or members (depending on the ecoLib type).")]),e._v(" "),a("p",[e._v("On the IBAX Network System Platform, an ecoLib has complete data control permissions and permissions to design and access independent database tables and fields. In the data control permission design, we support triggering when a field satisfies a logical expression. This feature allows for imagination space in special services like monitoring, logic satisfaction, and triggering by time and specific conditions.")]),e._v(" "),a("p",[e._v("There may be multiple DApps in an ecoLib, and each of them can have independent parameters. An ecoLib is like a platform where you can implement anything you want.")]),e._v(" "),a("p",[e._v("In order to better support ecosystem developers, we provide the editing, management, and development tool Weaver. It will reduce the ecosystem development, maintenance, and management costs greatly.")]),e._v(" "),a("h3",{attrs:{id:"ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[e._v("#")]),e._v(" IDE")]),e._v(" "),a("p",[e._v("Weaver has a complete integrated development environment (IDE) for creating blockchain applications, which does not require software developers to have a deep understanding of the blockchain technology.")]),e._v(" "),a("p",[e._v("Weaver provides a table management tool, contract editor, page editor and other functions needed to create applications in the ecosystem, without the support of any software module.")]),e._v(" "),a("p",[e._v("The IDE mainly includes the following parts:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("list of ecosystem parameters;")])]),e._v(" "),a("li",[a("p",[e._v("contract editor;")])]),e._v(" "),a("li",[a("p",[e._v("table management tool;")])]),e._v(" "),a("li",[a("p",[e._v("page editor and visual page designer;")])]),e._v(" "),a("li",[a("p",[e._v("multi-language resources editor;")])]),e._v(" "),a("li",[a("p",[e._v("application import/export functions.")])])]),e._v(" "),a("h3",{attrs:{id:"applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#applications"}},[e._v("#")]),e._v(" Applications")]),e._v(" "),a("p",[e._v("An application is a collection of elements such as database tables, smart contracts, and user pages with access rights for configuration. The ecosystem to which the application element belongs is indicated by the prefix in the element name, such as "),a("code",[e._v("@1ElementName")]),e._v(", where the ecosystem ID is indicated by the number "),a("code",[e._v("1")]),e._v(" after the "),a("code",[e._v("@")]),e._v(" symbol. When using application elements in the current ecosystem, the prefix "),a("code",[e._v("@1")]),e._v(" can be omitted. These applications can perform useful functions or implement various services.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("In IBAX's database, each ecosystem can create an unlimited number of tables. Tables of a specific ecosystem can be identified by a prefix containing the ecosystem ID, which will not be displayed in Weaver.")]),e._v(" "),a("p",[e._v("A table is not bound in any way and belongs to a certain contract. It can be used by all applications within the scope of the table's access rights.")]),e._v(" "),a("p",[e._v("Each ecosystem can create a set of data tables for developing its applications or may, possibly, access data tables of other ecosystems by specifying the table name prefix.")]),e._v(" "),a("p",[e._v("By configuring access rights through smart laws, data are logged into tables. Smart laws are used for rights management.")]),e._v(" "),a("blockquote",[a("p",[e._v("Table table management tool")])]),e._v(" "),a("p",[e._v("You can find the table management tool in Weaver menu Table, which cover the following functions:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("View the list of tables and their entries;")])]),e._v(" "),a("li",[a("p",[e._v("Create new tables;")])]),e._v(" "),a("li",[a("p",[e._v("Add a table field and specify its data type, such as "),a("code",[e._v("Text, Date/Time, Varchar, Character, JSON, Number, Money, Double, Binary")]),e._v(";")])]),e._v(" "),a("li",[a("p",[e._v("Manage privileges for insert, update data and change table structure.")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Table data manipulation")])]),e._v(" "),a("p",[e._v("For better database manipulation, both Needle and Logicor have the "),a("strong",[e._v("DBFind")]),e._v(" function, which is used to retrieve values and data arrays from tables.")]),e._v(" "),a("p",[e._v("The contract language "),a("strong",[e._v("DBInsert")]),e._v(" function is used to add entries to tables. The "),a("strong",[e._v("DBUpdate")]),e._v(" and "),a("strong",[e._v("DBUpdateExt")]),e._v(" functions are used to update the value of an existing entry. During updating, the corresponding data in tables will be updated, and the blockchain will add new transactions while retaining all historical transactions. Data in tables can only be modified and cannot be deleted.")]),e._v(" "),a("p",[e._v("In order to minimize the contract implementation time, the "),a("strong",[e._v("DBFind")]),e._v(" function cannot query multiple tables simultaneously, and JOIN is not supported. Therefore, we recommend not to normalize application tables, but to store all available information in entries or repeat the information available in other tables. This is not mandatory but necessary for a blockchain application. In this case, data should be stored fully, which cannot be updated even if the same data in other tables is updated, though it is updated synchronously in a relational database.")]),e._v(" "),a("h3",{attrs:{id:"ecosystem-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-parameters"}},[e._v("#")]),e._v(" Ecosystem Parameters")]),e._v(" "),a("p",[e._v("You may view and edit the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") in Weaver's menu. Ecosystem parameters can be divided into the following groups:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("General parameters: the account of the ecosystem creator (founder_account) and other information;")])]),e._v(" "),a("li",[a("p",[e._v("Access rights parameters: used to define access permissions for application elements")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("change the table structure (changing_tables);")])]),e._v(" "),a("li",[a("p",[e._v("change the contract (changing_contracts);")])]),e._v(" "),a("li",[a("p",[e._v("change the user page (changing_page);")])]),e._v(" "),a("li",[a("p",[e._v("change the menu (changing_menu);")])]),e._v(" "),a("li",[a("p",[e._v("change the multi-language resources (changing_language).")])])])]),e._v(" "),a("li",[a("p",[e._v("Technical parameters: used to define the user styles (stylesheet);")])]),e._v(" "),a("li",[a("p",[e._v("User parameters: used to define constants or lists (separated by commas) required for application operation.")])])]),e._v(" "),a("p",[e._v("You may specify the edit permission for parameters of each ecosystem.")]),e._v(" "),a("p",[e._v("You may use the EcosysParam function to retrieve the value of an ecosystem parameter by passing the ecosystem parameter title as a parameter to it.")]),e._v(" "),a("h2",{attrs:{id:"access-rights-control-mechanism"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-control-mechanism"}},[e._v("#")]),e._v(" Access rights control mechanism")]),e._v(" "),a("p",[e._v("IBAX has a multi-level access permission management system. By configuring access rights, you can create and change any application element, such as the contracts, tables, user pages, ecosystem parameters. You may also change the access rights through configuration.")]),e._v(" "),a("p",[e._v("By default, all rights in the IBAX ecosystem are managed by its creator, which is defined in the MainCondition contract of each ecosystem. But after creating smart laws, access control can be transferred to all or a group of ecosystem members.\nAccess rights control")]),e._v(" "),a("p",[e._v("The access rights are defined in contract tables ("),a("strong",[e._v("1_contracts")]),e._v(" ), data tables ("),a("strong",[e._v("1_tables")]),e._v(" ), user page tables ("),a("strong",[e._v("1_pages")]),e._v(" ), menu tables ("),a("strong",[e._v("1_menu")]),e._v(" ), and code block tables ("),a("strong",[e._v("1_blocks")]),e._v(" ). You can find the corresponding menus in Weaver.")]),e._v(" "),a("h3",{attrs:{id:"access-rights-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-management"}},[e._v("#")]),e._v(" Access rights management")]),e._v(" "),a("p",[e._v("The rules of access rights are configured by filling in the corresponding contract expressions "),a("strong",[e._v("ContractConditions(“@1MainCondition”)")]),e._v(", "),a("strong",[e._v("ContractAccess(“@1MainCondition”)")]),e._v(" or logical expressions in the permission field. If the result of the request expression passes (true ), then access is granted. Otherwise, access is denied and related operations are terminated.")]),e._v(" "),a("p",[e._v("The easy way to define rights is to enter a logical expression in the right field. For example, "),a("code",[e._v("$key_id == 8919730491904441614")]),e._v(", where "),a("strong",[e._v("$keyid")]),e._v(" represents the ID of an ecosystem member.")]),e._v(" "),a("p",[e._v("The most common and recommended way to define rights is to use the "),a("code",[e._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),e._v(" function. The contract name "),a("strong",[e._v("ContractsName")]),e._v(" is passed to the function as a parameter, and the contract result must be the result of a logical expression (true or false).")]),e._v(" "),a("p",[e._v("Another way to define rights is to use the "),a("code",[e._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),e._v(" function. The contract "),a("strong",[e._v("ContractsName")]),e._v(" qualified to implement the corresponding operation can be passed to the function as a parameter. For example, if the right field of the amount column is configured as "),a("code",[e._v('ContractAccess("@1TokenTransfer")')]),e._v(", then you can only implement the contract "),a("strong",[e._v("@1TokenTransfer")]),e._v(" if you want to change the value in the amount column. The right to access the contract itself can be managed in the conditions section, which are quite complex and may contain many other contracts.")]),e._v(" "),a("h3",{attrs:{id:"exclusive-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exclusive-rights"}},[e._v("#")]),e._v(" Exclusive rights")]),e._v(" "),a("p",[e._v("In case of emergencies or situations that are critical to the operation of an ecosystem, there are many special parameters in the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") (such as "),a("em",[e._v("changing_contracts")]),e._v(", "),a("em",[e._v("changing_pages")]),e._v(" ), etc., which defines rights to access all contracts, data tables, and pages of the current ecosystem. These rights are configured by key contracts.")]),e._v(" "),a("h2",{attrs:{id:"virtual-private-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecosystem"}},[e._v("#")]),e._v(" Virtual private ecosystem")]),e._v(" "),a("p",[e._v("In IBAX, you can create a virtual private ecosystem - "),a("strong",[e._v("Cross Ledgers Base (CLB)")]),e._v(". A CLB has the full functionality of the standard ecosystem, but operates outside the blockchain. In CLB, you can use and create contracts and template languages, tables, and use Weaver to create applications. You may call contracts on the blockchain ecosystem via API.")]),e._v(" "),a("h3",{attrs:{id:"requests-to-web-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requests-to-web-resources"}},[e._v("#")]),e._v(" Requests to web resources")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The main difference between a CLB and a standard ecosystem is that you can use contract functions ([HTTPRequest](../topics/script.md#httprequest)) and ([HTTPPostJSON](../topics/script.md#httppostjson)) to request any web resource within the contract via HTTP / HTTPS requests. Parameters passed to this function include: URLs, request methods (GET or POST), request headers and request parameters.\n")])])]),a("h3",{attrs:{id:"rights-to-read-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rights-to-read-data"}},[e._v("#")]),e._v(" Rights to read data")]),e._v(" "),a("p",[e._v("Though it is readable, data in CLB is not saved within the blockchain. You can choose to grant the read permission to database tables. You can set rights to read for individual columns, or for any row using a special contract.")]),e._v(" "),a("h3",{attrs:{id:"clb-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-creation"}},[e._v("#")]),e._v(" CLB creation")]),e._v(" "),a("p",[e._v("You may create a CLB node on the network. As predefined, the CLB node administrator is privileged to use the ecosystem list with the CLB functionality, and designate a user with ecosystem creator privileges to install applications, receive new members and configure the resources access permissions.")]),e._v(" "),a("h3",{attrs:{id:"clb-usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-usage"}},[e._v("#")]),e._v(" CLB usage")]),e._v(" "),a("p",[e._v("You may use a CLB to create registration forms, send verification information to users via email or phone, and store publicly accessible data. You can write and test applications, and then import them into the blockchain ecosystem. In a CLB, you may use scheduling contract tasks, create oracle machines to receive data from web resources and send such data to the blockchain ecosystem.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/70.21d1fa26.js b/assets/js/70.d08c86af.js similarity index 99% rename from assets/js/70.21d1fa26.js rename to assets/js/70.d08c86af.js index 8375999..4c13f8e 100644 --- a/assets/js/70.21d1fa26.js +++ b/assets/js/70.d08c86af.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{450:function(e,t,a){"use strict";a.r(t);var i=a(51),o=Object(i.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"the-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[e._v("#")]),e._v(" The IBAX Network")]),e._v(" "),a("p",[e._v("In this section, we will brief you how to use IBAX.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-ibax-network"}},[e._v("The IBAX Network")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#application-developers"}},[e._v("Application developers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[e._v("ECOLIB members")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("ECOLIB applications and platform applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#underlying-model"}},[e._v("Underlying model")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#implementation"}},[e._v("Implementation")])])])])]),e._v(" "),a("p",[e._v("If you are interested in the development, use or management of applications in IBAX, then you may not need to understand it at all.")]),e._v(" "),a("p",[e._v("In IBAX, the blockchain and the blockchain network are hidden from ECOLIB members, administrators, and application developers. IBAX offers "),a("RouterLink",{attrs:{to:"/it/reference/api2.html"}},[e._v("RESTful API")]),e._v(" for all user groups, which provide a tamper-proof and distributed access to the "),a("strong",[e._v("global state")]),e._v(" of the blockchain.")],1),e._v(" "),a("h2",{attrs:{id:"application-developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-developers"}},[e._v("#")]),e._v(" Application developers")]),e._v(" "),a("p",[e._v("In technical terms, the "),a("strong",[e._v("global state")]),e._v(" is a set of data, which is implemented via IBAX's database. From the perspective of application developers, an application interacts with the database by querying, inserting and updating tables.")]),e._v(" "),a("p",[e._v("In IBAX, transactions are written into the blockchain by implementing various contracts. These transactions will call contract codes implemented by blockchain network nodes, which will update the global state (database) accordingly.")]),e._v(" "),a("p",[e._v("For application developers, a contract is a function that data will be written to the database when it is implemented. Pages are like scripts and the page code is a set of page "),a("RouterLink",{attrs:{to:"/it/topics/templates2.html"}},[e._v("template")]),e._v(" functions, some of these functions display page elements, while other data comes from the database. Application developers do not need to understand what are transactions, block generation and consensus algorithms, just use it.")],1),e._v(" "),a("h2",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[e._v("#")]),e._v(" ECOLIB members")]),e._v(" "),a("p",[e._v("Applications written by developers run in an environment called "),a("RouterLink",{attrs:{to:"/it/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(". An application usually serves a specific purpose and complete various tasks together with several other applications.")],1),e._v(" "),a("p",[e._v("A user must become a member of an ECOLIB if wants to access applications in it, and it can be a member of multiple different ECOLIBs at the same time.")]),e._v(" "),a("p",[e._v("ECOLIB members can view and modify the database from application pages, just like filling out forms, clicking buttons and navigating pages in a common web application.")]),e._v(" "),a("h2",{attrs:{id:"ecolib-applications-and-platform-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("#")]),e._v(" ECOLIB applications and platform applications")]),e._v(" "),a("p",[e._v("Applications may fall into "),a("strong",[e._v("ECOLIB applications")]),e._v(" and "),a("strong",[e._v("platform applications")]),e._v(".")]),e._v(" "),a("p",[e._v("ECOLIB applications")]),e._v(" "),a("p",[e._v("An ECOLIB application implements certain unique functions or business processes of an ECOLIB, but it is only available in that ECOLIB.\nPlatform applications")]),e._v(" "),a("p",[e._v("A platform application is applicable to all ECOLIBs. Any application could be developed as a platform application. IBAX developers would provide platform applications that support the core functions for ECOLIB governance, such as voting, notification, and ECOLIB member role management.")]),e._v(" "),a("h2",{attrs:{id:"underlying-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#underlying-model"}},[e._v("#")]),e._v(" Underlying model")]),e._v(" "),a("p",[e._v("Definition of layers")]),e._v(" "),a("p",[e._v("IBAX consists of several layers:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("User interaction layer")]),e._v(" "),a("p",[e._v("ECOLIB members interact with the application through pages and page elements.")])]),e._v(" "),a("li",[a("p",[e._v("Application layer")]),e._v(" "),a("p",[e._v("Application developers interact with the global state (data tables) through contract codes and page codes.")])]),e._v(" "),a("li",[a("p",[e._v("Global state layer")]),e._v(" "),a("p",[e._v("Update and synchronize the global state (database) based on operations written to the distributed ledger (blockchain)")])]),e._v(" "),a("li",[a("p",[e._v("Blockchain layer")]),e._v(" "),a("p",[e._v("Update the distributed ledger with new blocks. Operations (transactions) saved in new blocks must be performed on the global state.")])]),e._v(" "),a("li",[a("p",[e._v("Node network layer")]),e._v(" "),a("p",[e._v("It implemented the IBAX Network protocol, which distributes, verifies transactions and generates new blocks on the node network. Similarly, new blocks are distributed and verified by the node network.")]),e._v(" "),a("p",[e._v("The distributed ledger of all nodes is kept in sync. If having conflicts in a node, the node will identify which blockchains are considered valid and invalid blockchains will be rolled back accordingly.")])]),e._v(" "),a("li",[a("p",[e._v("Transaction layer")]),e._v(" "),a("p",[e._v("Transactions are the basis for generating blocks and blockchain protocols, and transactions themselves are the results of operations performed at the user interaction layer. Transactions are generated by Weaver.")]),e._v(" "),a("p",[e._v("When a user or developer performs an operation such as clicking a button on a page or implement a contract from the code editor, Weaver will convert this operation into a transaction and send it to the network node connected to it.")])])]),e._v(" "),a("p",[e._v("Therefore, the flow of transactions is as follows:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("A user operation in a user page will become a transaction;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction is contained in a block;")])]),e._v(" "),a("li",[a("p",[e._v("The block is included in the blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("The change of operation will cause the global state of the blockchain to change, and such operation will be applied to the database;")])]),e._v(" "),a("li",[a("p",[e._v("Any database change will be reflected in the application.")])])]),e._v(" "),a("h2",{attrs:{id:"implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),a("p",[e._v("IBAX has two major components, i.e. server "),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),a("OutboundLink")],1),e._v(" and Weaver "),a("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source code"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Weaver:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Providing the user pages;")])]),e._v(" "),a("li",[a("p",[e._v("Providing the IDE for application development;")])]),e._v(" "),a("li",[a("p",[e._v("Storing public keys of user accounts and perform authorization;")])]),e._v(" "),a("li",[a("p",[e._v("Requesting database data from application pages and display application pages to users;")])]),e._v(" "),a("li",[a("p",[e._v("Sending transactions to the server through "),a("RouterLink",{attrs:{to:"/it/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),a("p",[e._v("In order to automatically create transactions against user operations, Weaver will convert such operations into transactions when application developers implement a contract from the IDE.")])])]),e._v(" "),a("p",[e._v("Server:")]),e._v(" "),a("ul",[a("li",[e._v("Keeping the global state (database) of the node;")]),e._v(" "),a("li",[e._v("Implementation of the blockchain protocol;")]),e._v(" "),a("li",[e._v("Implementation of contract codes in the IBAX "),a("RouterLink",{attrs:{to:"/it/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of page codes in the "),a("RouterLink",{attrs:{to:"/it/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of "),a("RouterLink",{attrs:{to:"/it/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{449:function(e,t,a){"use strict";a.r(t);var i=a(51),o=Object(i.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"the-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[e._v("#")]),e._v(" The IBAX Network")]),e._v(" "),a("p",[e._v("In this section, we will brief you how to use IBAX.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-ibax-network"}},[e._v("The IBAX Network")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#application-developers"}},[e._v("Application developers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[e._v("ECOLIB members")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("ECOLIB applications and platform applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#underlying-model"}},[e._v("Underlying model")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#implementation"}},[e._v("Implementation")])])])])]),e._v(" "),a("p",[e._v("If you are interested in the development, use or management of applications in IBAX, then you may not need to understand it at all.")]),e._v(" "),a("p",[e._v("In IBAX, the blockchain and the blockchain network are hidden from ECOLIB members, administrators, and application developers. IBAX offers "),a("RouterLink",{attrs:{to:"/it/reference/api2.html"}},[e._v("RESTful API")]),e._v(" for all user groups, which provide a tamper-proof and distributed access to the "),a("strong",[e._v("global state")]),e._v(" of the blockchain.")],1),e._v(" "),a("h2",{attrs:{id:"application-developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-developers"}},[e._v("#")]),e._v(" Application developers")]),e._v(" "),a("p",[e._v("In technical terms, the "),a("strong",[e._v("global state")]),e._v(" is a set of data, which is implemented via IBAX's database. From the perspective of application developers, an application interacts with the database by querying, inserting and updating tables.")]),e._v(" "),a("p",[e._v("In IBAX, transactions are written into the blockchain by implementing various contracts. These transactions will call contract codes implemented by blockchain network nodes, which will update the global state (database) accordingly.")]),e._v(" "),a("p",[e._v("For application developers, a contract is a function that data will be written to the database when it is implemented. Pages are like scripts and the page code is a set of page "),a("RouterLink",{attrs:{to:"/it/topics/templates2.html"}},[e._v("template")]),e._v(" functions, some of these functions display page elements, while other data comes from the database. Application developers do not need to understand what are transactions, block generation and consensus algorithms, just use it.")],1),e._v(" "),a("h2",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[e._v("#")]),e._v(" ECOLIB members")]),e._v(" "),a("p",[e._v("Applications written by developers run in an environment called "),a("RouterLink",{attrs:{to:"/it/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(". An application usually serves a specific purpose and complete various tasks together with several other applications.")],1),e._v(" "),a("p",[e._v("A user must become a member of an ECOLIB if wants to access applications in it, and it can be a member of multiple different ECOLIBs at the same time.")]),e._v(" "),a("p",[e._v("ECOLIB members can view and modify the database from application pages, just like filling out forms, clicking buttons and navigating pages in a common web application.")]),e._v(" "),a("h2",{attrs:{id:"ecolib-applications-and-platform-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("#")]),e._v(" ECOLIB applications and platform applications")]),e._v(" "),a("p",[e._v("Applications may fall into "),a("strong",[e._v("ECOLIB applications")]),e._v(" and "),a("strong",[e._v("platform applications")]),e._v(".")]),e._v(" "),a("p",[e._v("ECOLIB applications")]),e._v(" "),a("p",[e._v("An ECOLIB application implements certain unique functions or business processes of an ECOLIB, but it is only available in that ECOLIB.\nPlatform applications")]),e._v(" "),a("p",[e._v("A platform application is applicable to all ECOLIBs. Any application could be developed as a platform application. IBAX developers would provide platform applications that support the core functions for ECOLIB governance, such as voting, notification, and ECOLIB member role management.")]),e._v(" "),a("h2",{attrs:{id:"underlying-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#underlying-model"}},[e._v("#")]),e._v(" Underlying model")]),e._v(" "),a("p",[e._v("Definition of layers")]),e._v(" "),a("p",[e._v("IBAX consists of several layers:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("User interaction layer")]),e._v(" "),a("p",[e._v("ECOLIB members interact with the application through pages and page elements.")])]),e._v(" "),a("li",[a("p",[e._v("Application layer")]),e._v(" "),a("p",[e._v("Application developers interact with the global state (data tables) through contract codes and page codes.")])]),e._v(" "),a("li",[a("p",[e._v("Global state layer")]),e._v(" "),a("p",[e._v("Update and synchronize the global state (database) based on operations written to the distributed ledger (blockchain)")])]),e._v(" "),a("li",[a("p",[e._v("Blockchain layer")]),e._v(" "),a("p",[e._v("Update the distributed ledger with new blocks. Operations (transactions) saved in new blocks must be performed on the global state.")])]),e._v(" "),a("li",[a("p",[e._v("Node network layer")]),e._v(" "),a("p",[e._v("It implemented the IBAX Network protocol, which distributes, verifies transactions and generates new blocks on the node network. Similarly, new blocks are distributed and verified by the node network.")]),e._v(" "),a("p",[e._v("The distributed ledger of all nodes is kept in sync. If having conflicts in a node, the node will identify which blockchains are considered valid and invalid blockchains will be rolled back accordingly.")])]),e._v(" "),a("li",[a("p",[e._v("Transaction layer")]),e._v(" "),a("p",[e._v("Transactions are the basis for generating blocks and blockchain protocols, and transactions themselves are the results of operations performed at the user interaction layer. Transactions are generated by Weaver.")]),e._v(" "),a("p",[e._v("When a user or developer performs an operation such as clicking a button on a page or implement a contract from the code editor, Weaver will convert this operation into a transaction and send it to the network node connected to it.")])])]),e._v(" "),a("p",[e._v("Therefore, the flow of transactions is as follows:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("A user operation in a user page will become a transaction;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction is contained in a block;")])]),e._v(" "),a("li",[a("p",[e._v("The block is included in the blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("The change of operation will cause the global state of the blockchain to change, and such operation will be applied to the database;")])]),e._v(" "),a("li",[a("p",[e._v("Any database change will be reflected in the application.")])])]),e._v(" "),a("h2",{attrs:{id:"implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),a("p",[e._v("IBAX has two major components, i.e. server "),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),a("OutboundLink")],1),e._v(" and Weaver "),a("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source code"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Weaver:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Providing the user pages;")])]),e._v(" "),a("li",[a("p",[e._v("Providing the IDE for application development;")])]),e._v(" "),a("li",[a("p",[e._v("Storing public keys of user accounts and perform authorization;")])]),e._v(" "),a("li",[a("p",[e._v("Requesting database data from application pages and display application pages to users;")])]),e._v(" "),a("li",[a("p",[e._v("Sending transactions to the server through "),a("RouterLink",{attrs:{to:"/it/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),a("p",[e._v("In order to automatically create transactions against user operations, Weaver will convert such operations into transactions when application developers implement a contract from the IDE.")])])]),e._v(" "),a("p",[e._v("Server:")]),e._v(" "),a("ul",[a("li",[e._v("Keeping the global state (database) of the node;")]),e._v(" "),a("li",[e._v("Implementation of the blockchain protocol;")]),e._v(" "),a("li",[e._v("Implementation of contract codes in the IBAX "),a("RouterLink",{attrs:{to:"/it/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of page codes in the "),a("RouterLink",{attrs:{to:"/it/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of "),a("RouterLink",{attrs:{to:"/it/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/56.86ca51c4.js b/assets/js/75.ddf691ed.js similarity index 99% rename from assets/js/56.86ca51c4.js rename to assets/js/75.ddf691ed.js index 6922495..ab6e5d9 100644 --- a/assets/js/56.86ca51c4.js +++ b/assets/js/75.ddf691ed.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{436:function(e,t,a){"use strict";a.r(t);var s=a(51),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[e._v("#")]),e._v(" RESTful API v2")]),e._v(" "),a("p",[e._v("Weaver\nAll functions provided, including authentication, ecosystem data reception, error handling, database table manipulation, page and contract execution are available through\nIBAX Blockchain Platform's REST API is available.")]),e._v(" "),a("p",[e._v("By using the REST API, developers can access any of the platform's features without using Weaver.")]),e._v(" "),a("p",[e._v("API command calls are executed by addressing "),a("code",[e._v("/api/v2/command/[param]")]),e._v(", where "),a("code",[e._v("command")]),e._v("\nis the command name and "),a("code",[e._v("param")]),e._v(" is the additional parameter. The request parameters must be specified using the\n"),a("code",[e._v("Content-Type: x-www-form-urlencoded")]),e._v("\nThe format is sent. The server response result is in JSON format.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-response-handling"}},[e._v("Error response handling")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-list"}},[e._v("Error list")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#request-type"}},[e._v("Request Type")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#authentication-interface"}},[e._v("Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[e._v("getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#login"}},[e._v("login")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#server-side-command-interface"}},[e._v("Server Side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#version"}},[e._v("version")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-request-function-interface"}},[e._v("Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#balance"}},[e._v("balance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blocks"}},[e._v("blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#keyinfo"}},[e._v("keyinfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#wallethistory"}},[e._v("walletHistory")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#get-metrics-interface"}},[e._v("Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-honornodes"}},[e._v("metrics/honornodes")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-interface"}},[e._v("Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ecosystemname"}},[e._v("ecosystemname")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[e._v("appparams/{appID}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparams"}},[e._v("ecosystemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-name"}},[e._v("table/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-column-id"}},[e._v("row/{name}/{column}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#systemparams"}},[e._v("systemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-function-interface"}},[e._v("Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sendtx"}},[e._v("sendTX")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[e._v("txstatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[e._v("txinfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content"}},[e._v("content")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[e._v("maxblockid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[e._v("block/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[e._v("updnotificator")])])])])]),e._v(" "),a("h2",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Return status in case of successful request execution\n"),a("code",[e._v("200")]),e._v(". If an error occurs, in addition to the error status, a JSON object with the following fields will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("error")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error identifier.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("msg")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error text message.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")])]),e._v(" "),a("blockquote",[a("p",[e._v("An array of additional parameters that can be placed in the error message.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('400 (Bad request)\nContent-Type: application/json\n{\n "err": "E_INVALIDWALLET",\n "msg": "Wallet 1234-5678-9012-3444-3488 is not valid",\n "params": ["1234-5678-9012-3444-3488"]\n}\n')])])]),a("h3",{attrs:{id:"error-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-list"}},[e._v("#")]),e._v(" Error list")]),e._v(" "),a("blockquote",[a("p",[e._v("E_CONTRACT")])]),e._v(" "),a("p",[e._v("No "),a("code",[e._v("%s")]),e._v(" contract exists")]),e._v(" "),a("blockquote",[a("p",[e._v("E_DBNIL")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database is empty\n")])])]),a("blockquote",[a("p",[e._v("E_DELETEDKEY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address is frozen\n")])])]),a("blockquote",[a("p",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Ecosystem `%d` does not exist\n")])])]),a("blockquote",[a("p",[e._v("E_EMPTYPUBLIC")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Invalid account public key\n")])])]),a("blockquote",[a("p",[e._v("E_KEYNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address not found\n")])])]),a("blockquote",[a("p",[e._v("E_HASHWRONG")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect hash\n")])])]),a("blockquote",[a("p",[e._v("E_HASHNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Hash not found\n")])])]),a("blockquote",[a("p",[e._v("E_HEAVYPAGE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Too much page loading\n")])])]),a("blockquote",[a("p",[e._v("E_INVALIDWALLET")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Wallet address `%s` Invalid\n")])])]),a("blockquote",[a("p",[e._v("E_LIMITTXSIZE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The transaction size has exceeded the limit\n")])])]),a("blockquote",[a("p",[e._v("E_NOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Page or menu content not found\n")])])]),a("blockquote",[a("p",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Parameters not found\n")])])]),a("blockquote",[a("p",[e._v("E_PERMISSION")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("No permission\n")])])]),a("blockquote",[a("p",[e._v("E_QUERY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database query error\n")])])]),a("blockquote",[a("p",[e._v("E_RECOVERED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("API panic error occurs.\n\nIf a panic error occurs, an error is returned.\n\nThis error means that you have encountered a bug that needs to be found and fixed.\n")])])]),a("blockquote",[a("p",[e._v("E_SERVER")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Server error.\n\nReturn if there is an error in the golang library function. The \\*msg\\* field contains the error text message.\n\n**E_SERVER** may appear in response to any command Error. \nIf it occurs due to an incorrect input parameter, it can be changed to a related error. In another case, this error reports an invalid operation or incorrect system configuration, which requires a more detailed investigation report.\n")])])]),a("blockquote",[a("p",[e._v("E_SIGNATURE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect signature\n")])])]),a("blockquote",[a("p",[e._v("E_STATELOGIN")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("`%s` is not a member of the ecosystem `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Data sheet `%s` not found\n")])])]),a("blockquote",[a("p",[e._v("E_TOKENEXPIRED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The session has expired `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_UNAUTHORIZED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unauthorized.\n\nIn case no login is performed or the session expires, \nexcept for `getuid, login` Any command other than **E_UNAUTHORIZED** returns an error.\n")])])]),a("blockquote",[a("p",[e._v("E_UNKNOWNUID")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unknown UID\n")])])]),a("blockquote",[a("p",[e._v("E_UPDATING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Nodes are updating the blockchain\n")])])]),a("blockquote",[a("p",[e._v("E_STOPPING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Node is stopped\n")])])]),a("blockquote",[a("p",[e._v("E_NOTIMPLEMENTED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Not yet achieved\n")])])]),a("blockquote",[a("p",[e._v("E_BANNED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("This account address is prohibited in `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_CHECKROLE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Access denied\n\nCLB Unavailable Interface\n")])])]),a("hr"),e._v(" "),a("blockquote",[a("p",[e._v("Interface requests for which the CLB node is not available.")])]),e._v(" "),a("ul",[a("li",[e._v("metrics")]),e._v(" "),a("li",[e._v("txinfo")]),e._v(" "),a("li",[e._v("txinfoMultiple")]),e._v(" "),a("li",[e._v("appparam")]),e._v(" "),a("li",[e._v("appparams")]),e._v(" "),a("li",[e._v("appcontent")]),e._v(" "),a("li",[e._v("history")]),e._v(" "),a("li",[e._v("balance")]),e._v(" "),a("li",[e._v("block")]),e._v(" "),a("li",[e._v("maxblockid")]),e._v(" "),a("li",[e._v("blocks")]),e._v(" "),a("li",[e._v("detailed_blocks")]),e._v(" "),a("li",[e._v("ecosystemparams")]),e._v(" "),a("li",[e._v("systemparams")]),e._v(" "),a("li",[e._v("ecosystems")]),e._v(" "),a("li",[e._v("ecosystemparam")]),e._v(" "),a("li",[e._v("ecosystemname")]),e._v(" "),a("li",[e._v("walletHistory")]),e._v(" "),a("li",[e._v("tx_record")])]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request Type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("application/x-www-form-urlencoded")])]),e._v(" "),a("h2",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://jwt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("JWT token"),a("OutboundLink")],1),e._v("\nUsed for authentication. The JWT token must be placed in each request header after it is received: "),a("code",[e._v("Authorization: Bearer TOKEN_HERE")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[e._v("#")]),e._v(" getuid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ returns a unique value, signs it with the private key, and then uses\nThe "),a("a",{attrs:{href:"#login"}},[e._v("login")]),e._v(" command sends it back to the server.")]),e._v(" "),a("p",[e._v("Generate a temporary JWT token that needs to be passed to "),a("strong",[e._v("Authorization")]),e._v(" when calling "),a("strong",[e._v("login")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/getuid\n")])])]),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("uid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Signature number.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("The temporary token passed during login.")]),e._v(" "),a("p",[e._v("The life cycle of a temporary token is 5 seconds.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("cryptoer")])]),e._v(" "),a("blockquote",[a("p",[e._v("Elliptic curve algorithm.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hasher")])]),e._v(" "),a("blockquote",[a("p",[e._v("hash algorithm.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-1"}},[e._v("#")]),e._v(" Response Example 1")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "uid": "4999317241855959593",\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....... .I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"\n "network_id": "4717243765193692211"\n}\n')])])]),a("p",[e._v("In the case that no authorization is required (the request contains "),a("strong",[e._v("Authorization")]),e._v("), the following message will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("expire")])]),e._v(" "),a("blockquote",[a("p",[e._v("Expiration time.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-2"}},[e._v("#")]),e._v(" Response Example 2")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "expire": "2159h59m49.4310543s",\n "ecosystem_id": "1",\n "key_id": "-654321",\n "address": "1196-...... -3496",\n "network_id": "1"\n}\n')])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[e._v("#")]),e._v(" login")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/ User authentication.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("getuid")]),e._v(" should be called first\ncommand in order to receive the unique value and sign it. getuid's temporary JWT token needs to be passed in the request header.")]),e._v(" "),a("p",[e._v("If the request is successful, the token received in the response is contained in "),a("strong",[e._v("Authorization")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/login\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")]),e._v(" "),a("p",[e._v("If not specified, defaults to the first ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[expire]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Lifecycle of the JWT token, in seconds, default is 28800.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[pubkey]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal account public key.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[key_id]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("signature")])]),e._v(" "),a("blockquote",[a("p",[e._v("The uid signature received via getuid.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("JWT token.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account Address ID")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("account")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("notify_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Notification ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isnode")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isowner")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the creator of the ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("clb")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the logged-in ecosystem is CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role list: "),a("code",[e._v("[{Role ID,Role Name}]")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-3"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.....30l665h3v7lH85rs5jgk0",\n "ecosystem_id": "1",\n "key_id": "-54321",\n "account": "1285-... -7743-4282",\n "notify_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..... _JTFfheD0K4CfMbvVNpOJVMNDPx25zIDGir9g3ZZM0w",\n "timestamp": "1451309883",\n "roles": [\n {\n "role_id": 1,\n "role_name": "Developer"\n }\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")])]),e._v(" "),a("h2",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" Server Side command interface")]),e._v(" "),a("h3",{attrs:{id:"version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[e._v("#")]),e._v(" version")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current server version.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/version\n")])])]),a("h4",{attrs:{id:"response-example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-4"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n"1.3.0 branch.main commit.790..757 time.2021-08-23-08:20:19(UTC)"\n')])])]),a("h2",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[e._v("#")]),e._v(" balance")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Requests the balance of the account address in the current ecosystem.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/balance/{wallet}\n")])])]),a("ul",[a("li",[a("p",[e._v("*wallet")]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(". Look up the address in the ecosystem where the user is currently logged in.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default eco1")]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem id.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("amount")])]),e._v(" "),a("blockquote",[a("p",[e._v("The minimum unit of contract account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("money")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("utxo")])]),e._v(" "),a("blockquote",[a("p",[e._v("UTXO account balance.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-5"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "amount": "877450000000000",\n "money": "877.45",\n "total": "877450000000000",\n "utxo": "0"\n} \n')])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[e._v("#")]),e._v(" blocks")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing additional information related to the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-5"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET \n/api/v2/blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information for each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("contract_name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("params")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of contract parameters.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("For the first block, it is the account address of the first block that signed the transaction.")])]),e._v(" "),a("blockquote",[a("p",[e._v("For all other blocks, is the address of the account that signed the transaction.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-6"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "1":\n [{"hash": "O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"detailed-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detailed-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-6"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/detailed_blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("blockhead")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block header contains the following fields.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("block_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block height.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for the block.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("node_position")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("The location of the node that generated the block in the honor node list.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("version")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block structure version.")])])])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block Hashing.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("node_position")])])]),e._v(" "),a("p",[e._v("the location of the node that generated the block in the honor node list.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("time")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("tx_count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of transactions within the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("size")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block size.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("rollback_hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("merkle_root")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block deals with the Merkle tree.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bin_data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("trading")])])]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information about each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trading hash.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("contract_name")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract name.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("params")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract parameters.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for this transaction.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("type")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction type.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("size")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trade Size.")])])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-7"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"1":\n {"header":\n {"block_id":1,\n "time":1551069320,\n "ecosystem_id":0,\n "key_id":-118432674655542910,\n "node_position":0,\n "version":1},\n "hash":"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI=",\n "ecosystem_id":0,\n "node_position":0,\n "key_id":-118432674655542910,\n "time":1551069320,\n "tx_count":1,\n "size": "1.69KiB",\n "rollbacks_hash":"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k=",\n "mrkl_root":"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg==",\n "bin_data":null,\n "sys_update":false,\n "gen_block":false,\n "stop_count":0,\n "transactions":[\n {\n "hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":0,\n "time":0,\n "type":0,\n "size": "300.00B"\n }\n ]}\n}\n')])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystems with roles registered to the specified address.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-7"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{key_id}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("The request is queried in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-6"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of roles with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-8"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"data-id-data-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-id-data-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matching the data in the binary watch, field, and records, this request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-8"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{id}/data/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-7"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-9"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\n{\n "name": "NFT Miner",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "data": [\n {\n "Type": "contracts",\n "Name": "NewNFTMiner",\n },\n ...\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matches the data in the specified table, field, and records, the request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-9"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{table}/id/{column}/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("table")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name, only one")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-8"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-10"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\nContent-Disposition: attachment\n\nSetVar(this_page, @1voting_list).(this_table, @1votings)\nInclude(@1pager_header)\n\nSetTitle("$@1voting_list$")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: "$@1votings_list_desc$"))\nAddToolButton(Title: $@1templates_list$, Page: @1voting_templates_list, Icon: icon-pin)\nAddToolButton(Title: $@1create$, Page: @1voting_create, Icon: icon-plus).Popup(60, $@1new_voting$)\n\n')])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo-2"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to a list of ecosystems, which contains the role of registered the specified address.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-10"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{address}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, you can specify "),a("code",[e._v("int64, uint64, xxxx -...-xxxx")]),e._v(".")]),e._v(" "),a("p",[e._v("This request is query in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-9"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecological system name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("Activities with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-11"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"wallethistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallethistory"}},[e._v("#")]),e._v(" walletHistory")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the current account transaction history record, find it according to the ID of the ID")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-11"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("searchType")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find Type (Income: Turn into Outcom: Turn out all: All, default).")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[page]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find the number of pages, the first page default, min: 1")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 20 articles. min: 1, MAX: 500")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/walletHistory?searchType=all&page=1&limit=10\n")])])]),a("h4",{attrs:{id:"response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-10"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("page")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of current page.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("limit")])]),e._v(" "),a("blockquote",[a("p",[e._v("Currently find the number of bars.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("sender_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Send key_id")])])]),e._v(" "),a("li",[a("em",[e._v("sender_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Send the account address")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept key_id")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept the account address")])])]),e._v(" "),a("li",[a("em",[e._v("amount")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])]),e._v(" "),a("li",[a("em",[e._v("comment")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading remarks")])])]),e._v(" "),a("li",[a("em",[e._v("block_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Block height")])])]),e._v(" "),a("li",[a("em",[e._v("tx_hash")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading hash")])])]),e._v(" "),a("li",[a("em",[e._v("created_at")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction creation time, millisecond time stamp")])])]),e._v(" "),a("li",[a("em",[e._v("money")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-12"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "page": 1,\n "limit": 10,\n "total": 617,\n "list": [\n {\n "id": 650,\n "sender_id": 666081971617879...,\n "sender_add": "0666-0819-7161-xxxx-5186",\n "recipient_id": 666081971617879...,\n "recipient_add": "0666-0819-7161-xxxx-5186",\n "amount": "242250000",\n "comment": "taxes for execution of @1Export contract",\n "block_id": 209,\n "tx_hash": "a213bc767d710a223856d83515d53518075b56fb9e9c063bce8a256c20ff0775",\n "created_at": 1666001092090,\n "money": "0.00024225"\n }\n ...\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"listwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#listwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-12"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/listWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-11"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-13"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"nodelistwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nodelistwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the specified data table. You can specify columns to be returned. The type in the data table is "),a("strong",[e._v("BYTEA")]),e._v(" Do hexadecimal encoding processing")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-13"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/nodelistWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-12"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-14"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("h3",{attrs:{id:"metrics-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-keys"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystem 1 account addresses.")]),e._v(" "),a("h4",{attrs:{id:"request-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-14"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/keys\n")])])]),a("h4",{attrs:{id:"response-example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-15"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of blocks.")]),e._v(" "),a("h4",{attrs:{id:"request-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-15"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/blocks\n")])])]),a("h4",{attrs:{id:"response-example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-16"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-transactions"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the total number of transactions.")]),e._v(" "),a("h4",{attrs:{id:"request-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-16"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/transactions\n")])])]),a("h4",{attrs:{id:"response-example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-17"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-ecosystems"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystems.")]),e._v(" "),a("h4",{attrs:{id:"request-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-17"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/ecosystems\n")])])]),a("h4",{attrs:{id:"response-example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-18"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-honornodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-honornodes"}},[e._v("#")]),e._v(" metrics/honornodes")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of honor nodes.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/honornodes\n")])])]),a("h4",{attrs:{id:"response-example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-19"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h2",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("h3",{attrs:{id:"ecosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[e._v("#")]),e._v(" ecosystemname")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the name of the ecosystem by its identifier.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemname?id=1\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-20"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "ecosystem_name": "platform_ecosystem"\n}\n')])])]),a("h4",{attrs:{id:"error-response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-13"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparams-appid"}},[e._v("appparams/{appid}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of application parameters in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-18"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparams/{appid}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[appid]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID; if not specified, the current ecosystem parameter will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of received parameters.")]),e._v(" "),a("p",[e._v("You can specify a comma-separated list of parameter names, for example:"),a("code",[e._v("/api/v2/appparams/1?names=name,mypar")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-13"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")]),e._v(", the name of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("value")]),e._v(", the value of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("conditions")]),e._v(", change the permissions of the parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-21"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "mypar",\n "value": "My value",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-14"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the parameter "),a("strong",[e._v("{appid}")]),e._v(" of the application "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem\nThe information related to the")]),e._v(" "),a("h4",{attrs:{id:"request-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-19"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparam/{appid}/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("appid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID (optional parameter).")]),e._v(" "),a("p",[e._v("Returns the current ecosystem by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-14"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-22"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "10",\n "name": "par",\n "value": "My value",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-15"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM, E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[e._v("#")]),e._v(" ecosystemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystem parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-20"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparams/[?ecosystem=... &names=...]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID. if not specified, the current ecosystem ID will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("List of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example: "),a("code",[e._v("/api/v2/ecosystemparams/?names=name,currency,logo")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-15"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter value.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change permissions for parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-23"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "currency",\n "value": "MY",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-16"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the parameter "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-21"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparam/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The default is to return the current ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-16"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-24"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "name": "currency",\n "value": "MYCUR",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-17"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of data tables for the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-22"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 100, maximum 1000.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/tables?limit=... &offset=...\n")])])]),a("h4",{attrs:{id:"response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-17"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("The total number of entries in the data table.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name without prefix.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of entries in the data table.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-25"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "100"\n "list": [{ \n "name": "accounts",\n "count": "10",\n }, \n { \n "name": "citizens",\n "count": "5",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"table-name"}},[e._v("table/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the current ecosystem request data table.")]),e._v(" "),a("h4",{attrs:{id:"request-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-23"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[name]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/table/{table_name}\n")])])]),a("p",[e._v("Returns the following field information.")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("insert")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to add new entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("new_column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Add field permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("update")])]),e._v(" "),a("blockquote",[a("p",[e._v("Change entry permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("columns")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of field-related information.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("type")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field data type.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("perm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permissions for the field value.")])])])])])]),e._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/\nReturns a list of the specified data table entries in the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-24"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/list/mytable?columns=name\n")])])]),a("h4",{attrs:{id:"response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-18"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-26"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "John",\n }, \n { \n "id": "2",\n "name": "Mark",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the "),a("em",[e._v("sections")]),e._v(" of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("h4",{attrs:{id:"request-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-25"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[lang]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("This field specifies the multilingual resource code or localization, e.g., "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g., "),a("em",[e._v("en-US")]),e._v(", then the multilingual resource group in\nSearch in "),a("em",[e._v("en")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/sections\n")])])]),a("h4",{attrs:{id:"response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-19"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("sections")]),e._v(" Total number of table entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains information about all columns in the actions table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-27"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "2"\n "list": [{\n "id": "1",\n "title": "Development",\n "urlpage": "develop",\n ...\n },\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-18"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-id-columns-span"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns-span"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]< /span>")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the entry for the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-26"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/row/mytable/10?columns=name\n")])])]),a("h4",{attrs:{id:"response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-20"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of received column values")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-28"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "values": {\n "id": "10",\n "name": "John",\n }\n} \n')])])]),a("h4",{attrs:{id:"error-response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-19"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-column-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-column-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-colorn-id"}},[e._v("row/{name}/{column}/{id} ")])]),e._v(" "),a("p",[e._v("[Authorization] (#Authorization)")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-27"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Name *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[e._v("*colorn *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data list name.")])])]),e._v(" "),a("li",[a("p",[e._v("*ID *")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[e._v("\\ [columns ] * [omitempty] (#omitempty)")]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request lists is separated by commas. If it is not specified, all columns will be returned. In all cases, the ID column will be returned.")])])])])])]),e._v(" "),a("p",[a("code",[e._v("`default GET /API/V2/ROW/MyTable/name/John? Columns = name")]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-21"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Value *")]),e._v(" "),a("blockquote",[a("p",[e._v("Array of receiving column values\nForecast")]),e._v(" "),a("ul",[a("li",[e._v("*ID *")])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Strip ID.")])])]),e._v(" "),a("ul",[a("li",[e._v("-The sequence of the request column.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-29"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("p",[a("code",[e._v('`default 200 (OK) Content-type: Application/JSON {{ "Values": { "ID": "10", "name": "John", } }')]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"error-response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-20"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[e._v("#")]),e._v(" systemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of platform parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-28"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/systemparams/[?names=...]\n")])])]),a("ul",[a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("*\\[names\\]* [Omitempty](#omitempty)\n\nA list of request parameters, separated by commas. For example\n `/api/v2/systemparams/?names=max_columns,max_indexes`.\n")])])]),a("h4",{attrs:{id:"response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-22"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter values.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-30"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "max_columns",\n "value": "100",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n { \n "name": "max_indexes",\n "value": "1",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-21"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the change record for the entry in the specified data table in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-29"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/history?name=contracts&id=5\n")])])]),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("p",[e._v("Data Table Name.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("h4",{attrs:{id:"response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-23"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("list")])])]),e._v(" "),a("p",[e._v("Each element of the array contains a change record for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"response-example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-31"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [\n {\n "name": "default_page",\n "value": "P(class, Default Ecosystem Page)"\n },\n {\n "menu": "default_menu"\n }\n ]\n}\n')])])]),a("h3",{attrs:{id:"interface-page-menu-snippet-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current ecosystem in the specified data table (pages, menu or snippet) "),a("em",[e._v("name")]),e._v("\nThe entry for the field.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/interface/page/default_page\n/api/v2/interface/menu/default_menu\n/api/v2/interface/snippet/welcome\n")])])]),a("h4",{attrs:{id:"request-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-30"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the name of the entry in the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-24"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("other")])]),e._v(" "),a("blockquote",[a("p",[e._v("Other columns of the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-32"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "1",\n "name": "default_page",\n "value": "P(Page content)",\n "default_menu": "default_menu",\n "validate_count": 1\n} \n')])])]),a("h4",{attrs:{id:"error-response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-22"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_QUERY")]),e._v(", "),a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of contracts in the current ecosystem, with the ability to set offsets and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-31"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contracts\n")])])]),a("h4",{attrs:{id:"response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-25"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract contents.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("wallet_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The account address to which the contract is tied.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("address")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("ecosystem_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("app_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The application ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the contract.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("token_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ID of the ecosystem where the pass is used to pay the contract fee.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-33"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "MainCondition",\n "token_id": "1", \n "wallet_id": "0", \n "value": "contract MainCondition {\nconditions {\n if(EcosysParam(`founder_account`)! =$key_id)\n {\n warning `Sorry, you dont have access to this action.`\n }\n }\n}",\n"address": "0000-0000-0000-0000-0000-0000",\n"conditions": "ContractConditions(`MainCondition`)" \n }, \n...\n ]\n} \n')])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified contract. The default is to query the contract in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-32"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contract/mycontract\n")])])]),a("h4",{attrs:{id:"response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-26"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID in VM.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("state")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the contract.")])])]),e._v(" "),a("li",[a("p",[e._v("*walletid")]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account to which the contract is tied.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tokenid")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the pass that is used to pay for the contract.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tableid")])]),e._v(" "),a("p",[e._v("ID of the entry in the > "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("fields")])])]),e._v(" "),a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("> The array contains structural information for each parameter of the contract **data** section.\n>\n> > - *name*\n> >\n> > > Parameter name.\n> >\n> > - \n> >\n> > *type*\n> >\n> > Parameter type.\n> >\n> > - *optional*\n> >\n> > > Parameter options, \\`true\\` means optional parameters, \\`false\\` means mandatory parameters.\n")])])]),a("h4",{attrs:{id:"response-example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-34"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "fields" : [\n {"name": "amount", "type": "int", "optional": false},\n {"name": "name", "type": "string", "optional": true}\n ],\n "id": 150,\n "name":"@1mycontract",\n "tableid" : 10,\n} \n')])])]),a("h4",{attrs:{id:"error-response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-23"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_CONTRACT")])]),e._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[e._v("#")]),e._v(" sendTX")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReceives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an Error Response.")]),e._v(" "),a("h4",{attrs:{id:"request-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-33"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tx_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction content, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/sendTx\n\nHeaders:\nContent-Type: multipart/form-data\n\nParameters:\ntx1 - Transaction 1\ntxN - Trading N\n")])])]),a("h4",{attrs:{id:"response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-27"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hashes")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash arrays.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("tx1")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading 1 hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("txN")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading N's hash.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-35"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hashes": {\n "tx1": "67afbc435634..... ",\n "txN": "89ce4498eaf7..... ",\n}\n')])])]),a("h4",{attrs:{id:"error-response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-24"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_LIMITTXSIZE")]),e._v(","),a("em",[e._v("E_BANNED")])]),e._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[e._v("#")]),e._v(" txstatus")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReturns the block ID and error message for the specified transaction hash. If the return values for the block ID and error text message are null, then the transaction is not yet contained in the block.")]),e._v(" "),a("h4",{attrs:{id:"request-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-34"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON list of transaction hashes.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/txstatus/\n")])])]),a("h4",{attrs:{id:"response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-28"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("blockid")])])]),e._v(" "),a("p",[e._v("If the transaction execution succeeds, the block ID is returned; if the transaction execution fails, the")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")]),e._v(" for [0]{.title-ref}.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("result")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("errmsg")])])]),e._v(" "),a("p",[e._v("Returns an error text message if the execution of the transaction fails.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-36"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n {\n "hash1": {\n "blockid": "3123",\n "result": "",\n },\n "hash2": {\n "blockid": "3124",\n "result": "",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-25"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG, E_HASHNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. Also returns the contract name and its associated parameters, if optional parameters are specified.")]),e._v(" "),a("h4",{attrs:{id:"request-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-35"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1\n")])])]),a("h4",{attrs:{id:"response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-29"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("blockid")])]),e._v(" "),a("blockquote",[a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("confirm")])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("data")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-37"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "blockid": "9",\n "confirm": 11,\n "data": {\n "block": "9",\n "contract": "@1NewContract",\n "params": {\n "ApplicationId": 1,\n "Conditions": "true",\n "Value": "contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t\\t}"\n }\n }\n}\n')])])]),a("h4",{attrs:{id:"error-response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-26"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[e._v("#")]),e._v(" txinfoMultiple")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns the transaction-related information for the specified hash.")]),e._v(" "),a("h4",{attrs:{id:"request-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-36"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hashes")])])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of transaction hashes.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('data: {"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfoMultiple\n")])])]),a("h4",{attrs:{id:"response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-30"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")])])])]),e._v(" "),a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[a("em",[e._v("confirm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-38"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n { \n "hash1": {\n "blockid": "3123",\n "confirm": "5",\n },\n "hash2": {\n "blockid": "3124",\n "confirm": "3",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-27"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"request-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-37"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, then search in the first ecosystem page by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/page/validators_count/@2page_name\n")])])]),a("h4",{attrs:{id:"response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-31"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("validate_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the number of nodes to be validated for the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-39"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-28"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a tree of code JSON objects for the specified page or menu name, which is the result of processing by the template engine.")]),e._v(" "),a("h4",{attrs:{id:"request-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-38"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name or menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current ecosystem page or menu by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/page/default\n")])])]),a("h4",{attrs:{id:"response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-32"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("menu")]),e._v(" || "),a("em",[e._v("title")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The name of the menu to which the page belongs when requesting it.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("menutree")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The page's menu JSON object tree when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("title")]),e._v("--head for the menu "),a("em",[e._v("content/menu/...")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/menu/...")]),e._v(" Menu title when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page or menu JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-40"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-29"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v('Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.\nRequest """""""')]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current eco-page by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-33"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/source/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree of the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-41"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-30"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page cannot be found.")]),e._v(" "),a("p",[e._v("This request does not require login authorization. To receive the correct hash when making requests to other nodes, you must also pass\n"),a("em",[e._v("ecosystem,keyID,roleID,isMobile")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-39"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/hash/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the page with the ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("keyID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roleID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isMobile")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter identification of the mobile platform.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-34"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-42"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n} \n')])])]),a("h4",{attrs:{id:"error-response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-31"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")])]),e._v(" "),a("h3",{attrs:{id:"content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content"}},[e._v("#")]),e._v(" content")]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" is specified as\n"),a("code",[e._v("true or 1")]),e._v(", then this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-40"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("template")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page code.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[source]")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("true or 1")]),e._v(" is specified, the JSON object tree does not perform any functions and receives data.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content\n")])])]),a("h4",{attrs:{id:"response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-35"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-43"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-32"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[e._v("#")]),e._v(" maxblockid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the highest block ID on the current node.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-41"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/maxblockid\n")])])]),a("h4",{attrs:{id:"response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-36"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("max_block_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The highest block ID on the current node.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-44"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "max_block_id" : 341,\n}\n')])])]),a("h4",{attrs:{id:"error-response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-33"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"block-id"}},[e._v("block/{id}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified block ID.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-42"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/block/32\n")])])]),a("h4",{attrs:{id:"response-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-37"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("time")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tx_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of transactions in the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("rollbacks_hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("node_position")])]),e._v(" "),a("blockquote",[a("p",[e._v("The position of the block in the honor node list.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-45"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek=",\n "key_id": -118432674655542910,\n "time": 1551145365,\n "tx_count": 3,\n "rollbacks_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",\n "node_position": 0,\n} \n')])])]),a("h4",{attrs:{id:"error-response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-34"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the avatar of the user in the "),a("em",[e._v("member")]),e._v(" table (available without login).")]),e._v(" "),a("h4",{attrs:{id:"request-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-43"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("member")])]),e._v(" "),a("blockquote",[a("p",[e._v("The user's account address. (xxxx-... -xxxx)")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/avatar/1/1234-2134-... -4321\n")])])]),a("h4",{attrs:{id:"response-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-38"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The request header "),a("em",[e._v("Content-Type")]),e._v(" is the image type and the image data is returned in the response body.")]),e._v(" "),a("h4",{attrs:{id:"response-example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-46"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("200 (OK)\nContent-Type: image/png \n")])])]),a("h4",{attrs:{id:"error-response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-35"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")]),e._v(" "),a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the host address and port of centrifugo.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-44"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/config/centrifugo\n")])])]),a("h4",{attrs:{id:"response-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-39"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Response result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-36"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[e._v("#")]),e._v(" updnotificator")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/")]),e._v(" "),a("p",[e._v("(Discarded)")]),e._v(" "),a("p",[e._v("Sends all messages that have not yet been sent to the centrifugo notification service. Sends only messages for the specified ecosystem and members.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-45"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Member's account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/updnotificator\n")])])]),a("h4",{attrs:{id:"response-example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-47"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "result": true\n} \n')])])]),a("h3",{attrs:{id:"special-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-instructions"}},[e._v("#")]),e._v(" Special instructions")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("If the field has an omitempty attribute, it means that the field is an optional parameter")]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("If the interface with Authorization tag, that this interface requires login authorization, add Authorization to the request header, example.")]),e._v(" "),a("p",[e._v('key = Authorization\nvalue = "Bearer + '),a("a",{attrs:{href:"#login"}},[e._v("login token")]),e._v('"')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Authorization Bearer eyJhbGciOiJI..... kBZgGIlPhfXNZJ73RiZtM\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{455:function(e,t,a){"use strict";a.r(t);var s=a(51),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"restful-api-v2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restful-api-v2"}},[e._v("#")]),e._v(" RESTful API v2")]),e._v(" "),a("p",[e._v("Weaver\nAll functions provided, including authentication, ecosystem data reception, error handling, database table manipulation, page and contract execution are available through\nIBAX Blockchain Platform's REST API is available.")]),e._v(" "),a("p",[e._v("By using the REST API, developers can access any of the platform's features without using Weaver.")]),e._v(" "),a("p",[e._v("API command calls are executed by addressing "),a("code",[e._v("/api/v2/command/[param]")]),e._v(", where "),a("code",[e._v("command")]),e._v("\nis the command name and "),a("code",[e._v("param")]),e._v(" is the additional parameter. The request parameters must be specified using the\n"),a("code",[e._v("Content-Type: x-www-form-urlencoded")]),e._v("\nThe format is sent. The server response result is in JSON format.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-response-handling"}},[e._v("Error response handling")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#error-list"}},[e._v("Error list")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#request-type"}},[e._v("Request Type")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#authentication-interface"}},[e._v("Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#getuid"}},[e._v("getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#login"}},[e._v("login")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#server-side-command-interface"}},[e._v("Server Side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#version"}},[e._v("version")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-request-function-interface"}},[e._v("Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#balance"}},[e._v("balance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#blocks"}},[e._v("blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#keyinfo"}},[e._v("keyinfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#wallethistory"}},[e._v("walletHistory")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#get-metrics-interface"}},[e._v("Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#metrics-honornodes"}},[e._v("metrics/honornodes")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-interface"}},[e._v("Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ecosystemname"}},[e._v("ecosystemname")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparams-appid"}},[e._v("appparams/{appID}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparams"}},[e._v("ecosystemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#table-name"}},[e._v("table/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#row-name-column-id"}},[e._v("row/{name}/{column}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#systemparams"}},[e._v("systemparams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-function-interface"}},[e._v("Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#sendtx"}},[e._v("sendTX")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txstatus"}},[e._v("txstatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#txinfomultiple"}},[e._v("txinfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#content"}},[e._v("content")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#maxblockid"}},[e._v("maxblockid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-id"}},[e._v("block/{id}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#updnotificator"}},[e._v("updnotificator")])])])])]),e._v(" "),a("h2",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Return status in case of successful request execution\n"),a("code",[e._v("200")]),e._v(". If an error occurs, in addition to the error status, a JSON object with the following fields will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("error")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error identifier.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("msg")])]),e._v(" "),a("blockquote",[a("p",[e._v("Error text message.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")])]),e._v(" "),a("blockquote",[a("p",[e._v("An array of additional parameters that can be placed in the error message.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('400 (Bad request)\nContent-Type: application/json\n{\n "err": "E_INVALIDWALLET",\n "msg": "Wallet 1234-5678-9012-3444-3488 is not valid",\n "params": ["1234-5678-9012-3444-3488"]\n}\n')])])]),a("h3",{attrs:{id:"error-list"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-list"}},[e._v("#")]),e._v(" Error list")]),e._v(" "),a("blockquote",[a("p",[e._v("E_CONTRACT")])]),e._v(" "),a("p",[e._v("No "),a("code",[e._v("%s")]),e._v(" contract exists")]),e._v(" "),a("blockquote",[a("p",[e._v("E_DBNIL")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database is empty\n")])])]),a("blockquote",[a("p",[e._v("E_DELETEDKEY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address is frozen\n")])])]),a("blockquote",[a("p",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Ecosystem `%d` does not exist\n")])])]),a("blockquote",[a("p",[e._v("E_EMPTYPUBLIC")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Invalid account public key\n")])])]),a("blockquote",[a("p",[e._v("E_KEYNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Account address not found\n")])])]),a("blockquote",[a("p",[e._v("E_HASHWRONG")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect hash\n")])])]),a("blockquote",[a("p",[e._v("E_HASHNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Hash not found\n")])])]),a("blockquote",[a("p",[e._v("E_HEAVYPAGE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Too much page loading\n")])])]),a("blockquote",[a("p",[e._v("E_INVALIDWALLET")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Wallet address `%s` Invalid\n")])])]),a("blockquote",[a("p",[e._v("E_LIMITTXSIZE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The transaction size has exceeded the limit\n")])])]),a("blockquote",[a("p",[e._v("E_NOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Page or menu content not found\n")])])]),a("blockquote",[a("p",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Parameters not found\n")])])]),a("blockquote",[a("p",[e._v("E_PERMISSION")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("No permission\n")])])]),a("blockquote",[a("p",[e._v("E_QUERY")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Database query error\n")])])]),a("blockquote",[a("p",[e._v("E_RECOVERED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("API panic error occurs.\n\nIf a panic error occurs, an error is returned.\n\nThis error means that you have encountered a bug that needs to be found and fixed.\n")])])]),a("blockquote",[a("p",[e._v("E_SERVER")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Server error.\n\nReturn if there is an error in the golang library function. The \\*msg\\* field contains the error text message.\n\n**E_SERVER** may appear in response to any command Error. \nIf it occurs due to an incorrect input parameter, it can be changed to a related error. In another case, this error reports an invalid operation or incorrect system configuration, which requires a more detailed investigation report.\n")])])]),a("blockquote",[a("p",[e._v("E_SIGNATURE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Incorrect signature\n")])])]),a("blockquote",[a("p",[e._v("E_STATELOGIN")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("`%s` is not a member of the ecosystem `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Data sheet `%s` not found\n")])])]),a("blockquote",[a("p",[e._v("E_TOKENEXPIRED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The session has expired `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_UNAUTHORIZED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unauthorized.\n\nIn case no login is performed or the session expires, \nexcept for `getuid, login` Any command other than **E_UNAUTHORIZED** returns an error.\n")])])]),a("blockquote",[a("p",[e._v("E_UNKNOWNUID")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Unknown UID\n")])])]),a("blockquote",[a("p",[e._v("E_UPDATING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Nodes are updating the blockchain\n")])])]),a("blockquote",[a("p",[e._v("E_STOPPING")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Node is stopped\n")])])]),a("blockquote",[a("p",[e._v("E_NOTIMPLEMENTED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Not yet achieved\n")])])]),a("blockquote",[a("p",[e._v("E_BANNED")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("This account address is prohibited in `%s`\n")])])]),a("blockquote",[a("p",[e._v("E_CHECKROLE")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("Access denied\n\nCLB Unavailable Interface\n")])])]),a("hr"),e._v(" "),a("blockquote",[a("p",[e._v("Interface requests for which the CLB node is not available.")])]),e._v(" "),a("ul",[a("li",[e._v("metrics")]),e._v(" "),a("li",[e._v("txinfo")]),e._v(" "),a("li",[e._v("txinfoMultiple")]),e._v(" "),a("li",[e._v("appparam")]),e._v(" "),a("li",[e._v("appparams")]),e._v(" "),a("li",[e._v("appcontent")]),e._v(" "),a("li",[e._v("history")]),e._v(" "),a("li",[e._v("balance")]),e._v(" "),a("li",[e._v("block")]),e._v(" "),a("li",[e._v("maxblockid")]),e._v(" "),a("li",[e._v("blocks")]),e._v(" "),a("li",[e._v("detailed_blocks")]),e._v(" "),a("li",[e._v("ecosystemparams")]),e._v(" "),a("li",[e._v("systemparams")]),e._v(" "),a("li",[e._v("ecosystems")]),e._v(" "),a("li",[e._v("ecosystemparam")]),e._v(" "),a("li",[e._v("ecosystemname")]),e._v(" "),a("li",[e._v("walletHistory")]),e._v(" "),a("li",[e._v("tx_record")])]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request Type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("application/x-www-form-urlencoded")])]),e._v(" "),a("h2",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://jwt.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("JWT token"),a("OutboundLink")],1),e._v("\nUsed for authentication. The JWT token must be placed in each request header after it is received: "),a("code",[e._v("Authorization: Bearer TOKEN_HERE")]),e._v(".")]),e._v(" "),a("h3",{attrs:{id:"getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getuid"}},[e._v("#")]),e._v(" getuid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ returns a unique value, signs it with the private key, and then uses\nThe "),a("a",{attrs:{href:"#login"}},[e._v("login")]),e._v(" command sends it back to the server.")]),e._v(" "),a("p",[e._v("Generate a temporary JWT token that needs to be passed to "),a("strong",[e._v("Authorization")]),e._v(" when calling "),a("strong",[e._v("login")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/getuid\n")])])]),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("uid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Signature number.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("The temporary token passed during login.")]),e._v(" "),a("p",[e._v("The life cycle of a temporary token is 5 seconds.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("cryptoer")])]),e._v(" "),a("blockquote",[a("p",[e._v("Elliptic curve algorithm.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hasher")])]),e._v(" "),a("blockquote",[a("p",[e._v("hash algorithm.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-1"}},[e._v("#")]),e._v(" Response Example 1")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "uid": "4999317241855959593",\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....... .I7LY6XX4IP12En6nr8UPklE9U4qicqg3K9KEzGq_8zE"\n "network_id": "4717243765193692211"\n}\n')])])]),a("p",[e._v("In the case that no authorization is required (the request contains "),a("strong",[e._v("Authorization")]),e._v("), the following message will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("expire")])]),e._v(" "),a("blockquote",[a("p",[e._v("Expiration time.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("network_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Server identifier.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-2"}},[e._v("#")]),e._v(" Response Example 2")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "expire": "2159h59m49.4310543s",\n "ecosystem_id": "1",\n "key_id": "-654321",\n "address": "1196-...... -3496",\n "network_id": "1"\n}\n')])])]),a("h4",{attrs:{id:"error-response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[e._v("#")]),e._v(" login")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/ User authentication.")]),e._v(" "),a("blockquote",[a("p",[a("strong",[e._v("getuid")]),e._v(" should be called first\ncommand in order to receive the unique value and sign it. getuid's temporary JWT token needs to be passed in the request header.")]),e._v(" "),a("p",[e._v("If the request is successful, the token received in the response is contained in "),a("strong",[e._v("Authorization")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/login\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")]),e._v(" "),a("p",[e._v("If not specified, defaults to the first ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[expire]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Lifecycle of the JWT token, in seconds, default is 28800.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[pubkey]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal account public key.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[key_id]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("signature")])]),e._v(" "),a("blockquote",[a("p",[e._v("The uid signature received via getuid.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("token")])]),e._v(" "),a("blockquote",[a("p",[e._v("JWT token.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account Address ID")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("account")])]),e._v(" "),a("blockquote",[a("p",[e._v("Wallet address "),a("code",[e._v("XXXX-XXXX-..... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("notify_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Notification ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isnode")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isowner")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the account address is the creator of the ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("clb")])]),e._v(" "),a("blockquote",[a("p",[e._v("Whether the logged-in ecosystem is CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role list: "),a("code",[e._v("[{Role ID,Role Name}]")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-3"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.....30l665h3v7lH85rs5jgk0",\n "ecosystem_id": "1",\n "key_id": "-54321",\n "account": "1285-... -7743-4282",\n "notify_key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..... _JTFfheD0K4CfMbvVNpOJVMNDPx25zIDGir9g3ZZM0w",\n "timestamp": "1451309883",\n "roles": [\n {\n "role_id": 1,\n "role_name": "Developer"\n }\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-2"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_UNKNOWNUID, E_SIGNATURE, E_STATELOGIN, E_EMPTYPUBLIC")])]),e._v(" "),a("h2",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" Server Side command interface")]),e._v(" "),a("h3",{attrs:{id:"version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[e._v("#")]),e._v(" version")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current server version.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/version\n")])])]),a("h4",{attrs:{id:"response-example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-4"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n"1.3.0 branch.main commit.790..757 time.2021-08-23-08:20:19(UTC)"\n')])])]),a("h2",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("h3",{attrs:{id:"balance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#balance"}},[e._v("#")]),e._v(" balance")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Requests the balance of the account address in the current ecosystem.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/balance/{wallet}\n")])])]),a("ul",[a("li",[a("p",[e._v("*wallet")]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(". Look up the address in the ecosystem where the user is currently logged in.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default eco1")]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem id.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("amount")])]),e._v(" "),a("blockquote",[a("p",[e._v("The minimum unit of contract account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("money")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account balance.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("utxo")])]),e._v(" "),a("blockquote",[a("p",[e._v("UTXO account balance.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-5"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "amount": "877450000000000",\n "money": "877.45",\n "total": "877450000000000",\n "utxo": "0"\n} \n')])])]),a("h4",{attrs:{id:"error-response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-3"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blocks"}},[e._v("#")]),e._v(" blocks")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing additional information related to the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-5"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET \n/api/v2/blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information for each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("contract_name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("params")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of contract parameters.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("For the first block, it is the account address of the first block that signed the transaction.")])]),e._v(" "),a("blockquote",[a("p",[e._v("For all other blocks, is the address of the account that signed the transaction.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-6"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "1":\n [{"hash": "O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":-118432674655542910}]\n}\n')])])]),a("h4",{attrs:{id:"error-response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-4"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"detailed-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#detailed-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"detailed-blocks"}},[e._v("detailed_blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-6"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/detailed_blocks\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("block_id")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default is 0")]),e._v(" "),a("blockquote",[a("p",[e._v("The height of the starting block to query.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("count")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" (default is 25, max request 1000)")]),e._v(" "),a("blockquote",[a("p",[e._v("Number of blocks.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Block height")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("blockhead")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block header contains the following fields.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("block_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block height.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for the block.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("node_position")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("The location of the node that generated the block in the honor node list.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("version")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Block structure version.")])])])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block Hashing.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("node_position")])])]),e._v(" "),a("p",[e._v("the location of the node that generated the block in the honor node list.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("key_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("time")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("tx_count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of transactions within the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("size")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block size.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("rollback_hash")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("merkle_root")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The block deals with the Merkle tree.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bin_data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("trading")])])]),e._v(" "),a("blockquote",[a("p",[e._v("List of transactions in the block and additional information about each transaction.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("hash")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trading hash.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("contract_name")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract name.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("params")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Contract parameters.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("key_id")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Sign the account address for this transaction.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("time")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction generation timestamp.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("type")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Transaction type.")])])]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("size")])])])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Trade Size.")])])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-7"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"1":\n {"header":\n {"block_id":1,\n "time":1551069320,\n "ecosystem_id":0,\n "key_id":-118432674655542910,\n "node_position":0,\n "version":1},\n "hash":"3NxhvswmpGvRdw8HdkrniI5Mx/q14Z4d5hwGKMp6KHI=",\n "ecosystem_id":0,\n "node_position":0,\n "key_id":-118432674655542910,\n "time":1551069320,\n "tx_count":1,\n "size": "1.69KiB",\n "rollbacks_hash":"I2JHugpbdMNxBdNW1Uc0XnbiXFtzB74yD9AK5YI5i/k=",\n "mrkl_root":"MTZiMjY2NGJjOWY3MDAyODlhYjkyMDVhZDQwNDgxNzkxMjY1MWJjNjczNDkyZjk5MWI2Y2JkMjAxNTIwYjUyYg==",\n "bin_data":null,\n "sys_update":false,\n "gen_block":false,\n "stop_count":0,\n "transactions":[\n {\n "hash":"O1LhrjKznrYa0z5n5cej6p5Y1j5E9v/oV27VPRJmfgo=",\n "contract_name":"",\n "params":null,\n "key_id":0,\n "time":0,\n "type":0,\n "size": "300.00B"\n }\n ]}\n}\n')])])]),a("h4",{attrs:{id:"error-response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-5"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystems with roles registered to the specified address.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-7"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{key_id}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, can be specified in any format "),a("code",[e._v("int64, uint64, XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("The request is queried in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-6"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of roles with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-8"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-6"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"data-id-data-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-id-data-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matching the data in the binary watch, field, and records, this request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-8"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{id}/data/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-7"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-9"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\n{\n "name": "NFT Miner",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "data": [\n {\n "Type": "contracts",\n "Name": "NewNFTMiner",\n },\n ...\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-7"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"data-table-id-column-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-table-id-column-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ If the specified hash matches the data in the specified table, field, and records, the request will return the data. Otherwise, return error.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-9"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/data/{table}/id/{column}/{hash}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("table")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Record ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name, only one")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hash request data.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-8"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("p",[e._v("Binary data")])]),e._v(" "),a("h4",{attrs:{id:"response-example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-10"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: *\nContent-Disposition: attachment\n\nSetVar(this_page, @1voting_list).(this_table, @1votings)\nInclude(@1pager_header)\n\nSetTitle("$@1voting_list$")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: "$@1votings_list_desc$"))\nAddToolButton(Title: $@1templates_list$, Page: @1voting_templates_list, Icon: icon-pin)\nAddToolButton(Title: $@1create$, Page: @1voting_create, Icon: icon-plus).Popup(60, $@1new_voting$)\n\n')])])]),a("h4",{attrs:{id:"error-response-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-8"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_NOTFOUND, E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"keyinfo-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#keyinfo-2"}},[e._v("#")]),e._v(" keyinfo")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to a list of ecosystems, which contains the role of registered the specified address.")]),e._v(" "),a("p",[e._v("The request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-10"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/keyinfo/{address}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Address identifier, you can specify "),a("code",[e._v("int64, uint64, xxxx -...-xxxx")]),e._v(".")]),e._v(" "),a("p",[e._v("This request is query in all ecosystems.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-9"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecological system name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roles")])]),e._v(" "),a("blockquote",[a("p",[e._v("Activities with "),a("em",[e._v("id")]),e._v(" and "),a("em",[e._v("name")]),e._v(" fields.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-11"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n[{\n "ecosystem":"1",\n "name":"platform ecosystem",\n "roles":[{"id":"1","name":"Governancer"},{"id":"2","name":"Developer"}]\n}]\n')])])]),a("h4",{attrs:{id:"error-response-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-9"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER, E_INVALIDWALLET")])]),e._v(" "),a("h3",{attrs:{id:"wallethistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallethistory"}},[e._v("#")]),e._v(" walletHistory")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the current account transaction history record, find it according to the ID of the ID")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-11"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("searchType")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find Type (Income: Turn into Outcom: Turn out all: All, default).")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[page]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Find the number of pages, the first page default, min: 1")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 20 articles. min: 1, MAX: 500")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/walletHistory?searchType=all&page=1&limit=10\n")])])]),a("h4",{attrs:{id:"response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-10"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("total")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("page")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of current page.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("limit")])]),e._v(" "),a("blockquote",[a("p",[e._v("Currently find the number of bars.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("sender_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Send key_id")])])]),e._v(" "),a("li",[a("em",[e._v("sender_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Send the account address")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept key_id")])])]),e._v(" "),a("li",[a("em",[e._v("recipient_add")]),e._v(" "),a("blockquote",[a("p",[e._v("Accept the account address")])])]),e._v(" "),a("li",[a("em",[e._v("amount")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])]),e._v(" "),a("li",[a("em",[e._v("comment")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading remarks")])])]),e._v(" "),a("li",[a("em",[e._v("block_id")]),e._v(" "),a("blockquote",[a("p",[e._v("Block height")])])]),e._v(" "),a("li",[a("em",[e._v("tx_hash")]),e._v(" "),a("blockquote",[a("p",[e._v("Trading hash")])])]),e._v(" "),a("li",[a("em",[e._v("created_at")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction creation time, millisecond time stamp")])])]),e._v(" "),a("li",[a("em",[e._v("money")]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction amount")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-12"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "page": 1,\n "limit": 10,\n "total": 617,\n "list": [\n {\n "id": 650,\n "sender_id": 666081971617879...,\n "sender_add": "0666-0819-7161-xxxx-5186",\n "recipient_id": 666081971617879...,\n "recipient_add": "0666-0819-7161-xxxx-5186",\n "amount": "242250000",\n "comment": "taxes for execution of @1Export contract",\n "block_id": 209,\n "tx_hash": "a213bc767d710a223856d83515d53518075b56fb9e9c063bce8a256c20ff0775",\n "created_at": 1666001092090,\n "money": "0.00024225"\n }\n ...\n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-10"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"listwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#listwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"listWhere-name"}},[e._v("listWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-12"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/listWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-11"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-13"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-11"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"nodelistwhere-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nodelistwhere-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"nodelistWhere-name"}},[e._v("nodelistWhere/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the specified data table. You can specify columns to be returned. The type in the data table is "),a("strong",[e._v("BYTEA")]),e._v(" Do hexadecimal encoding processing")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"request-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-13"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Credit number, default 25.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Disposal, default to 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[order]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Sorting method, default "),a("code",[e._v("id ASC")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request columns is separated by commas. If it is not specified, all columns will be returned. In all cases, the "),a("code",[e._v("id")]),e._v(" column will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[where]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Query condition")]),e._v(" "),a("p",[e._v("Example: If you want to query id> 2 and name = john")]),e._v(" "),a("p",[e._v('You can use: where: {"id": {"$ gt": 2}, "name": {"$eq": "john"}}')]),e._v(" "),a("p",[e._v("For details, please refer to [DBFind](../ topics/script.md#dbfind) where syntax")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/nodelistWhere/mytable\n")])])]),a("h4",{attrs:{id:"response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-12"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element in the array contains the following parameters:")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("em",[e._v("...")]),e._v(" "),a("blockquote",[a("p",[e._v("Data tables other columns")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-14"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 1,\n "list": [\n {\n "account": "xxxx-0819-7161-xxxx-xxxx",\n "ecosystem": "1",\n "id": "12",\n "key": "avatar",\n "value": "{\\"binary_id\\": 4}"\n }\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-12"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")]),e._v(","),a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("h3",{attrs:{id:"metrics-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-keys"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-keys"}},[e._v("metrics/keys")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystem 1 account addresses.")]),e._v(" "),a("h4",{attrs:{id:"request-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-14"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/keys\n")])])]),a("h4",{attrs:{id:"response-example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-15"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-blocks"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-blocks"}},[e._v("metrics/blocks")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of blocks.")]),e._v(" "),a("h4",{attrs:{id:"request-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-15"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/blocks\n")])])]),a("h4",{attrs:{id:"response-example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-16"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-transactions"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-transactions"}},[e._v("metrics/transactions")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the total number of transactions.")]),e._v(" "),a("h4",{attrs:{id:"request-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-16"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/transactions\n")])])]),a("h4",{attrs:{id:"response-example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-17"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-ecosystems"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"metrics-ecosystems"}},[e._v("metrics/ecosystems")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of ecosystems.")]),e._v(" "),a("h4",{attrs:{id:"request-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-17"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/ecosystems\n")])])]),a("h4",{attrs:{id:"response-example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-18"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h3",{attrs:{id:"metrics-honornodes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#metrics-honornodes"}},[e._v("#")]),e._v(" metrics/honornodes")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the number of honor nodes.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/metrics/honornodes\n")])])]),a("h4",{attrs:{id:"response-example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-19"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": 28\n}\n')])])]),a("h2",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("h3",{attrs:{id:"ecosystemname"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemname"}},[e._v("#")]),e._v(" ecosystemname")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the name of the ecosystem by its identifier.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemname?id=1\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-20"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "ecosystem_name": "platform_ecosystem"\n}\n')])])]),a("h4",{attrs:{id:"error-response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-13"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"appparams-appid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparams-appid"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparams-appid"}},[e._v("appparams/{appid}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of application parameters in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-18"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparams/{appid}\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[appid]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID; if not specified, the current ecosystem parameter will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")])]),e._v(" "),a("blockquote",[a("p",[e._v("The list of received parameters.")]),e._v(" "),a("p",[e._v("You can specify a comma-separated list of parameter names, for example:"),a("code",[e._v("/api/v2/appparams/1?names=name,mypar")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-13"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")]),e._v(", the name of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("value")]),e._v(", the value of the parameter.")]),e._v(" "),a("li",[a("em",[e._v("conditions")]),e._v(", change the permissions of the parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-21"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "mypar",\n "value": "My value",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-14"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"appparam-appid-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#appparam-appid-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"appparam-appid-name"}},[e._v("appparam/{appid}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the parameter "),a("strong",[e._v("{appid}")]),e._v(" of the application "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem\nThe information related to the")]),e._v(" "),a("h4",{attrs:{id:"request-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-19"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/appparam/{appid}/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("appid")])]),e._v(" "),a("blockquote",[a("p",[e._v("Application ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID (optional parameter).")]),e._v(" "),a("p",[e._v("Returns the current ecosystem by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-14"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-22"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "10",\n "name": "par",\n "value": "My value",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-15"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM, E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparams"}},[e._v("#")]),e._v(" ecosystemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of ecosystem parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-20"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparams/[?ecosystem=... &names=...]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID. if not specified, the current ecosystem ID will be returned.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[names]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("List of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example: "),a("code",[e._v("/api/v2/ecosystemparams/?names=name,currency,logo")]),e._v(".")])])])]),e._v(" "),a("h4",{attrs:{id:"response-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-15"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter value.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change permissions for parameters.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-23"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "name",\n "value": "MyState",\n "conditions": "true",\n }, \n { \n "name": "currency",\n "value": "MY",\n "conditions": "true",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-16"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"ecosystemparam-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystemparam-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"ecosystemparam-name"}},[e._v("ecosystemparam/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the parameter "),a("strong",[e._v("{name}")]),e._v(" in the current or specified ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-21"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/ecosystemparam/{name}[?ecosystem=1]\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the requested parameter.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[ecosystem]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("The default is to return the current ecosystem ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-16"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter value.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("conditions")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-24"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "name": "currency",\n "value": "MYCUR",\n "conditions": "true"\n} \n')])])]),a("h4",{attrs:{id:"error-response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-17"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_ECOSYSTEM")])]),e._v(" "),a("h3",{attrs:{id:"tables-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"tables-limit-offset"}},[e._v("tables/[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of data tables for the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-22"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 100, maximum 1000.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/tables?limit=... &offset=...\n")])])]),a("h4",{attrs:{id:"response-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-17"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("The total number of entries in the data table.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name without prefix.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("count")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of entries in the data table.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-25"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "100"\n "list": [{ \n "name": "accounts",\n "count": "10",\n }, \n { \n "name": "citizens",\n "count": "5",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"table-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#table-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"table-name"}},[e._v("table/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the current ecosystem request data table.")]),e._v(" "),a("h4",{attrs:{id:"request-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-23"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[name]")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/table/{table_name}\n")])])]),a("p",[e._v("Returns the following field information.")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("insert")])]),e._v(" "),a("blockquote",[a("p",[e._v("Permission to add new entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("new_column")])]),e._v(" "),a("blockquote",[a("p",[e._v("Add field permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("update")])]),e._v(" "),a("blockquote",[a("p",[e._v("Change entry permissions.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("columns")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of field-related information.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("type")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Field data type.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("perm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permissions for the field value.")])])])])])]),e._v(" "),a("h3",{attrs:{id:"list-name-limit-offset-columns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#list-name-limit-offset-columns"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"list-name-limit-offset-columns"}},[e._v("list/{name}[?limit=... &offset=... &columns=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/\nReturns a list of the specified data table entries in the current ecosystem. You can set the offset and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-24"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/list/mytable?columns=name\n")])])]),a("h4",{attrs:{id:"response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-18"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-26"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "John",\n }, \n { \n "id": "2",\n "name": "Mark",\n }, \n ]\n} \n')])])]),a("h3",{attrs:{id:"sections-limit-offset-lang"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sections-limit-offset-lang"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"sections-limit-offset-lang"}},[e._v("sections[?limit=... &offset=... &lang=]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the "),a("em",[e._v("sections")]),e._v(" of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("h4",{attrs:{id:"request-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-25"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[lang]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("This field specifies the multilingual resource code or localization, e.g., "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g., "),a("em",[e._v("en-US")]),e._v(", then the multilingual resource group in\nSearch in "),a("em",[e._v("en")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/sections\n")])])]),a("h4",{attrs:{id:"response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-19"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("sections")]),e._v(" Total number of table entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains information about all columns in the actions table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-27"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "2"\n "list": [{\n "id": "1",\n "title": "Development",\n "urlpage": "develop",\n ...\n },\n ]\n}\n')])])]),a("h4",{attrs:{id:"error-response-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-18"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_TABLENOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-id-columns-span"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-id-columns-span"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-id-columns"}},[e._v("row/{name}/{id}[?columns=]< /span>")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the entry for the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-26"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[columns]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned. The id column will be returned in all cases.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/row/mytable/10?columns=name\n")])])]),a("h4",{attrs:{id:"response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-20"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("value")])]),e._v(" "),a("blockquote",[a("p",[e._v("Array of received column values")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])]),e._v(" "),a("ul",[a("li",[e._v("The sequence of request columns.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-28"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "values": {\n "id": "10",\n "name": "John",\n }\n} \n')])])]),a("h4",{attrs:{id:"error-response-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-19"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"row-name-column-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#row-name-column-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"row-name-colorn-id"}},[e._v("row/{name}/{column}/{id} ")])]),e._v(" "),a("p",[e._v("[Authorization] (#Authorization)")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Return to the entry of the data table specified in the current ecosystem. You can specify columns to be returned.")]),e._v(" "),a("h4",{attrs:{id:"request-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-27"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Name *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data table name.")])])]),e._v(" "),a("li",[a("p",[e._v("*colorn *")]),e._v(" "),a("blockquote",[a("p",[e._v("Data list name.")])])]),e._v(" "),a("li",[a("p",[e._v("*ID *")]),e._v(" "),a("blockquote",[a("p",[e._v("Stripe ID.")])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[e._v("\\ [columns ] * [omitempty] (#omitempty)")]),e._v(" "),a("blockquote",[a("p",[e._v("The list of request lists is separated by commas. If it is not specified, all columns will be returned. In all cases, the ID column will be returned.")])])])])])]),e._v(" "),a("p",[a("code",[e._v("`default GET /API/V2/ROW/MyTable/name/John? Columns = name")]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-21"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("*Value *")]),e._v(" "),a("blockquote",[a("p",[e._v("Array of receiving column values\nForecast")]),e._v(" "),a("ul",[a("li",[e._v("*ID *")])]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[e._v("Strip ID.")])])]),e._v(" "),a("ul",[a("li",[e._v("-The sequence of the request column.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-29"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("p",[a("code",[e._v('`default 200 (OK) Content-type: Application/JSON {{ "Values": { "ID": "10", "name": "John", } }')]),e._v(" `")]),e._v(" "),a("h4",{attrs:{id:"error-response-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-20"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#systemparams"}},[e._v("#")]),e._v(" systemparams")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of platform parameters.")]),e._v(" "),a("h4",{attrs:{id:"request-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-28"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/systemparams/[?names=...]\n")])])]),a("ul",[a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("*\\[names\\]* [Omitempty](#omitempty)\n\nA list of request parameters, separated by commas. For example\n `/api/v2/systemparams/?names=max_columns,max_indexes`.\n")])])]),a("h4",{attrs:{id:"response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-22"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Parameter values.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-30"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [{ \n "name": "max_columns",\n "value": "100",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n { \n "name": "max_indexes",\n "value": "1",\n "conditions": "ContractAccess("@1UpdateSysParam")",\n }, \n ]\n} \n')])])]),a("h4",{attrs:{id:"error-response-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-21"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_PARAMNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"history-name-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history-name-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"history-name-id"}},[e._v("history/{name}/{id}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the change record for the entry in the specified data table in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-29"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/history?name=contracts&id=5\n")])])]),a("blockquote",[a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("p",[e._v("Data Table Name.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("h4",{attrs:{id:"response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-23"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("list")])])]),e._v(" "),a("p",[e._v("Each element of the array contains a change record for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"response-example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-31"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "list": [\n {\n "name": "default_page",\n "value": "P(class, Default Ecosystem Page)"\n },\n {\n "menu": "default_menu"\n }\n ]\n}\n')])])]),a("h3",{attrs:{id:"interface-page-menu-snippet-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#interface-page-menu-snippet-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"interface-page-menu-snippet-name"}},[e._v("interface/{page|menu|snippet}/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the current ecosystem in the specified data table (pages, menu or snippet) "),a("em",[e._v("name")]),e._v("\nThe entry for the field.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/interface/page/default_page\n/api/v2/interface/menu/default_menu\n/api/v2/interface/snippet/welcome\n")])])]),a("h4",{attrs:{id:"request-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-30"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the name of the entry in the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-24"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Entry name.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("other")])]),e._v(" "),a("blockquote",[a("p",[e._v("Other columns of the table.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-32"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "id": "1",\n "name": "default_page",\n "value": "P(Page content)",\n "default_menu": "default_menu",\n "validate_count": 1\n} \n')])])]),a("h4",{attrs:{id:"error-response-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-22"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_QUERY")]),e._v(", "),a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h2",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("h3",{attrs:{id:"contracts-limit-offset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contracts-limit-offset"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contracts-limit-offset"}},[e._v("contracts[?limit=... &offset=... ]")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns a list of contracts in the current ecosystem, with the ability to set offsets and the number of entries.")]),e._v(" "),a("h4",{attrs:{id:"request-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-31"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("[limit]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of entries, default 25 entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[offset]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Offset, default is 0.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contracts\n")])])]),a("h4",{attrs:{id:"response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-25"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of entries.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("list")])]),e._v(" "),a("blockquote",[a("p",[e._v("Each element of the array contains the following parameters.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("name")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("value")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract contents.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("wallet_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The account address to which the contract is tied.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("address")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("ecosystem_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("app_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The application ID to which the contract belongs.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("conditions")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Change the permission of the contract.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("token_id")])])]),e._v(" "),a("blockquote",[a("p",[e._v("The ID of the ecosystem where the pass is used to pay the contract fee.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-33"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "count": "10"\n "list": [{ \n "id": "1",\n "name": "MainCondition",\n "token_id": "1", \n "wallet_id": "0", \n "value": "contract MainCondition {\nconditions {\n if(EcosysParam(`founder_account`)! =$key_id)\n {\n warning `Sorry, you dont have access to this action.`\n }\n }\n}",\n"address": "0000-0000-0000-0000-0000-0000",\n"conditions": "ContractConditions(`MainCondition`)" \n }, \n...\n ]\n} \n')])])]),a("h3",{attrs:{id:"contract-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"contract-name"}},[e._v("contract/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified contract. The default is to query the contract in the current ecosystem.")]),e._v(" "),a("h4",{attrs:{id:"request-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-32"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/contract/mycontract\n")])])]),a("h4",{attrs:{id:"response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-26"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract ID in VM.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("state")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the contract.")])])]),e._v(" "),a("li",[a("p",[e._v("*walletid")]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account to which the contract is tied.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tokenid")])]),e._v(" "),a("blockquote",[a("p",[e._v("The ecosystem ID of the pass that is used to pay for the contract.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("address")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract-bound wallet address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tableid")])]),e._v(" "),a("p",[e._v("ID of the entry in the > "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("fields")])])]),e._v(" "),a("li")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("> The array contains structural information for each parameter of the contract **data** section.\n>\n> > - *name*\n> >\n> > > Parameter name.\n> >\n> > - \n> >\n> > *type*\n> >\n> > Parameter type.\n> >\n> > - *optional*\n> >\n> > > Parameter options, \\`true\\` means optional parameters, \\`false\\` means mandatory parameters.\n")])])]),a("h4",{attrs:{id:"response-example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-34"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "fields" : [\n {"name": "amount", "type": "int", "optional": false},\n {"name": "name", "type": "string", "optional": true}\n ],\n "id": 150,\n "name":"@1mycontract",\n "tableid" : 10,\n} \n')])])]),a("h4",{attrs:{id:"error-response-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-23"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_CONTRACT")])]),e._v(" "),a("h3",{attrs:{id:"sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sendtx"}},[e._v("#")]),e._v(" sendTX")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReceives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an Error Response.")]),e._v(" "),a("h4",{attrs:{id:"request-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-33"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tx_key")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction content, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/sendTx\n\nHeaders:\nContent-Type: multipart/form-data\n\nParameters:\ntx1 - Transaction 1\ntxN - Trading N\n")])])]),a("h4",{attrs:{id:"response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-27"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hashes")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash arrays.")]),e._v(" "),a("blockquote",[a("ul",[a("li",[a("em",[e._v("tx1")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading 1 hash.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("txN")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading N's hash.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-35"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hashes": {\n "tx1": "67afbc435634..... ",\n "txN": "89ce4498eaf7..... ",\n}\n')])])]),a("h4",{attrs:{id:"error-response-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-24"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_LIMITTXSIZE")]),e._v(","),a("em",[e._v("E_BANNED")])]),e._v(" "),a("h3",{attrs:{id:"txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txstatus"}},[e._v("#")]),e._v(" txstatus")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/\nReturns the block ID and error message for the specified transaction hash. If the return values for the block ID and error text message are null, then the transaction is not yet contained in the block.")]),e._v(" "),a("h4",{attrs:{id:"request-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-34"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON list of transaction hashes.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/txstatus/\n")])])]),a("h4",{attrs:{id:"response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-28"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("blockid")])])]),e._v(" "),a("p",[e._v("If the transaction execution succeeds, the block ID is returned; if the transaction execution fails, the")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")]),e._v(" for [0]{.title-ref}.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("result")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("errmsg")])])]),e._v(" "),a("p",[e._v("Returns an error text message if the execution of the transaction fails.")])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-36"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n {\n "hash1": {\n "blockid": "3123",\n "result": "",\n },\n "hash2": {\n "blockid": "3124",\n "result": "",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-25"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG, E_HASHNOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"txinfo-hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfo-hash"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"txinfo-hash"}},[e._v("txinfo/{hash}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. Also returns the contract name and its associated parameters, if optional parameters are specified.")]),e._v(" "),a("h4",{attrs:{id:"request-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-35"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Transaction hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfo/c7ef367b494c7ce855f09aa3f1f2af7402535ea627fa615ebd63d437db5d0c8a?contractinfo=1\n")])])]),a("h4",{attrs:{id:"response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-29"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("blockid")])]),e._v(" "),a("blockquote",[a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("confirm")])]),e._v(" "),a("blockquote",[a("p",[e._v("The number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("data")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-37"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "blockid": "9",\n "confirm": 11,\n "data": {\n "block": "9",\n "contract": "@1NewContract",\n "params": {\n "ApplicationId": 1,\n "Conditions": "true",\n "Value": "contract crashci4b {\\n\\t\\t\\tdata {}\\n\\t\\t\\t}"\n }\n }\n}\n')])])]),a("h4",{attrs:{id:"error-response-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-26"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#txinfomultiple"}},[e._v("#")]),e._v(" txinfoMultiple")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/")]),e._v(" "),a("p",[e._v("Returns the transaction-related information for the specified hash.")]),e._v(" "),a("h4",{attrs:{id:"request-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-36"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("data")])]),e._v(" "),a("ul",[a("li",[a("em",[e._v("hashes")])])]),e._v(" "),a("blockquote",[a("p",[e._v("A list of transaction hashes.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[contractinfo]")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("blockquote",[a("p",[e._v("Contract detail parameter identifier, to get the contract details related to this transaction, specify "),a("code",[e._v("contractinfo=1")]),e._v(".")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('data: {"hashes":["contract1hash", "contract2hash", "contract3hash"]}\n')])])]),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/txinfoMultiple\n")])])]),a("h4",{attrs:{id:"response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-30"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("results")])]),e._v(" "),a("blockquote",[a("p",[e._v("The transaction hash is used as the key and the transaction detail is used as the value in the data dictionary.")]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Trading Hash.")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("blockid")])])])]),e._v(" "),a("p",[e._v("If the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("blockquote",[a("blockquote",[a("p",[a("em",[e._v("confirm")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Number of acknowledgements for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("blockquote",[a("p",[a("em",[e._v("data")])])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("contentinfo=1")]),e._v(" is specified, the contract details are returned to this parameter.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-38"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{ "results":\n { \n "hash1": {\n "blockid": "3123",\n "confirm": "5",\n },\n "hash2": {\n "blockid": "3124",\n "confirm": "3",\n }\n }\n }\n')])])]),a("h4",{attrs:{id:"error-response-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-27"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_HASHWRONG")])]),e._v(" "),a("h3",{attrs:{id:"page-validators-count-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-validators-count-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"page-validators-count-name"}},[e._v("/page/validators_count/{name}")])]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("p",[a("strong",[e._v("GET")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"request-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-37"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, then search in the first ecosystem page by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/page/validators_count/@2page_name\n")])])]),a("h4",{attrs:{id:"response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-31"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("validate_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Specifies the number of nodes to be validated for the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-39"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{"validate_count":1}\n')])])]),a("h4",{attrs:{id:"error-response-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-28"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-menu-page-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-menu-page-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-menu-page-name"}},[e._v("content/menu|page/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a tree of code JSON objects for the specified page or menu name, which is the result of processing by the template engine.")]),e._v(" "),a("h4",{attrs:{id:"request-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-38"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name or menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current ecosystem page or menu by default")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/page/default\n")])])]),a("h4",{attrs:{id:"response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-32"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("menu")]),e._v(" || "),a("em",[e._v("title")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The name of the menu to which the page belongs when requesting it.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("menutree")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/page/...")]),e._v(" The page's menu JSON object tree when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("title")]),e._v("--head for the menu "),a("em",[e._v("content/menu/...")])]),e._v(" "),a("blockquote",[a("p",[e._v("request "),a("em",[e._v("content/menu/...")]),e._v(" Menu title when requested.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page or menu JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-40"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-29"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"content-source-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-source-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-source-name"}},[e._v("content/source/{name}")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v('Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.\nRequest """""""')]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".\nIf no ecosystem ID is included, then search for the current eco-page by default.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-33"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/source/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree of the page.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-41"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-30"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"content-hash-name"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content-hash-name"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"content-hash-name"}},[e._v("content/hash/{name}")])]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page cannot be found.")]),e._v(" "),a("p",[e._v("This request does not require login authorization. To receive the correct hash when making requests to other nodes, you must also pass\n"),a("em",[e._v("ecosystem,keyID,roleID,isMobile")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-39"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content/hash/default\n")])])]),a("ul",[a("li",[a("p",[a("em",[e._v("name")])]),e._v(" "),a("blockquote",[a("p",[e._v("The name of the page with the ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("keyID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("roleID")])]),e._v(" "),a("blockquote",[a("p",[e._v("Role ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("isMobile")])]),e._v(" "),a("blockquote",[a("p",[e._v("The parameter identification of the mobile platform.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-34"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-42"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "b631b8c28761b5bf03c2cfbc2b49e4b6ade5a1c7e2f5b72a6323e50eae2a33c6"\n} \n')])])]),a("h4",{attrs:{id:"error-response-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-31"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER, E_HEAVYPAGE")])]),e._v(" "),a("h3",{attrs:{id:"content"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#content"}},[e._v("#")]),e._v(" content")]),e._v(" "),a("p",[a("strong",[e._v("POST")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" is specified as\n"),a("code",[e._v("true or 1")]),e._v(", then this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-40"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("template")])]),e._v(" "),a("blockquote",[a("p",[e._v("Page code.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("[source]")])]),e._v(" "),a("blockquote",[a("p",[e._v("If "),a("code",[e._v("true or 1")]),e._v(" is specified, the JSON object tree does not perform any functions and receives data.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/content\n")])])]),a("h4",{attrs:{id:"response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-35"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("tree")])]),e._v(" "),a("blockquote",[a("p",[e._v("JSON object tree.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-43"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "tree": {"type":"......" , \n "children": [\n {...} ,\n {...}\n ]\n },\n} \n')])])]),a("h4",{attrs:{id:"error-response-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-32"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND, E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maxblockid"}},[e._v("#")]),e._v(" maxblockid")]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the highest block ID on the current node.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-41"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/maxblockid\n")])])]),a("h4",{attrs:{id:"response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-36"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("max_block_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The highest block ID on the current node.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-44"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "max_block_id" : 341,\n}\n')])])]),a("h4",{attrs:{id:"error-response-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-33"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"block-id"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-id"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"block-id"}},[e._v("block/{id}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns information about the specified block ID.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-42"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/block/32\n")])])]),a("h4",{attrs:{id:"response-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-37"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("key_id")])]),e._v(" "),a("blockquote",[a("p",[e._v("The address of the account that signed the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("time")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block generation timestamp.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("tx_count")])]),e._v(" "),a("blockquote",[a("p",[e._v("Total number of transactions in the block.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("rollbacks_hash")])]),e._v(" "),a("blockquote",[a("p",[e._v("Block rollback hash.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("node_position")])]),e._v(" "),a("blockquote",[a("p",[e._v("The position of the block in the honor node list.")])])])]),e._v(" "),a("h4",{attrs:{id:"response-example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-45"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "hash": "1x4S5s/zNUTopP2YK43SppEyvT2O4DW5OHSpQfp5Tek=",\n "key_id": -118432674655542910,\n "time": 1551145365,\n "tx_count": 3,\n "rollbacks_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",\n "node_position": 0,\n} \n')])])]),a("h4",{attrs:{id:"error-response-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-34"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")])]),e._v(" "),a("h3",{attrs:{id:"avatar-ecosystem-member"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#avatar-ecosystem-member"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the avatar of the user in the "),a("em",[e._v("member")]),e._v(" table (available without login).")]),e._v(" "),a("h4",{attrs:{id:"request-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-43"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("member")])]),e._v(" "),a("blockquote",[a("p",[e._v("The user's account address. (xxxx-... -xxxx)")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/avatar/1/1234-2134-... -4321\n")])])]),a("h4",{attrs:{id:"response-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-38"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The request header "),a("em",[e._v("Content-Type")]),e._v(" is the image type and the image data is returned in the response body.")]),e._v(" "),a("h4",{attrs:{id:"response-example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-46"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("200 (OK)\nContent-Type: image/png \n")])])]),a("h4",{attrs:{id:"error-response-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-35"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_NOTFOUND")]),e._v(" "),a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"config-centrifugo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#config-centrifugo"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"config-centrifugo"}},[e._v("config/centrifugo")])]),e._v(" "),a("p",[a("strong",[e._v("GET")]),e._v("/ Returns the host address and port of centrifugo.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-44"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("GET\n/api/v2/config/centrifugo\n")])])]),a("h4",{attrs:{id:"response-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-39"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Response result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"error-response-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-36"}},[e._v("#")]),e._v(" Error Response")]),e._v(" "),a("p",[a("em",[e._v("E_SERVER")])]),e._v(" "),a("h3",{attrs:{id:"updnotificator"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#updnotificator"}},[e._v("#")]),e._v(" updnotificator")]),e._v(" "),a("p",[a("strong",[e._v("POST")]),e._v("/")]),e._v(" "),a("p",[e._v("(Discarded)")]),e._v(" "),a("p",[e._v("Sends all messages that have not yet been sent to the centrifugo notification service. Sends only messages for the specified ecosystem and members.")]),e._v(" "),a("p",[e._v("This request does not require login authorization.")]),e._v(" "),a("h4",{attrs:{id:"request-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-45"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("ul",[a("li",[a("p",[a("em",[e._v("id")])]),e._v(" "),a("blockquote",[a("p",[e._v("Member's account address.")])])]),e._v(" "),a("li",[a("p",[a("em",[e._v("ecosystem")])]),e._v(" "),a("blockquote",[a("p",[e._v("Ecosystem ID.")])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("POST\n/api/v2/updnotificator\n")])])]),a("h4",{attrs:{id:"response-example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-example-47"}},[e._v("#")]),e._v(" Response Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('200 (OK)\nContent-Type: application/json\n{\n "result": true\n} \n')])])]),a("h3",{attrs:{id:"special-instructions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-instructions"}},[e._v("#")]),e._v(" Special instructions")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("If the field has an omitempty attribute, it means that the field is an optional parameter")]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("If the interface with Authorization tag, that this interface requires login authorization, add Authorization to the request header, example.")]),e._v(" "),a("p",[e._v('key = Authorization\nvalue = "Bearer + '),a("a",{attrs:{href:"#login"}},[e._v("login token")]),e._v('"')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("Authorization Bearer eyJhbGciOiJI..... kBZgGIlPhfXNZJ73RiZtM\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/57.84653a3c.js b/assets/js/76.20b05096.js similarity index 98% rename from assets/js/57.84653a3c.js rename to assets/js/76.20b05096.js index fb7420c..377ca05 100644 --- a/assets/js/57.84653a3c.js +++ b/assets/js/76.20b05096.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{437:function(e,t,n){"use strict";n.r(t);var o=n(51),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration-file"}},[e._v("#")]),e._v(" Server Configuration File")]),e._v(" "),n("p",[e._v("In this section, we will introduce parameters in the server configuration file.")]),e._v(" "),n("h2",{attrs:{id:"introduction-to-the-server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#introduction-to-the-server-configuration-file"}},[e._v("#")]),e._v(" Introduction to the server configuration file")]),e._v(" "),n("p",[e._v("The server configuration file defines the node configuration of IBAX.")]),e._v(" "),n("h2",{attrs:{id:"location"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),n("p",[e._v("This file is located in the working directory of the server and is named "),n("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"sections"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sections"}},[e._v("#")]),e._v(" Sections")]),e._v(" "),n("p",[e._v("The configuration file consists the following sections:")]),e._v(" "),n("blockquote",[n("p",[e._v("general section")])]),e._v(" "),n("p",[e._v("It defines the working directory DataDir, the first block directory FirstBlockPath and other parameters.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TCPServer]")])]),e._v(" "),n("p",[e._v("It defines the TCP service parameters.")]),e._v(" "),n("p",[e._v("TCPServer is used for the network interaction between nodes.")]),e._v(" "),n("blockquote",[n("p",[e._v("[HTTP]")])]),e._v(" "),n("p",[e._v("It defines the HTTP service parameters.")]),e._v(" "),n("p",[e._v("HTTPServer provides RESTful APIs.")]),e._v(" "),n("blockquote",[n("p",[e._v("[DB]")])]),e._v(" "),n("p",[e._v("It defines parameters of the PostgreSQL node database.")]),e._v(" "),n("blockquote",[n("p",[e._v("[StatsD]")])]),e._v(" "),n("p",[e._v("It defines parameters of the node operation indicator collector StatsD.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Centrifugo]")])]),e._v(" "),n("p",[e._v("It defines parameters of the notification service Centrifugo.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Log]")])]),e._v(" "),n("p",[e._v("It defines parameters of the log service Log.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TokenMovement]")])]),e._v(" "),n("p",[e._v("It defines parameters of the token circulation service TokenMovement.")]),e._v(" "),n("h2",{attrs:{id:"an-example-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#an-example-configuration-file"}},[e._v("#")]),e._v(" An example configuration file")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{456:function(e,t,n){"use strict";n.r(t);var o=n(51),r=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration-file"}},[e._v("#")]),e._v(" Server Configuration File")]),e._v(" "),n("p",[e._v("In this section, we will introduce parameters in the server configuration file.")]),e._v(" "),n("h2",{attrs:{id:"introduction-to-the-server-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#introduction-to-the-server-configuration-file"}},[e._v("#")]),e._v(" Introduction to the server configuration file")]),e._v(" "),n("p",[e._v("The server configuration file defines the node configuration of IBAX.")]),e._v(" "),n("h2",{attrs:{id:"location"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),n("p",[e._v("This file is located in the working directory of the server and is named "),n("code",[e._v("config.toml")]),e._v(".")]),e._v(" "),n("h2",{attrs:{id:"sections"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sections"}},[e._v("#")]),e._v(" Sections")]),e._v(" "),n("p",[e._v("The configuration file consists the following sections:")]),e._v(" "),n("blockquote",[n("p",[e._v("general section")])]),e._v(" "),n("p",[e._v("It defines the working directory DataDir, the first block directory FirstBlockPath and other parameters.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TCPServer]")])]),e._v(" "),n("p",[e._v("It defines the TCP service parameters.")]),e._v(" "),n("p",[e._v("TCPServer is used for the network interaction between nodes.")]),e._v(" "),n("blockquote",[n("p",[e._v("[HTTP]")])]),e._v(" "),n("p",[e._v("It defines the HTTP service parameters.")]),e._v(" "),n("p",[e._v("HTTPServer provides RESTful APIs.")]),e._v(" "),n("blockquote",[n("p",[e._v("[DB]")])]),e._v(" "),n("p",[e._v("It defines parameters of the PostgreSQL node database.")]),e._v(" "),n("blockquote",[n("p",[e._v("[StatsD]")])]),e._v(" "),n("p",[e._v("It defines parameters of the node operation indicator collector StatsD.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Centrifugo]")])]),e._v(" "),n("p",[e._v("It defines parameters of the notification service Centrifugo.")]),e._v(" "),n("blockquote",[n("p",[e._v("[Log]")])]),e._v(" "),n("p",[e._v("It defines parameters of the log service Log.")]),e._v(" "),n("blockquote",[n("p",[e._v("[TokenMovement]")])]),e._v(" "),n("p",[e._v("It defines parameters of the token circulation service TokenMovement.")]),e._v(" "),n("h2",{attrs:{id:"an-example-configuration-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#an-example-configuration-file"}},[e._v("#")]),e._v(" An example configuration file")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('PidFilePath = "/IBAX-data/go-ibax.pid"\nLockFilePath = "/IBAX-data/go-ibax.lock"\nDataDir = "/IBAX-data"\nKeysDir = "/IBAX-data"\nTempDir = "/var/folders/_l/9md_m4ms1651mf5pbng1y1xh0000gn/T/IBAX-temp"\nFirstBlockPath = "/IBAX-data/1block"\nTLS = false\nTLSCert = ""\nTLSKey = ""\nOBSMode = "none"\nHTTPServerMaxBodySize = 1048576\nMaxPageGenerationTime = 3000\nNodesAddr = []\n\n[TCPServer]\n Host = "127.0.0.1"\n Port = 7078\n\n[HTTP]\n Host = "127.0.0.1"\n Port = 7079\n\n[DB]\n Name = "IBAX"\n Host = "127.0.0.1"\n Port = 5432\n User = "postgres"\n Password = "123456"\n LockTimeout = 5000\n\n[StatsD]\n Host = "127.0.0.1"\n Port = 8125\n Name = "IBAX"\n\n[Centrifugo]\n Secret = "127.0.0.1"\n URL = "127.0.0.1"\n\n[Log]\n LogTo = "stdout"\n LogLevel = "ERROR"\n LogFormat = "text"\n [Log.Syslog]\n Facility = "kern"\n Tag = "go-ibax"\n\n[TokenMovement]\n Host = ""\n Port = 0\n Username = ""\n Password = ""\n To = ""\n From = ""\n Subject = ""\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/77.b62b05f7.js b/assets/js/77.2586d174.js similarity index 98% rename from assets/js/77.b62b05f7.js rename to assets/js/77.2586d174.js index 80e1d7f..12833fc 100644 --- a/assets/js/77.b62b05f7.js +++ b/assets/js/77.2586d174.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{456:function(e,s,t){"use strict";t.r(s);var a=t(51),o=Object(a.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"synchronized-monitoring-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#synchronized-monitoring-tool"}},[e._v("#")]),e._v(" Synchronized Monitoring Tool")]),e._v(" "),t("p",[e._v("Desync_monitor is a special tool that can be used to verify whether the database on the specified node has been synchronized.")]),e._v(" "),t("p",[e._v("The tool can be used as a daemon or can be started to perform a one-time check.")]),e._v(" "),t("p",[e._v("The operating principle of the tool is based on the following:")]),e._v(" "),t("p",[e._v("1.Each block contains the hash of all changes of all transactions, request the specified node to provide its last block ID;\n2.Then request a block with this ID from all nodes and compare the above hashes;\n3.If the hashes are different, a synchronization error message will be sent to the email address specified in the command.")]),e._v(" "),t("h2",{attrs:{id:"location"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),t("p",[e._v("The tool is located in the "),t("code",[e._v("tools/desync_monitor/")]),e._v(" directory.")]),e._v(" "),t("h2",{attrs:{id:"command-prompt-flags"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#command-prompt-flags"}},[e._v("#")]),e._v(" Command prompt flags")]),e._v(" "),t("p",[e._v("The following flags can be used from the command prompt:")]),e._v(" "),t("ul",[t("li",[e._v("confPath - Path of the configuration file. The default file name is "),t("code",[e._v("config.toml")]),e._v(";")]),e._v(" "),t("li",[e._v("nodesList - Node list of the requested block, separated by commas. The default is "),t("code",[e._v("127.0.0.1:7079")]),e._v(";")]),e._v(" "),t("li",[e._v("daemonMode - Started as a daemon and should be used when authentication is required every N seconds. This flag is set to "),t("code",[e._v("false")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("queryingPeriod - If the tool is started as a daemon, this parameter sets the time interval (in seconds) between checks, "),t("code",[e._v("1")]),e._v(" second by default.")]),e._v(" "),t("li",[e._v("alertMessageTo – The email address to which synchronization warning errors will be sent.\n"),t("ul",[t("li",[e._v("alertMessageSubj - Message subject in the warning message, the "),t("code",[e._v("node synchronization")]),e._v(" problem by default;")]),e._v(" "),t("li",[e._v("alertMessageFrom - Address where the message was sent.")]),e._v(" "),t("li",[e._v("smtpHost - SMTP server host, used to send emails, the "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPort - SMTP server port, used to send email messages, "),t("code",[e._v("25")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpUsername - SMTP server username, "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPassword - SMTP server password, "),t("code",[e._v('""')]),e._v(" by default.")])])])]),e._v(" "),t("h2",{attrs:{id:"configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuration"}},[e._v("#")]),e._v(" Configuration")]),e._v(" "),t("p",[e._v("The tool uses a configuration file in toml format.")]),e._v(" "),t("p",[e._v("By default, it will look for the config.toml file in the folder where to start up the binary file.")]),e._v(" "),t("p",[e._v("The file path can be changed with the configPath flag.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('nodes_list = ["http://127.0.0.1:7079", "http://127.0.0.1:7002"]\n\n[daemon]\ndaemon = false\nquerying_period = 1\n\n[alert_message]\nto = ""\nsubject = "problem with xxx nodes"\nfrom = ""\n\n[smtp]\nhost = ""\nport = 25\nusername = ""\npassword = ""\n')])])]),t("h3",{attrs:{id:"nodes-list"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nodes-list"}},[e._v("#")]),e._v(" nodes_list")]),e._v(" "),t("ul",[t("li",[e._v("nodes_list - List of nodes (hosts) requesting information.")])]),e._v(" "),t("h3",{attrs:{id:"daemon"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" [daemon]")]),e._v(" "),t("p",[e._v("Configuration of the daemon mode.")]),e._v(" "),t("ul",[t("li",[e._v("daemon_mode – A tool works as a daemon and performs synchronization checks.")]),e._v(" "),t("li",[e._v("querying_period - Time interval between synchronization checks.")])]),e._v(" "),t("h3",{attrs:{id:"alert-message"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#alert-message"}},[e._v("#")]),e._v(" [alert_message]")]),e._v(" "),t("p",[e._v("Warning message parameters.")]),e._v(" "),t("ul",[t("li",[e._v("to - recipient's e-mail of synchronization error warning messages;")]),e._v(" "),t("li",[e._v("subject - message subject;")]),e._v(" "),t("li",[e._v("from - sender's e-mail.")])]),e._v(" "),t("h3",{attrs:{id:"smtp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#smtp"}},[e._v("#")]),e._v(" [smtp]")]),e._v(" "),t("p",[e._v("Simple Mail Transfer Protocol (SMTP) server parameters, used to send synchronization error messages.")]),e._v(" "),t("ul",[t("li",[e._v("host – SMTP server hose;")]),e._v(" "),t("li",[e._v("port –SMTP server port;")]),e._v(" "),t("li",[e._v("username – SMTP server user name;")]),e._v(" "),t("li",[e._v("password –SMTP server password;")])])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{457:function(e,s,t){"use strict";t.r(s);var a=t(51),o=Object(a.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"synchronized-monitoring-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#synchronized-monitoring-tool"}},[e._v("#")]),e._v(" Synchronized Monitoring Tool")]),e._v(" "),t("p",[e._v("Desync_monitor is a special tool that can be used to verify whether the database on the specified node has been synchronized.")]),e._v(" "),t("p",[e._v("The tool can be used as a daemon or can be started to perform a one-time check.")]),e._v(" "),t("p",[e._v("The operating principle of the tool is based on the following:")]),e._v(" "),t("p",[e._v("1.Each block contains the hash of all changes of all transactions, request the specified node to provide its last block ID;\n2.Then request a block with this ID from all nodes and compare the above hashes;\n3.If the hashes are different, a synchronization error message will be sent to the email address specified in the command.")]),e._v(" "),t("h2",{attrs:{id:"location"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#location"}},[e._v("#")]),e._v(" Location")]),e._v(" "),t("p",[e._v("The tool is located in the "),t("code",[e._v("tools/desync_monitor/")]),e._v(" directory.")]),e._v(" "),t("h2",{attrs:{id:"command-prompt-flags"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#command-prompt-flags"}},[e._v("#")]),e._v(" Command prompt flags")]),e._v(" "),t("p",[e._v("The following flags can be used from the command prompt:")]),e._v(" "),t("ul",[t("li",[e._v("confPath - Path of the configuration file. The default file name is "),t("code",[e._v("config.toml")]),e._v(";")]),e._v(" "),t("li",[e._v("nodesList - Node list of the requested block, separated by commas. The default is "),t("code",[e._v("127.0.0.1:7079")]),e._v(";")]),e._v(" "),t("li",[e._v("daemonMode - Started as a daemon and should be used when authentication is required every N seconds. This flag is set to "),t("code",[e._v("false")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("queryingPeriod - If the tool is started as a daemon, this parameter sets the time interval (in seconds) between checks, "),t("code",[e._v("1")]),e._v(" second by default.")]),e._v(" "),t("li",[e._v("alertMessageTo – The email address to which synchronization warning errors will be sent.\n"),t("ul",[t("li",[e._v("alertMessageSubj - Message subject in the warning message, the "),t("code",[e._v("node synchronization")]),e._v(" problem by default;")]),e._v(" "),t("li",[e._v("alertMessageFrom - Address where the message was sent.")]),e._v(" "),t("li",[e._v("smtpHost - SMTP server host, used to send emails, the "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPort - SMTP server port, used to send email messages, "),t("code",[e._v("25")]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpUsername - SMTP server username, "),t("code",[e._v('""')]),e._v(" by default;")]),e._v(" "),t("li",[e._v("smtpPassword - SMTP server password, "),t("code",[e._v('""')]),e._v(" by default.")])])])]),e._v(" "),t("h2",{attrs:{id:"configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuration"}},[e._v("#")]),e._v(" Configuration")]),e._v(" "),t("p",[e._v("The tool uses a configuration file in toml format.")]),e._v(" "),t("p",[e._v("By default, it will look for the config.toml file in the folder where to start up the binary file.")]),e._v(" "),t("p",[e._v("The file path can be changed with the configPath flag.")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('nodes_list = ["http://127.0.0.1:7079", "http://127.0.0.1:7002"]\n\n[daemon]\ndaemon = false\nquerying_period = 1\n\n[alert_message]\nto = ""\nsubject = "problem with xxx nodes"\nfrom = ""\n\n[smtp]\nhost = ""\nport = 25\nusername = ""\npassword = ""\n')])])]),t("h3",{attrs:{id:"nodes-list"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nodes-list"}},[e._v("#")]),e._v(" nodes_list")]),e._v(" "),t("ul",[t("li",[e._v("nodes_list - List of nodes (hosts) requesting information.")])]),e._v(" "),t("h3",{attrs:{id:"daemon"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" [daemon]")]),e._v(" "),t("p",[e._v("Configuration of the daemon mode.")]),e._v(" "),t("ul",[t("li",[e._v("daemon_mode – A tool works as a daemon and performs synchronization checks.")]),e._v(" "),t("li",[e._v("querying_period - Time interval between synchronization checks.")])]),e._v(" "),t("h3",{attrs:{id:"alert-message"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#alert-message"}},[e._v("#")]),e._v(" [alert_message]")]),e._v(" "),t("p",[e._v("Warning message parameters.")]),e._v(" "),t("ul",[t("li",[e._v("to - recipient's e-mail of synchronization error warning messages;")]),e._v(" "),t("li",[e._v("subject - message subject;")]),e._v(" "),t("li",[e._v("from - sender's e-mail.")])]),e._v(" "),t("h3",{attrs:{id:"smtp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#smtp"}},[e._v("#")]),e._v(" [smtp]")]),e._v(" "),t("p",[e._v("Simple Mail Transfer Protocol (SMTP) server parameters, used to send synchronization error messages.")]),e._v(" "),t("ul",[t("li",[e._v("host – SMTP server hose;")]),e._v(" "),t("li",[e._v("port –SMTP server port;")]),e._v(" "),t("li",[e._v("username – SMTP server user name;")]),e._v(" "),t("li",[e._v("password –SMTP server password;")])])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/78.95a748e7.js b/assets/js/78.3fb56785.js similarity index 99% rename from assets/js/78.95a748e7.js rename to assets/js/78.3fb56785.js index 8bab3d8..541a1af 100644 --- a/assets/js/78.95a748e7.js +++ b/assets/js/78.3fb56785.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{459:function(e,t,a){"use strict";a.r(t);var n=a(51),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"json-rpc-application-programming-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-application-programming-interface"}},[e._v("#")]),e._v(" JSON-RPC Application Programming Interface")]),e._v(" "),a("p",[e._v("In order for a software application to interact with the IBAX blockchain (fetch block data or send transactions to the network), it must be connected to an IBAX network node.")]),e._v(" "),a("p",[e._v("Due to the generality and extensibility of the original REST API interface, it will become more and more complex with more and more interfaces and different clients. We realize the importance of interface unification to ensure that all clients can use the same set of specifications, regardless of the specific node and client implementation.")]),e._v(" "),a("p",[e._v("JSON-RPC is a stateless, lightweight remote procedure call (RPC) protocol. It defines a number of data structures and their processing rules. It is transport independent, as these concepts can be used in the same process, via an interface, hypertext transfer protocol, or in many different messaging environments. It uses JSON (RFC 4627) as the data format.")]),e._v(" "),a("p",[e._v("JSON-RPC is compatible with most of the REST API interfaces, retaining the original REST API interface, the client using the REST API interface can easily transfer to the JSON-RPC interface, part of the interface")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/it/reference/api2.html#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/it/reference/api2.html#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/it/reference/api2.html#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])],1)]),e._v(" "),a("p",[e._v("Available through the REST API interface.")]),e._v(" "),a("h2",{attrs:{id:"client-side-implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-side-implementation"}},[e._v("#")]),e._v(" Client-side implementation")]),e._v(" "),a("p",[e._v("Each client can use a different programming language when implementing the JSON-RPC specification, and you can use the\n"),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("GO-SDK"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"curl-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curl-example"}},[e._v("#")]),e._v(" Curl example")]),e._v(" "),a("p",[e._v("The following provides examples of using the JSON RPC API by making curl requests to IBAX nodes. Each example includes a description of the particular endpoint, its parameters, the return type, and a working example of how it should be used.")]),e._v(" "),a("p",[e._v('Curl requests may return an error message related to the content type. This is because the --data option sets the content type to application/x-www-form-urlencoded. If your request has this problem, set the header manually by placing -H "Content-Type: application/json" at the beginning of the call. These examples also do not include the URL/Internet Protocol and port combination that must be the last parameter of the curl (e.g. 127.0.0.1:7079 A full curl request with this additional data takes the form of')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","params":[],"id":1}\' http://127.0.0.1:7079\t\n')])])]),a("h2",{attrs:{id:"covenant"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#covenant"}},[e._v("#")]),e._v(" Covenant")]),e._v(" "),a("h3",{attrs:{id:"hex"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hex"}},[e._v("#")]),e._v(" Hex")]),e._v(" "),a("p",[a("strong",[e._v("Hexadecimal code")])]),e._v(" "),a("p",[e._v("When encoding byte arrays, hashes, and bytecode arrays: the encoding is hexadecimal, two hexadecimal digits per byte.")]),e._v(" "),a("h3",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("Content-Type: application/json")])]),e._v(" "),a("h3",{attrs:{id:"special-markers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-markers"}},[e._v("#")]),e._v(" Special markers")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("This field is an optional parameter.")]),e._v(" "),a("p",[e._v("If there are multiple "),a("code",[e._v("Omitempty")]),e._v(" fields in a row,\nBut only want to pass the value of a certain field, then you need to set the unwanted field to null (the field type null value), Example:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Name")]),e._v(" "),a("li",[a("strong",[e._v("column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Filter column names")])]),e._v(" "),a("p",[e._v("If only the name value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0, "testname"]')]),e._v(" - "),a("em",[e._v("Number")]),e._v(" null value is 0")]),e._v(" "),a("p",[e._v("If only the column value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0,"", "title,page"]')]),e._v(" - "),a("em",[e._v("String")]),e._v(' empty value for ""')]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("Authorization header, add Authorization to the request header, example:")]),e._v(" "),a("p",[a("strong",[e._v("name")]),e._v(" : Authorization "),a("strong",[e._v("value")]),e._v(" : Bearer +"),a("a",{attrs:{href:"#ibax-login"}},[e._v("login token")])]),e._v(" "),a("p",[e._v("Example:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","params":["@1TokensSend"],"id":1}\' http://127.0.0.1:7079\n\n')])])]),a("h4",{attrs:{id:"accountorkeyid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#accountorkeyid"}},[e._v("#")]),e._v(" AccountOrKeyId")]),e._v(" "),a("p",[e._v("For the account address parameter, you can use two formats of addresses, for example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v(" - Account Address "),a("code",[e._v('"XXXX-XXXX-XXXX-XXXX-XXXX"')]),e._v(" or Account Id "),a("code",[e._v('"64842...538120"')]),e._v(' .538120"`')])])]),e._v(" "),a("li",[a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Address object")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Account Id, Example: "),a("code",[e._v('{"key_id":-64842\t38120}')])]),e._v(" "),a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account address, Example: "),a("code",[e._v('{"account": "1196-... -\t-... -3496"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Account Id is preferred when both account address and account Id exist")]),e._v(".")])])]),e._v(" "),a("h4",{attrs:{id:"blockorhash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockorhash"}},[e._v("#")]),e._v(" BlockOrHash")]),e._v(" "),a("p",[e._v("Block height or block HASH, example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v("\t-\tBlock\tHeight\t"),a("code",[e._v('"100"')]),e._v("\tor\tBlock\tHASH"),a("code",[e._v('"4663aa47...a60753c18d9ba9cb4"')])])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - Block information object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height, example: "),a("code",[e._v('{"id":2}')])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v("\t-\t"),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v("\tString")]),e._v("\t-\tBlock\tHASH,\tExample:\t"),a("code",[e._v('{"hash": "d36b8996c\tc616d3043a0d02a0f59"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Block Height and Block HASH can only choose one")]),e._v(".")])])])])]),e._v(" "),a("h3",{attrs:{id:"batch-requests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#batch-requests"}},[e._v("#")]),e._v(" Batch requests")]),e._v(" "),a("p",[e._v("This feature can be used to reduce network latency, especially when acquiring a large number of largely independent data objects.")]),e._v(" "),a("p",[e._v("The following is an example of obtaining the highest block and total number of transactions:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'[{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]},{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":2,"params":[]}]\' http://127.0.0.1:7079\n\n //Response\n [\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149100\n },\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": 797\n }\n ]\n')])])]),a("h3",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Returns status "),a("code",[e._v("200")]),e._v(" in case the request is executed successfully.")]),e._v(" "),a("p",[e._v("If an error occurs, a JSON object with the following fields will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("jsonrpc")]),e._v(" "),a("p",[e._v("Error identifier.")])]),e._v(" "),a("li",[a("p",[e._v("id")]),e._v(" "),a("p",[e._v("Error text message.")])]),e._v(" "),a("li",[a("p",[e._v("error")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("code")]),e._v(" "),a("p",[e._v("Response Status Code")])]),e._v(" "),a("li",[a("p",[e._v("message")]),e._v(" "),a("p",[e._v("Response Status Description")])])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "jsonrpc": "2.0",\n "id": 1,\n "error": {\n "code": -32014,\n "message": "Unauthorized"\n }\n}\n')])])]),a("h2",{attrs:{id:"json-rpc-namespaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-namespaces"}},[e._v("#")]),e._v(" JSON-RPC Namespaces")]),e._v(" "),a("h3",{attrs:{id:"ibax-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-namespace"}},[e._v("#")]),e._v(" ibax Namespace")]),e._v(" "),a("h4",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getuid"}},[e._v("ibax.getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-login"}},[e._v("ibax.login")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getauthstatus"}},[e._v("ibax.getAuthStatus")])])]),e._v(" "),a("h4",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" server-side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getversion"}},[e._v("ibax.getVersion")])])]),e._v(" "),a("h4",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getbalance"}},[e._v("ibax.getBalance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockstxinfo"}},[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblocks"}},[e._v("ibax.detailedBlocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyinfo"}},[e._v("ibax.getKeyInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblock"}},[e._v("ibax.detailedBlock")])])]),e._v(" "),a("h4",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-maxblockid"}},[e._v("ibax.maxBlockId")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyscount"}},[e._v("ibax.getKeysCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettxcount"}},[e._v("ibax.getTxCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettransactioncount"}},[e._v("ibax.getTransactionCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockscountbynode"}},[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-honornodescount"}},[e._v("ibax.honorNodesCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemcount"}},[e._v("ibax.getEcosystemCount")])])]),e._v(" "),a("h4",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-ecosysteminfo"}},[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-appparams"}},[e._v("ibax.appParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemparams"}},[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettablecount"}},[e._v("ibax.getTableCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettable"}},[e._v("ibax.getTable")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getlist"}},[e._v("ibax.getList")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsections"}},[e._v("ibax.getSections")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getrow"}},[e._v("ibax.getRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-systemparams"}},[e._v("ibax.systemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-history"}},[e._v("ibax.history")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagerow"}},[e._v("ibax.getPageRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenurow"}},[e._v("ibax.getMenuRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsnippetrow"}},[e._v("ibax.getSnippetRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getappcontent"}},[e._v("ibax.getAppContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmember"}},[e._v("ibax.getMember")])])]),e._v(" "),a("h4",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getcontracts"}},[e._v("ibax.getContracts")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-sendtx"}},[e._v("ibax.sendTx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfo"}},[e._v("ibax.txInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfomultiple"}},[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpage"}},[e._v("ibax.getPage")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenu"}},[e._v("ibax.getMenu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsource"}},[e._v("ibax.getSource")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagehash"}},[e._v("ibax.getPageHash")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontent"}},[e._v("ibax.getContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockinfo"}},[e._v("ibax.getBlockInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getconfig"}},[e._v("ibax.getConfig")])])]),e._v(" "),a("h3",{attrs:{id:"net-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-namespace"}},[e._v("#")]),e._v(" net Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#net-getnetwork"}},[e._v("net.getNetwork")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#net-status"}},[e._v("net.status")])])]),e._v(" "),a("h3",{attrs:{id:"rpc-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-namespace"}},[e._v("#")]),e._v(" rpc Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rpc-modules"}},[e._v("rpc.modules")])])]),e._v(" "),a("h3",{attrs:{id:"admin-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-namespace"}},[e._v("#")]),e._v(" admin Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#admin-startjsonrpc"}},[e._v("admin.startJsonRpc")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#admin-stopjsonrpc"}},[e._v("admin.stopJsonRpc")])])]),e._v(" "),a("h3",{attrs:{id:"debug-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-namespace"}},[e._v("#")]),e._v(" debug Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#debug-getnodebanstat"}},[e._v("debug.getNodeBanStat")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#debug-getmemstat"}},[e._v("debug.getMemStat")])])]),e._v(" "),a("h2",{attrs:{id:"json-rpc-interface-methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-interface-methods"}},[e._v("#")]),e._v(" JSON-RPC Interface Methods")]),e._v(" "),a("h3",{attrs:{id:"ibax-getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getuid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getUid")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Generate a temporary JWT token,\twhich needs to be passed to "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(" when calling "),a("strong",[a("a",{attrs:{href:"#ibax-login"}},[e._v("login")])])]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("uid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The signature number.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - temporary token passed during login (temporary token has a 5 second lifespan).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("cryptoer")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Elliptic curve algorithm.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hasher")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - hash algorithm.")])])]),e._v(" "),a("p",[e._v("In the case that no authorization is required(the request contains "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(", the following message will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Expiration time.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])])]),e._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response1\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "uid": "5823391950439015186",\n "token": "ey....",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response2\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "expire": "7h59m49.5361126s",\n "ecosystem_id": "1",\n "key_id": "6667782293976713160",\n "address": "0666-7782-2939-7671-3160",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-login"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.login")])]),e._v(" "),a("p",[e._v("User authentication. "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"#ibax-getuid"}},[a("strong",[e._v("ibax.getUid")])]),e._v(" command should be called first in order to receive the unique value and sign it.\nThe temporary JWT token for getuid needs to be passed in the request header.\nIf the request is successful, the token received in the response is contained in "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication call object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID. if not specified, defaults to the first ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The lifecycle of the JWT token in seconds, default is 28800,8 hours.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Hexadecimal account public key.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -")]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("signature")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nUse the private key to sign the uid received by getuid.")]),e._v(" "),a("p",[e._v("Signature data content:LOGIN+{$network_id}+uid")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID, default role 0")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-2"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - JWT token.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("notify_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The notification ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isnode")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isowner")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the creator of this ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("clb")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the logged-in ecosystem is a CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("timestamp")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - current timestamp")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" list of roles, if there are no roles, the field is nil")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID")]),e._v(" "),a("li",[a("strong",[e._v("role_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Role name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.login","params":[{"ecosystem_id":1,"public_key":"04....","signature","46...","role_id":0}],"id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "token": "ey...",\n "ecosystem_id": "1",\n "key_id": "6660819716178795186",\n "account": "0666-xxxx-xxxx-xxxx-5186",\n "notify_key": "ey....",\n "isnode": false,\n "isowner": false,\n "clb": false,\n "timestamp": "1678336163",\n "roles": nil //[{"role_id": 1, "role_name": "Developer"},{"role_id": 2, "role_name": "DevelopGovernancerer"}]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getauthstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getauthstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAuthStatus")])]),e._v(" "),a("p",[e._v("User authentication status\n"),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-3"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication status object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("active")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - The current user authentication status. Values: "),a("code",[e._v("true,false")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("exp")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Token validity cutoff timestamp")])])]),e._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getAuthStatus","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "active": true,\n "exp": 1678354136\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getversion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getversion"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getVersion")])]),e._v(" "),a("p",[e._v("Returns the current server version.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-4"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("vesion")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - version number ("),a("code",[e._v("big Version")]),e._v(" + "),a("code",[e._v("branch name")]),e._v(" + "),a("code",[e._v("git commit")]),e._v(" + "),a("code",[e._v("time")]),e._v(" + "),a("code",[e._v("node status")]),e._v(")")])]),e._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getVersion","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "1.3.0 branch.main commit.b57d4194 time.2023-03-08-09:30:29(UTC) node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"ibax-getbalance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getbalance"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBalance")])]),e._v(" "),a("p",[e._v("Get the account address balance.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("key_id or account")]),e._v(" - "),a("a",{attrs:{href:"#accountorkeyid"}},[a("em",[e._v("AccountOrKeyId")])]),e._v(" - account address "),a("code",[e._v("XXXX- XXXX-XXXX-XXXX-XXXX")]),e._v(" or account ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default 1")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-5"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the balance object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the minimum unit of the contract account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("total")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the total balance of the minimum unit account (amount + utxo).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("utxo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Minimum unit UTXO account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")])])]),e._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["648...8120"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["1196-...-...-...-3496",1]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":[{"key_id":{$key_id}},1]}\' http://127.0.0.1:7079 //keyId or account\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "amount": "9915319240441612",\n "digits": 12,\n "total": "9915319240441612",\n "utxo": "0",\n "token_symbol": "IBXC"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockstxinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockstxinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("p",[e._v("Returns a list containing additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the starting block height to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-6"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block information object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height")])]),e._v(" "),a("li",[a("p",[e._v("List of transactions in the block and additional information for each transaction:")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" -\nFor the first block, it is the account address of the first block that signed the transaction.")]),e._v(" "),a("p",[e._v("For all other blocks, it is the address of the account that signed the transaction.")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksTxInfo","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": [ //block_id\n {\n "hash": "uXSaSrMWlbHpNlu049J5BDypC6MzBQ0/5VEfGQf+5aQ=",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160\n }\n ],\n "2": [ //block_id\n {\n "hash": "r8U9IKjtZ5Be5D4ak3zxLlDwn36CTdfIAsVvQhx7P3w=",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblocks"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlocks")])]),e._v(" "),a("p",[e._v("Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the starting block to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-7"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height\n"),a("ul",[a("li",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")]),e._v(" "),a("li",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")]),e._v(" "),a("li",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")]),e._v(" "),a("li",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")]),e._v(" "),a("li",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlocks","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": { //block id\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f73497ede8f22d678bc4be6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "36373332663064383331353264316333653639346431656436383734373634363463616363616564636632353232646335633736643066623737343931366363",\n "bin_data": "Cp4BCAEQppm...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n },\n "2": { //block id\n "header": {\n "block_id": 2,\n "time": 1676536235,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "dd13a30661d35e01df82027a6e6607eb47ee00765d69767dbb99e151676c2c96",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676536235,\n "tx_count": 1,\n "size": "1.53KiB",\n "rollbacks_hash": "9041312d69e6bcd37c91a2bfa066abaeb53b8398708937a618a89960bfadab3d",\n "merkle_root": "65366537383931353662613230356565396466353061316538656538643636323332316636616265623764633539616166346635343030383135386538643130",\n "bin_data": "Cp4BCAIQq9O...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "afc53d20a8ed67905ee43e1a937cf12e50f09f7e824dd7c802c56f421c7b3f7c",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160,\n "time": 1676536233945,\n "type": 3,\n "size": "390.00B"\n }\n ]\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeyInfo")])]),e._v(" "),a("p",[e._v("Returns a list of ecosystems with roles that are registered to the specified address.")]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")])]),e._v(" "),a("h4",{attrs:{id:"return-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-8"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Specify the address eco-list object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystems")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Eco-List\n"),a("ul",[a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - list of roles.\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - role id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Character name")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeyInfo","id":1,"params":["0666-XXXX-XXXX-XXXX-5186"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "account": "0666-XXXX-XXXX-XXXX-5186",\n "ecosystems": [\n {\n "ecosystem": "1",\n "name": "platform ecosystem",\n "digits": 12,\n "roles": [\n {\n "id": "1",\n "name": "Developer"\n },\n {\n "id": "2",\n "name": "Governancer"\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblock"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlock")])]),e._v(" "),a("p",[e._v("Returns a detailed list of additional information about the transactions in the block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block or Hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - Block Height or Block Hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-9"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["1"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91"]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":[{"id":1}]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "3637333266306438333135...623737343931366363",\n "bin_data": "Cp4BCAEQppm2nwYgyI/8gLSVrsRcMkAFGTK6nxD86hfhgQX0dWzO8aYZExDN9UPm8sKkqeUbwrNliYuCJHvvdX+txINnM7+gDqtMF/1K43kc0gYC0u8uOiANfVG0wUusv0XYEvc0l+3o8i1ni8S+bmhIGT87cmKskUIgBEhSsqZwreVAfnj7KGPFHen8uWVCoHGG/jrtpruKEW1IA1ABYAESRDogQBBdW8EBBcF/1yuTqPczaeLubu5NRxS3v3vzwvFW5gFCIARIUrKmcK3lQH54+yhjxR3p/LllQqBxhv467aa7ihFtGkA2NzMyZjBkODMxNTJkMWMzZTY5NGQxZWQ2ODc0NzY0NjRjYWNjYWVkY2YyNTIyZGM1Yzc2ZDBmYjc3NDkxNmNjKugCeJxibFvmk5+enlp0YK1LUkhRYl5xYnJJZn7egSUuiSWJ7Uu9Uys9XS7HdOxY7SDPfmJJSGZu6mUGBgaG5Lc9y1YGlCblZCZ7p1YecejvOPzyp63tWeYpWS+nxBTv3biTOUTqg7vfgedPuXdbnjsmYX49a9mXA025NT4TbjQ65bQwbloQcjbQRG3ZudjjUxuL1/rlp6QimTfLcZNH0o/bie/SfiskTNm1tPrfmrrlbdfMklamXHR53XpxwSODSb1hX3Kvyb1fU+awbZVG8yaXmGqtO3wR8jPsP6y7vTW4JL/AL7WkPL8o2zm1qMSpNC8lJ/XAkpDU4hKwBxgYGBg3BhRlliWWpDrl5CdnJ2ckZuadh0oxrAT5tLgkMbfgMgMDY1v42yy2ZSEVHonFGUcUdpbM8tosNnXjS7PoLY8vVbLYrORebMzKa/80UF6S/d/TJcsDEitz8hNTjvwaueEHCAAA//+pZRGv",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-maxblockid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.maxBlockId")])]),e._v(" "),a("p",[e._v("Get the highest block ID on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-10"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block Id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The highest block on the current node")])]),e._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 774\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeysCount")])]),e._v(" "),a("p",[e._v("Get the total number of addresses on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-11"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of addresses")])]),e._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeysCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 11\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettxcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettxcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTxCount")])]),e._v(" "),a("p",[e._v("Get the total number of transactions in the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-12"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of transactions")])]),e._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149068\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettransactioncount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettransactioncount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTransactionCount")])]),e._v(" "),a("p",[e._v("Get the number of block transactions")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block or hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - block height or block hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-13"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("h4",{attrs:{id:"example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTransactionCount","id":1,"params":["efc386f7573269610a34af9cc722f775cca8183ccaa0ed7a96db61ef0bde6d1c"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 337\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockscountbynode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockscountbynode"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("p",[e._v("Get the number of node location packing blocks")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("nodePosition")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensusMode")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Consensus Mode, parameters (1: Creator Management Mode 2: DAO Governance Mode)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-14"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the node subscript packing number object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("total_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("partial_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of node subscript packing blocks")])])]),e._v(" "),a("h4",{attrs:{id:"example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksCountByNode","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "total_count": 774,\n "partial_count": 774\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-honornodescount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-honornodescount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.honorNodesCount")])]),e._v(" "),a("p",[e._v("Get number of honor nodes")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-15"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of nodes")])]),e._v(" "),a("h4",{attrs:{id:"example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.honorNodesCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 1\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemCount")])]),e._v(" "),a("p",[e._v("Number of ecosystem acquisitions")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-16"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecological number")])]),e._v(" "),a("h4",{attrs:{id:"example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 2\n }\n')])])]),a("h3",{attrs:{id:"ibax-ecosysteminfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ecosysteminfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("p",[e._v("Access to ecological information")]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ecosystem id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecological ID")])]),e._v(" "),a("h4",{attrs:{id:"return-value-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-17"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Eco-ID")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecological name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")]),e._v(" "),a("li",[a("strong",[e._v("token_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the token")]),e._v(" "),a("li",[a("strong",[e._v("total_amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the number of issues (first issue, or "),a("code",[e._v('"0"')]),e._v(" if not issued)")]),e._v(" "),a("li",[a("strong",[e._v("is_withdraw")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - destructible "),a("code",[e._v("true:destructible false:undestructible")])]),e._v(" "),a("li",[a("strong",[e._v("withdraw")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - amount of destruction ("),a("code",[e._v('"0"')]),e._v(" if not destructible, or not destroyed)")]),e._v(" "),a("li",[a("strong",[e._v("is_emission")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - may be incremented "),a("code",[e._v("true:may be incremented false:may not be incremented")])]),e._v(" "),a("li",[a("strong",[e._v("emission")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - increment ("),a("code",[e._v('"0"')]),e._v(" if no increment is available, or if no increment is available)")]),e._v(" "),a("li",[a("strong",[e._v("introduction")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco Introduction")]),e._v(" "),a("li",[a("strong",[e._v("logo")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoLogo Id (corresponds to Binary table id), available through the RESTFUL API")]),e._v(" "),a("li",[a("strong",[e._v("creator")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco-creator")])]),e._v(" "),a("h4",{attrs:{id:"example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.ecosystemInfo","id":1,"params":[1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "id": 5,\n "name": "test name",\n "digits": 6,\n "token_symbol": "test",\n "token_name": "test Coin",\n "total_amount": "10000",\n "is_withdraw": true,\n "withdraw": "100000000000900000",\n "is_emission": true,\n "emission": "100000000001000000",\n "introduction": "this is a test introduction",\n "logo": 6,\n "creator": "0666-0819-7161-7879-5186"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-appparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-appparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.appParams")])]),e._v(" "),a("p",[e._v("Returns a list of application parameters in the current or specified ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("appid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the application ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID;")]),e._v(" "),a("p",[e._v("If unspecified or 0, the parameters of the current ecosystem will be returned.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Filter the application parameter names.")]),e._v(" "),a("p",[e._v("A comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-18"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Array")]),e._v(" - List of application parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application ID")]),e._v(" "),a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Each element of the array contains the following parameters\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - parameter ID, unique;")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the parameter;")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the parameter value;")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.appParams","id":1,"params":[1,1,"role_developer,role_governancer"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "app_id": 1,\n "list": [\n {\n "id": "4",\n "name": "role_developer",\n "value": "1",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n },\n {\n "id": "5",\n "name": "role_governancer",\n "value": "2",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("p",[e._v("Get a list of ecosystem parameters")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID")]),e._v(" "),a("p",[e._v("If 0 or no such parameter, default: current ecid.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The name of the filter parameter.")]),e._v(" "),a("p",[e._v("Comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")])]),e._v(" "),a("p",[e._v("The "),a("em",[e._v("offset")]),e._v(" and "),a("em",[e._v("limit")]),e._v(" parameters are invalid when there is a filter parameter.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-19"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The id of the parameter, unique.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemParams","id":1,"params":[0,"changing_app_params,changing_language"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "9",\n "name": "changing_app_params",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n },\n {\n "id": "4",\n "name": "changing_language",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettablecount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettablecount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTableCount")])]),e._v(" "),a("p",[e._v("Returns a list of data tables for the current ecosystem.")]),e._v(" "),a("p",[e._v("Offset and number of entries can be set")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-20"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The total number of sheets of the current ecological data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table without prefix.")]),e._v(" "),a("li",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The number of entries in the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTableCount","id":1,"params":[0,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 32,\n "list": [\n {\n "name": "app_params",\n "count": "41"\n },\n {\n "name": "applications",\n "count": "7"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettable"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTable")])]),e._v(" "),a("p",[e._v("Returns information about the current ecosystem request data table.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Data table name")])]),e._v(" "),a("h4",{attrs:{id:"return-value-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-21"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("insert")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add permission to add an entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("new_column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add new field permission.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("update")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change entry permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The application id.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Conditions for changing permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of information related to data table fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the field.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The field data type.")]),e._v(" "),a("li",[a("strong",[e._v("perm")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Permission to change the value of this field.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTable","id":1,"params":["app_params"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "name": "app_params",\n "insert": "ContractConditions(\\"DeveloperCondition\\")",\n "new_column": "ContractConditions(\\"@1MainCondition\\")",\n "update": "ContractAccess(\\"@1EditAppParam\\")",\n "conditions": "ContractConditions(\\"@1MainCondition\\")",\n "app_id": "1",\n "columns": [\n {\n "name": "value",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "app_id",\n "type": "number",\n "perm": "ContractAccess(\\"@1ItemChangeAppId\\")"\n },\n {\n "name": "ecosystem",\n "type": "number",\n "perm": "false"\n },\n {\n "name": "conditions",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "permissions",\n "type": "json",\n "perm": "ContractConditions(\\"@1MainCondition\\")"\n },\n {\n "name": "name",\n "type": "varchar",\n "perm": "false"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getlist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getlist"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getList")])]),e._v(" "),a("p",[e._v("Returns the entry of the specified data table.")]),e._v(" "),a("p",[e._v("You can specify the columns to be returned.")]),e._v(" "),a("p",[e._v("You can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("You can set the query criteria.")]),e._v(" "),a("p",[e._v("Hex encoding of data tables of type "),a("em",[e._v("BYTEA")]),e._v(" (byte arrays, hashes, byte code arrays)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the data table object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("order")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Sort by, default id ASC.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("where")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Query criteria")]),e._v(" "),a("p",[e._v("Example:If you want to query id>2 and name = john")]),e._v(" "),a("p",[e._v("You can use "),a("code",[e._v('where:{"id":{"$gt":2}, "name":{"$eq": "john"}}')])]),e._v(" "),a("p",[e._v("For details, please refer to "),a("RouterLink",{attrs:{to:"/it/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" where syntax")],1)])]),e._v(" "),a("h4",{attrs:{id:"return-value-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-22"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - Other columns of the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getList","id":1,"params":[{"name":"@1history","where":{"$and": [{"id":{"$gt": 2}}, {"id":{"$lt": 5}}]}}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "amount": "1000000000000000000",\n "block_id": "4",\n "comment": "UTXO",\n "created_at": "1676538080433",\n "ecosystem": "1",\n "id": "3",\n "recipient_balance": "1000000000000000000",\n "recipient_id": "666...160",\n "sender_balance": "1000000000000000000",\n "sender_id": "666...3160",\n "status": "0",\n "txhash": "2ac156c0ce55c10fd485cb9d59f50e3f9b269fb9bb69571d3c2eeae033d6c6cc",\n "type": "24",\n "value_detail": "NULL"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsections"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsections"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSections")])]),e._v(" "),a("p",[e._v("Return to the tab of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Get the actions request object\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The number of entries, default 25 entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("lang")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" -")]),e._v(" "),a("p",[e._v("This field specifies the multilingual resource code or localization, e.g. "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g. "),a("em",[e._v("en-US")]),e._v(", then search in the Multilingual Resources group, "),a("strong",[e._v("default")]),e._v(": "),a("strong",[e._v("en")]),e._v(".")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-23"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of tab entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains information about all columns in the sections table.")])])]),e._v(" "),a("h4",{attrs:{id:"example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSections","id":1,"params":[{"offset":0,"limit":2}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "ecosystem": "1",\n "id": "1",\n "page": "default_page",\n "roles_access": "[]",\n "status": "2",\n "title": "Home",\n "urlname": "home"\n },\n {\n "ecosystem": "1",\n "id": "2",\n "page": "developer_index",\n "roles_access": "[]",\n "status": "1",\n "title": "Developer",\n "urlname": "developer"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getRow")])]),e._v(" "),a("p",[e._v("Returns the entries of the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v('If you do not filter, you can place a blank "".')]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("whereColumn")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Find column name (only Number type columns can be found)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-24"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("value")]),e._v("- "),a("em",[e._v("Object")]),e._v(" - object that receives column values\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - The sequence of requested columns.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getRow","id":1,"params":["@1history",4,"id,sender_id,recipient_id,amount,ecosystem,created_at","id"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "value": {\n "amount": "680388766240",\n "created_at": "1677222830899",\n "ecosystem": "1",\n "id": "296",\n "recipient_id": "6667782293976713160",\n "sender_id": "6660819716178795186"\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-systemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.systemParams")])]),e._v(" "),a("p",[e._v("Returns the list of platform parameters.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - A list of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example "),a("code",[e._v('names="name1,name2"')]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-25"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unique id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.systemParams","id":1,"params":["gap_between_blocks,honor_nodes"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "4",\n "name": "gap_between_blocks",\n "value": "2",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n },\n {\n "id": "6",\n "name": "honor_nodes",\n "value": "",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-history"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.history")])]),e._v(" "),a("p",[e._v("Returns the changed records of the entries of the specified data table in the current ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")]),e._v(" "),a("li",[a("strong",[e._v("tableId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-26"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains change records for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.history","id":1,"params":["contracts",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "conditions": "ContractConditions(\\"MainCondition\\")",\n "ecosystem": "1",\n "value": "// This contract is used to set \\"developer\\" rights....."\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagerow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagerow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystempages data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-27"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Directory.")]),e._v(" "),a("li",[a("strong",[e._v("nodesCount")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of nodes the page needs to validate")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application Id")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPageRow","id":1,"params":["default_page"]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5,\n "name": "default_page",\n "value": "If(#account_id# == #guest_account#){\\n Include(@1apps_description)\\n}.Else{\\n Include(@1profile)\\n}",\n "menu": "default_menu",\n "nodesCount": 1,\n "app_id": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenurow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenurow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenuRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem menu data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-28"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The title.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenuRow","id":1,"params":["default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 2,\n "name": "default_menu",\n "title": "default",\n "value": "\\nMenuItem.....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsnippetrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsnippetrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSnippetRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem snippet data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-29"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])]),e._v(" "),a("h4",{attrs:{id:"example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSnippetRow","id":1,"params":["welcome"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 12,\n "name": "welcome",\n "value": "Div(content-wrapper)....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getappcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getappcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAppContent")])]),e._v(" "),a("p",[e._v("Get application related information (including page, snippet, menu)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application id")])]),e._v(" "),a("h4",{attrs:{id:"return-value-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-30"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("snippets")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of code snippet information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Code snippet name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("pages")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of page information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contracts")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - an array of contract information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "snippets": [ //if not app snippets is null array,example:[]\n {\n "id": 2,\n "name": "developer_link"\n },\n {\n "id": 3,\n "name": "export_info"\n }\n ],\n "pages": [ //if not app pages is null array,example:[]\n {\n "id": 6,\n "name": "menus_list"\n },\n {\n "id": 7,\n "name": "params_edit"\n }\n ],\n "contracts": [ //if not app contracts is null array,example:[]\n {\n "id": 2,\n "name": "MainCondition"\n },\n {\n "id": 33,\n "name": "NodeOwnerCondition"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmember"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmember"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMember")])]),e._v(" "),a("p",[e._v("Get member information")]),e._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Member Information")]),e._v(" "),a("p",[a("strong",[e._v("ecosystemId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoid")]),e._v(" "),a("h4",{attrs:{id:"return-value-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-31"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - member id")]),e._v(" "),a("li",[a("strong",[e._v("member_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Name")]),e._v(" "),a("li",[a("strong",[e._v("image_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Avatar id")]),e._v(" "),a("li",[a("strong",[e._v("member_info")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Introduction")])]),e._v(" "),a("h4",{attrs:{id:"example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}}" -d \'{"jsonrpc":"2.0","method":"ibax.getMember","id":1,"params":["1497-2036-4953-3607-1121",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 14,\n "member_name": "som",\n "image_id": 5, \n "member_info": "{\\"information\\": \\"Everything will be okay in the end. If it\'s not okay, it\'s not the end.\\"}"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontracts"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContracts")])]),e._v(" "),a("p",[e._v("Get the list of contracts in the current ecosystem, you can set the offset and the number of entries.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")]),e._v(" "),a("li",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-32"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract ID.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("wallet_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The address of the account to which the contract is bound.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the application to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change the permissions of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("token_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the ecosystem where the pass is used as a payment for the contract.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContracts","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 293,\n "list": [\n {\n "address": "0000-0000-0000-0000-0000",\n "app_id": "1",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "ecosystem_id": "1",\n "id": "1",\n "name": "DeveloperCondition",\n "token_id": "1",\n "value": "// This contract is used to ...",\n "wallet_id": "0"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontractinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontractinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContractInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified contract.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("contractName")]),e._v("\t-\t"),a("em",[e._v("String")]),e._v("\t-\tThe\tname\tof\tthe\tcontract.\tThe\tformat\tis "),a("code",[e._v("@ecosystem_id%%contractName%")]),e._v(", e.g. @1contractName (the specified eco1contract name contractName) or contractName (the current eco-contract name contractName).")])]),e._v(" "),a("h4",{attrs:{id:"return-value-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-33"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the contract ID in the VM.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("state")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("walletid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the account to which the contract is bound")]),e._v(" "),a("li",[a("strong",[e._v("tokenid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the ecosystem ID of the pass that is used as the payment for the contract.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("tableid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - ID of the entry in the "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")]),e._v(" "),a("li",[a("strong",[e._v("fields")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - array containing structural information for each parameter of the contract "),a("strong",[e._v("data")]),e._v(" section:\n"),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The type of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("optional")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - parameter options, "),a("code",[e._v("true")]),e._v(" means optional parameters, "),a("code",[e._v("false")]),e._v(" means mandatory parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","id":1,"params":["@1TokensSend"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5098,\n "state": 1,\n "tableid": "98",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Amount",\n "type": "money",\n "optional": false\n },\n {\n "name": "Recipient",\n "type": "string",\n "optional": true\n },\n {\n "name": "iName",\n "type": "string",\n "optional": true\n },\n {\n "name": "Comment",\n "type": "string",\n "optional": true\n },\n {\n "name": "Ecosystem",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1TokensSend"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-sendtx"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.sendTx")])]),e._v(" "),a("p",[e._v("Receives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an error response.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Transaction data object\n"),a("ul",[a("li",[a("strong",[e._v("tx_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the content of the transaction, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-34"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - transaction hash arrays:\n"),a("ul",[a("li",[a("strong",[e._v("tx1")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction 1.")]),e._v(" "),a("li",[a("strong",[e._v("txN")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction N.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.sendTx","id":1,"params":[{"tx1":...,"txN":...}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hashes":[\n {"hash1":"hash1"},\n {"hashN":"hashN"}\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txStatus")])]),e._v(" "),a("p",[e._v("Gets the block ID and error message of the specified transaction hash. If the return value of the block ID and error text message is null, then the transaction is not yet contained in the block.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash, split using "),a("code",[e._v(",")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"return-value-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-35"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - returns the block ID if the transaction was executed successfully;")]),e._v(" "),a("p",[e._v("If the transaction execution fails, "),a("em",[e._v("blockid")]),e._v(" will be "),a("code",[e._v("0")]),e._v(", and the corresponding block ID will be returned if the transaction execution error is penalized.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("result")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("errmsg")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Returns an error text message if the execution of the transaction failed.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Error type")]),e._v(" "),a("li",[a("strong",[e._v("error")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - error message")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("penalty")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - if the transaction execution fails, (0: no penalty 1: penalty)")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.txStatus","id":1,"params":["cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9,4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": "793",\n "result": "",\n "penalty": 0\n },\n "cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9": {\n "blockid": "793",\n "errmsg": {\n "type": "warning",\n "error": "platform ecosystem can not be burning Tokens"\n },\n "result": "",\n "penalty": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfo")])]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. If optional parameters are specified, the contract name and its associated parameters can also be returned.")]),e._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-36"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction.\nIf the value is "),a("code",[e._v("0")]),e._v(", no transactions are found for this hash.\nIf the transaction occurred on the current node, it can be obtained via "),a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of node confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Returns contract details if "),a("code",[e._v("contentinfo=true")]),e._v(" is specified. null if not specified")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])]),e._v(" "),a("h4",{attrs:{id:"example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.txInfo","id":1,"params":["020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "blockid": "796",\n "confirm": 0,\n "data": {\n "block_id": 796,\n "block_hash": "bccbc3cf47b49bee5fb7321810884db49b73f5114b0a6fcd234dd3fdf9c22ef4",\n "address": "0666-7782-2939-7671-3160",\n "ecosystem": 2,\n "hash": "020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "1000000000000",\n "Recipient": "0666-7782-2939-7671-3160"\n },\n "created_at": 1678774455841,\n "size": "213.00B",\n "status": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfomultiple"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("p",[e._v("Returns transaction-related information for the specified hash list.")]),e._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - A list of transaction hashes.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-37"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("results")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Data dictionary with transaction hash as key and transaction details as value.\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction. if the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("li",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - If "),a("code",[e._v("contentinfo=true")]),e._v("is specified, the contract details are returned to this parameter. null when not specified\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v("- "),a("em",[e._v("Number")]),e._v(" - Block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":[["1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284","4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"],true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "results": {\n "1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284": {\n "blockid": 0,\n "confirm": 0,\n "data": null\n },\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": 793,\n "confirm": 0,\n "data": {\n "block_id": 793,\n "block_hash": "ef3b2f2e18662e0b8bba136a209e30c5aae76d9a82e0b21209786f62fe5676e4",\n "address": "0666-0819-7161-7879-5186",\n "ecosystem": 1,\n "hash": "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "200",\n "Comment": "Hello Dear",\n "Recipient": "1196-2490-5275-7101-3496"\n },\n "created_at": 1678765099072,\n "size": "297.00B",\n "status": 0\n }\n }\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagevalidatorscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. @1params_list (specifying ecology 1 page name params_list) or params_list (current ecology page name params_list)")])]),e._v(" "),a("h4",{attrs:{id:"return-value-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-38"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("validate_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Specifies the number of nodes to be validated by the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "validate_count": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpage"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPage")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified page name, which is the result of processing by the templating engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the page with the ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".")]),e._v(" "),a("p",[e._v("If you don't have an ecosystem ID, the default is to find the current ecological page, e.g. "),a("code",[e._v("main_page")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-39"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the menu to which the page belongs.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("menutree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree of the page's menus.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - page JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPage","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "menu": "developer_menu",\n "menutree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ],\n "tree": [\n {\n ....\n }\n ...\n ],\n "nodesCount": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenu"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenu")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified menu name, which is the result of processing by the template engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\n"),a("blockquote",[a("p",[e._v("Menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%menu_name%")]),e._v(", e.g.\n"),a("code",[e._v("@1main_menu")]),e._v(".\nIf you don't bring the ecosystem ID, the menu of the current ecology will be found by default, for example\n"),a("code",[e._v("main_menu")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-40"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the menu title.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Menu JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenu","id":1,"params":["@1default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "title": "default",\n "tree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsource"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSource")])]),e._v(" "),a("p",[e._v("Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nPage name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", for example "),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, the default is to find the current ecological page e.g. "),a("code",[e._v("main_page")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-41"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree for the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSource","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": [\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1applications"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"name\\": \\"System\\"}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "setvar",\n "attr": {\n "name": "role_developer_id",\n "value": "AppParam(Ecosystem: #ecosystem_id#, App: #application_id#, Name: role_developer)"\n }\n },\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1roles_participants"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"$and\\": [{\\"role->id\\": {\\"$in\\": [#role_developer_id#]}}, {\\"role->id\\": \\"#role_id#\\"}], \\"member->account\\": \\"#account_id#\\", \\"deleted\\": 0}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "if",\n "attr": {\n "condition": "#developer_access_id#>0"\n },\n "children": [\n {\n "tag": "setvar",\n "attr": {\n "name": "this_page",\n "value": "@1params_list"\n }\n }\n\t\t\t\t\t\t...\n ],\n "tail": [\n {\n "tag": "else",\n "children": [\n {\n "tag": "settitle",\n "attr": {\n "title": "$@1ecosystem_parameters$"\n }\n }\n\t\t\t\t\t\t\t\t...\n ]\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagehash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagehash"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageHash")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page is not found.")]),e._v(" "),a("p",[e._v("To receive the correct hash when making requests to other nodes, you must also pass the\n"),a("em",[e._v("ecosystem,key_id,role_id")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the page with the ecosystem ID. The format is "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. "),a("code",[e._v("@1main_page")]),e._v(", you can specify the eco ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Get the specified page object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")]),e._v(" "),a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The role ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-42"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" -\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageHash","id":1,"params":["@1params_list",0,{"role_id":"1","key_id":"-6484253546138538120"}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "fc5ed3b5e879dd5521dfb792e815019bd8411851e850e75a3590d71e950a0465"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContent")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" Specified as "),a("code",[e._v("true")]),e._v(", this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("template")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page code.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("source")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - If specified as "),a("code",[e._v("true")]),e._v(", the JSON object tree does not perform any functions and receives data.")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-43"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - JSON object tree.")])]),e._v(" "),a("h4",{attrs:{id:"example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-43"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getContent","id":1,"params":[{"template","..."source":true}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": {\n "type":"......", \n "children": [\n {...},\n {...}\n ]\n }\n }\n }\n \n')])])]),a("h3",{attrs:{id:"ibax-getblockinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlockInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified block ID.")]),e._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-44"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block hash value.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollbacks_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensus_mode")]),e._v(" "),a("em",[e._v("Number")]),e._v(" - Consensus mode, parameters (1: creator management mode 2: DAO governance mode)")])])]),e._v(" "),a("h4",{attrs:{id:"example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-44"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlockInfo","id":1,"params":[12]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "Hl+/VvYFFu4iq4zLrRDGHBhm7DM7llEAfEJyaX2Q3is=",\n "key_id": 6667782293976713160,\n "time": 1677134955,\n "tx_count": 1,\n "rollbacks_hash": "o37QAighKMb8WqbEHAqCQb5bOfMvOqV0WoTaN631q74=",\n "node_position": 0,\n "consensus_mode": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getconfig"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getConfig")])]),e._v(" "),a("p",[e._v("Get the host address and port of centrifugo")]),e._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("option")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Configuration item")]),e._v(" "),a("ol",[a("li",[e._v('"centrifugo" - messaging service')])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-45"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("centrifugo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" host address and port of centrifugo Result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-45"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getConfig","id":1,"params":["centrifugo"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "centrifugo":"http://127.0.0.1:8100"\n }\n }\n')])])]),a("h3",{attrs:{id:"net-getnetwork"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-getnetwork"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.getNetwork")])]),e._v(" "),a("p",[e._v("Get node information")]),e._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-46"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")]),e._v(" "),a("li",[a("strong",[e._v("centrifugo_url")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - centrifugo message service address")]),e._v(" "),a("li",[a("strong",[e._v("test")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether it is a test chain")]),e._v(" "),a("li",[a("strong",[e._v("private")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether the chain is private")]),e._v(" "),a("li",[a("strong",[e._v("honor_nodes")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - List of honor nodes\n"),a("ul",[a("li",[a("strong",[e._v("tcp_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - tcp address")]),e._v(" "),a("li",[a("strong",[e._v("api_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - api address")]),e._v(" "),a("li",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - node public key")]),e._v(" "),a("li",[a("strong",[e._v("unban_time")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unlock time")])])])]),e._v(" "),a("h4",{attrs:{id:"example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-46"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.getNetwork","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "network_id": "1",\n "centrifugo_url": "127.0.0.1",\n "test": false,\n "private": false,\n "honor_nodes": [\n {\n "tcp_address": "127.0.0.1:7078",\n "api_address": "http://127.0.0.1:7078",\n "public_key": "049a41b24862f8db61ee66fb206094baa57bfeac7ea786d63662a964d144eb85d1a0e230928d56f46dd61eefac7640b6aa2883b2445c7b2adc0e581f983ff0aedb",\n "unban_time": "-62135596800"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"net-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-status"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.status")])]),e._v(" "),a("p",[e._v("Get the current node status")]),e._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-47"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - Node Status\n"node server status is running" - the node is running\n"node server is updating" - node is being updated\n"node server is stopped" - node suspended')])]),e._v(" "),a("h4",{attrs:{id:"example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-47"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.status","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"rpc-modules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-modules"}},[e._v("#")]),e._v(" "),a("strong",[e._v("rpc.modules")])]),e._v(" "),a("p",[e._v("Get the currently registered JSON-RPC interface")]),e._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-48"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Array")]),e._v(" - JSON-RPC interface array")])]),e._v(" "),a("h4",{attrs:{id:"example-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-48"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"rpc.modules","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n "net.getNetwork",\n "ibax.getAppContent",\n "ibax.honorNodesCount",\n "ibax.maxBlockId",\n "ibax.detailedBlock",\n "ibax.getConfig",\n "ibax.getTableCount",\n "ibax.getMenu"\n ]\n }\n')])])]),a("h3",{attrs:{id:"admin-startjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-startjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.startJsonRpc")])]),e._v(" "),a("p",[e._v("Can be used to switch between JSON-RPC change namespace services")]),e._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("methods")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - JSON-RPC module, default: "ibax,net"')]),e._v(" "),a("h4",{attrs:{id:"return-value-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-49"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-49"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.startJsonRpc","id":1,"params":["ibax,net,admin"]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"admin-stopjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-stopjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.stopJsonRpc")])]),e._v(" "),a("p",[e._v("Close the JSON-RPC service")]),e._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-50"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-50"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.stopJsonRpc","id":1,"params":[]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"debug-getnodebanstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getnodebanstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getNodeBanStat")])]),e._v(" "),a("p",[e._v("Get node disable status")]),e._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-51"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript\n"),a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Disable status, "),a("code",[e._v("true")]),e._v(" ban status, "),a("code",[e._v("false")]),e._v(" not disabled")]),e._v(" "),a("h4",{attrs:{id:"example-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-51"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getNodeBanStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n {\n "node_position": 0,\n "status": true\n }\n ]\n }\n')])])]),a("h3",{attrs:{id:"debug-getmemstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getmemstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getMemStat")])]),e._v(" "),a("p",[e._v("Get the current node memory usage")]),e._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-52"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("alloc")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes requested and still in use")]),e._v(" "),a("li",[a("strong",[e._v("sys")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes fetched from the system")])]),e._v(" "),a("h4",{attrs:{id:"example-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-52"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getMemStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "alloc": 11537432,\n "sys": 35329248\n }\n }\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{460:function(e,t,a){"use strict";a.r(t);var n=a(51),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"json-rpc-application-programming-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-application-programming-interface"}},[e._v("#")]),e._v(" JSON-RPC Application Programming Interface")]),e._v(" "),a("p",[e._v("In order for a software application to interact with the IBAX blockchain (fetch block data or send transactions to the network), it must be connected to an IBAX network node.")]),e._v(" "),a("p",[e._v("Due to the generality and extensibility of the original REST API interface, it will become more and more complex with more and more interfaces and different clients. We realize the importance of interface unification to ensure that all clients can use the same set of specifications, regardless of the specific node and client implementation.")]),e._v(" "),a("p",[e._v("JSON-RPC is a stateless, lightweight remote procedure call (RPC) protocol. It defines a number of data structures and their processing rules. It is transport independent, as these concepts can be used in the same process, via an interface, hypertext transfer protocol, or in many different messaging environments. It uses JSON (RFC 4627) as the data format.")]),e._v(" "),a("p",[e._v("JSON-RPC is compatible with most of the REST API interfaces, retaining the original REST API interface, the client using the REST API interface can easily transfer to the JSON-RPC interface, part of the interface")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/it/reference/api2.html#data-id-data-hash"}},[e._v("/data/{id}/data/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/it/reference/api2.html#data-table-id-column-hash"}},[e._v("/data/{table}/id/{column}/{hash}")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/it/reference/api2.html#avatar-ecosystem-member"}},[e._v("avatar/{ecosystem}/{member}")])],1)]),e._v(" "),a("p",[e._v("Available through the REST API interface.")]),e._v(" "),a("h2",{attrs:{id:"client-side-implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-side-implementation"}},[e._v("#")]),e._v(" Client-side implementation")]),e._v(" "),a("p",[e._v("Each client can use a different programming language when implementing the JSON-RPC specification, and you can use the\n"),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax-sdk",target:"_blank",rel:"noopener noreferrer"}},[e._v("GO-SDK"),a("OutboundLink")],1)]),e._v(" "),a("h2",{attrs:{id:"curl-example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#curl-example"}},[e._v("#")]),e._v(" Curl example")]),e._v(" "),a("p",[e._v("The following provides examples of using the JSON RPC API by making curl requests to IBAX nodes. Each example includes a description of the particular endpoint, its parameters, the return type, and a working example of how it should be used.")]),e._v(" "),a("p",[e._v('Curl requests may return an error message related to the content type. This is because the --data option sets the content type to application/x-www-form-urlencoded. If your request has this problem, set the header manually by placing -H "Content-Type: application/json" at the beginning of the call. These examples also do not include the URL/Internet Protocol and port combination that must be the last parameter of the curl (e.g. 127.0.0.1:7079 A full curl request with this additional data takes the form of')]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","params":[],"id":1}\' http://127.0.0.1:7079\t\n')])])]),a("h2",{attrs:{id:"covenant"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#covenant"}},[e._v("#")]),e._v(" Covenant")]),e._v(" "),a("h3",{attrs:{id:"hex"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hex"}},[e._v("#")]),e._v(" Hex")]),e._v(" "),a("p",[a("strong",[e._v("Hexadecimal code")])]),e._v(" "),a("p",[e._v("When encoding byte arrays, hashes, and bytecode arrays: the encoding is hexadecimal, two hexadecimal digits per byte.")]),e._v(" "),a("h3",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[a("strong",[e._v("Uniform use")])]),e._v(" "),a("ul",[a("li",[e._v("Content-Type: application/json")])]),e._v(" "),a("h3",{attrs:{id:"special-markers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#special-markers"}},[e._v("#")]),e._v(" Special markers")]),e._v(" "),a("h4",{attrs:{id:"omitempty"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[e._v("#")]),e._v(" Omitempty")]),e._v(" "),a("p",[e._v("This field is an optional parameter.")]),e._v(" "),a("p",[e._v("If there are multiple "),a("code",[e._v("Omitempty")]),e._v(" fields in a row,\nBut only want to pass the value of a certain field, then you need to set the unwanted field to null (the field type null value), Example:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Name")]),e._v(" "),a("li",[a("strong",[e._v("column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Filter column names")])]),e._v(" "),a("p",[e._v("If only the name value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0, "testname"]')]),e._v(" - "),a("em",[e._v("Number")]),e._v(" null value is 0")]),e._v(" "),a("p",[e._v("If only the column value is passed, then the request parameters are passed as follows\n"),a("code",[e._v('"params":[0,"", "title,page"]')]),e._v(" - "),a("em",[e._v("String")]),e._v(' empty value for ""')]),e._v(" "),a("h4",{attrs:{id:"authorization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[e._v("#")]),e._v(" Authorization")]),e._v(" "),a("p",[e._v("Authorization header, add Authorization to the request header, example:")]),e._v(" "),a("p",[a("strong",[e._v("name")]),e._v(" : Authorization "),a("strong",[e._v("value")]),e._v(" : Bearer +"),a("a",{attrs:{href:"#ibax-login"}},[e._v("login token")])]),e._v(" "),a("p",[e._v("Example:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","params":["@1TokensSend"],"id":1}\' http://127.0.0.1:7079\n\n')])])]),a("h4",{attrs:{id:"accountorkeyid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#accountorkeyid"}},[e._v("#")]),e._v(" AccountOrKeyId")]),e._v(" "),a("p",[e._v("For the account address parameter, you can use two formats of addresses, for example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v(" - Account Address "),a("code",[e._v('"XXXX-XXXX-XXXX-XXXX-XXXX"')]),e._v(" or Account Id "),a("code",[e._v('"64842...538120"')]),e._v(' .538120"`')])])]),e._v(" "),a("li",[a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Address object")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Account Id, Example: "),a("code",[e._v('{"key_id":-64842\t38120}')])]),e._v(" "),a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account address, Example: "),a("code",[e._v('{"account": "1196-... -\t-... -3496"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Account Id is preferred when both account address and account Id exist")]),e._v(".")])])]),e._v(" "),a("h4",{attrs:{id:"blockorhash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockorhash"}},[e._v("#")]),e._v(" BlockOrHash")]),e._v(" "),a("p",[e._v("Block height or block HASH, example")]),e._v(" "),a("ol",[a("li",[a("ul",[a("li",[a("em",[e._v("String")]),e._v("\t-\tBlock\tHeight\t"),a("code",[e._v('"100"')]),e._v("\tor\tBlock\tHASH"),a("code",[e._v('"4663aa47...a60753c18d9ba9cb4"')])])])]),e._v(" "),a("li",[a("ul",[a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - Block information object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height, example: "),a("code",[e._v('{"id":2}')])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v("\t-\t"),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v("\tString")]),e._v("\t-\tBlock\tHASH,\tExample:\t"),a("code",[e._v('{"hash": "d36b8996c\tc616d3043a0d02a0f59"}')])])]),e._v(" "),a("p",[a("strong",[e._v("Block Height and Block HASH can only choose one")]),e._v(".")])])])])]),e._v(" "),a("h3",{attrs:{id:"batch-requests"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#batch-requests"}},[e._v("#")]),e._v(" Batch requests")]),e._v(" "),a("p",[e._v("This feature can be used to reduce network latency, especially when acquiring a large number of largely independent data objects.")]),e._v(" "),a("p",[e._v("The following is an example of obtaining the highest block and total number of transactions:")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'[{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]},{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":2,"params":[]}]\' http://127.0.0.1:7079\n\n //Response\n [\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149100\n },\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": 797\n }\n ]\n')])])]),a("h3",{attrs:{id:"error-response-handling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#error-response-handling"}},[e._v("#")]),e._v(" Error response handling")]),e._v(" "),a("p",[e._v("Returns status "),a("code",[e._v("200")]),e._v(" in case the request is executed successfully.")]),e._v(" "),a("p",[e._v("If an error occurs, a JSON object with the following fields will be returned:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("jsonrpc")]),e._v(" "),a("p",[e._v("Error identifier.")])]),e._v(" "),a("li",[a("p",[e._v("id")]),e._v(" "),a("p",[e._v("Error text message.")])]),e._v(" "),a("li",[a("p",[e._v("error")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("code")]),e._v(" "),a("p",[e._v("Response Status Code")])]),e._v(" "),a("li",[a("p",[e._v("message")]),e._v(" "),a("p",[e._v("Response Status Description")])])])])]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('{\n "jsonrpc": "2.0",\n "id": 1,\n "error": {\n "code": -32014,\n "message": "Unauthorized"\n }\n}\n')])])]),a("h2",{attrs:{id:"json-rpc-namespaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-namespaces"}},[e._v("#")]),e._v(" JSON-RPC Namespaces")]),e._v(" "),a("h3",{attrs:{id:"ibax-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-namespace"}},[e._v("#")]),e._v(" ibax Namespace")]),e._v(" "),a("h4",{attrs:{id:"authentication-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#authentication-interface"}},[e._v("#")]),e._v(" Authentication Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getuid"}},[e._v("ibax.getuid")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-login"}},[e._v("ibax.login")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getauthstatus"}},[e._v("ibax.getAuthStatus")])])]),e._v(" "),a("h4",{attrs:{id:"server-side-command-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-command-interface"}},[e._v("#")]),e._v(" server-side command interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getversion"}},[e._v("ibax.getVersion")])])]),e._v(" "),a("h4",{attrs:{id:"data-request-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#data-request-function-interface"}},[e._v("#")]),e._v(" Data Request Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getbalance"}},[e._v("ibax.getBalance")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockstxinfo"}},[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblocks"}},[e._v("ibax.detailedBlocks")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyinfo"}},[e._v("ibax.getKeyInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-detailedblock"}},[e._v("ibax.detailedBlock")])])]),e._v(" "),a("h4",{attrs:{id:"get-metrics-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-metrics-interface"}},[e._v("#")]),e._v(" Get Metrics Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-maxblockid"}},[e._v("ibax.maxBlockId")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getkeyscount"}},[e._v("ibax.getKeysCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettxcount"}},[e._v("ibax.getTxCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettransactioncount"}},[e._v("ibax.getTransactionCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockscountbynode"}},[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-honornodescount"}},[e._v("ibax.honorNodesCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemcount"}},[e._v("ibax.getEcosystemCount")])])]),e._v(" "),a("h4",{attrs:{id:"ecosystem-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-interface"}},[e._v("#")]),e._v(" Ecosystem Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-ecosysteminfo"}},[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-appparams"}},[e._v("ibax.appParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getecosystemparams"}},[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettablecount"}},[e._v("ibax.getTableCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-gettable"}},[e._v("ibax.getTable")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getlist"}},[e._v("ibax.getList")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsections"}},[e._v("ibax.getSections")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getrow"}},[e._v("ibax.getRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-systemparams"}},[e._v("ibax.systemParams")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-history"}},[e._v("ibax.history")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagerow"}},[e._v("ibax.getPageRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenurow"}},[e._v("ibax.getMenuRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsnippetrow"}},[e._v("ibax.getSnippetRow")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getappcontent"}},[e._v("ibax.getAppContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmember"}},[e._v("ibax.getMember")])])]),e._v(" "),a("h4",{attrs:{id:"contract-function-interface"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-function-interface"}},[e._v("#")]),e._v(" Contract Function Interface")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-getcontracts"}},[e._v("ibax.getContracts")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-sendtx"}},[e._v("ibax.sendTx")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfo"}},[e._v("ibax.txInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-txinfomultiple"}},[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpage"}},[e._v("ibax.getPage")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getmenu"}},[e._v("ibax.getMenu")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getsource"}},[e._v("ibax.getSource")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getpagehash"}},[e._v("ibax.getPageHash")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getcontent"}},[e._v("ibax.getContent")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getblockinfo"}},[e._v("ibax.getBlockInfo")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ibax-getconfig"}},[e._v("ibax.getConfig")])])]),e._v(" "),a("h3",{attrs:{id:"net-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-namespace"}},[e._v("#")]),e._v(" net Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#net-getnetwork"}},[e._v("net.getNetwork")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#net-status"}},[e._v("net.status")])])]),e._v(" "),a("h3",{attrs:{id:"rpc-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-namespace"}},[e._v("#")]),e._v(" rpc Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#rpc-modules"}},[e._v("rpc.modules")])])]),e._v(" "),a("h3",{attrs:{id:"admin-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-namespace"}},[e._v("#")]),e._v(" admin Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#admin-startjsonrpc"}},[e._v("admin.startJsonRpc")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#admin-stopjsonrpc"}},[e._v("admin.stopJsonRpc")])])]),e._v(" "),a("h3",{attrs:{id:"debug-namespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-namespace"}},[e._v("#")]),e._v(" debug Namespace")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#debug-getnodebanstat"}},[e._v("debug.getNodeBanStat")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#debug-getmemstat"}},[e._v("debug.getMemStat")])])]),e._v(" "),a("h2",{attrs:{id:"json-rpc-interface-methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-interface-methods"}},[e._v("#")]),e._v(" JSON-RPC Interface Methods")]),e._v(" "),a("h3",{attrs:{id:"ibax-getuid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getuid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getUid")])]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Generate a temporary JWT token,\twhich needs to be passed to "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(" when calling "),a("strong",[a("a",{attrs:{href:"#ibax-login"}},[e._v("login")])])]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("uid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The signature number.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - temporary token passed during login (temporary token has a 5 second lifespan).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("cryptoer")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Elliptic curve algorithm.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hasher")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - hash algorithm.")])])]),e._v(" "),a("p",[e._v("In the case that no authorization is required(the request contains "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")]),e._v(", the following message will be returned.")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Expiration time.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")])])]),e._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response1\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "uid": "5823391950439015186",\n "token": "ey....",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response2\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "expire": "7h59m49.5361126s",\n "ecosystem_id": "1",\n "key_id": "6667782293976713160",\n "address": "0666-7782-2939-7671-3160",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-login"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.login")])]),e._v(" "),a("p",[e._v("User authentication. "),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"#ibax-getuid"}},[a("strong",[e._v("ibax.getUid")])]),e._v(" command should be called first in order to receive the unique value and sign it.\nThe temporary JWT token for getuid needs to be passed in the request header.\nIf the request is successful, the token received in the response is contained in "),a("a",{attrs:{href:"#authorization"}},[a("strong",[e._v("Authorization")])]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication call object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID. if not specified, defaults to the first ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("expire")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The lifecycle of the JWT token in seconds, default is 28800,8 hours.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Hexadecimal account public key.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -")]),e._v(" "),a("blockquote",[a("p",[e._v("Account address "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("p",[e._v("Use this parameter if the public key is already stored in the blockchain. It cannot be used with "),a("em",[e._v("pubkey")]),e._v("\nparameters are used together.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("signature")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nUse the private key to sign the uid received by getuid.")]),e._v(" "),a("p",[e._v("Signature data content:LOGIN+{$network_id}+uid")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID, default role 0")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-2"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("token")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - JWT token.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - wallet address "),a("code",[e._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("notify_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The notification ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isnode")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the owner of the node. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("isowner")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the account address is the creator of this ecosystem. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("clb")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Whether the logged-in ecosystem is a CLB. Values: "),a("code",[e._v("true,false")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("timestamp")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - current timestamp")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" list of roles, if there are no roles, the field is nil")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Role ID")]),e._v(" "),a("li",[a("strong",[e._v("role_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Role name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.login","params":[{"ecosystem_id":1,"public_key":"04....","signature","46...","role_id":0}],"id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "token": "ey...",\n "ecosystem_id": "1",\n "key_id": "6660819716178795186",\n "account": "0666-xxxx-xxxx-xxxx-5186",\n "notify_key": "ey....",\n "isnode": false,\n "isowner": false,\n "clb": false,\n "timestamp": "1678336163",\n "roles": nil //[{"role_id": 1, "role_name": "Developer"},{"role_id": 2, "role_name": "DevelopGovernancerer"}]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getauthstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getauthstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAuthStatus")])]),e._v(" "),a("p",[e._v("User authentication status\n"),a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-3"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Authentication status object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("active")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - The current user authentication status. Values: "),a("code",[e._v("true,false")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("exp")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Token validity cutoff timestamp")])])]),e._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getAuthStatus","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "active": true,\n "exp": 1678354136\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getversion"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getversion"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getVersion")])]),e._v(" "),a("p",[e._v("Returns the current server version.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-4"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("vesion")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - version number ("),a("code",[e._v("big Version")]),e._v(" + "),a("code",[e._v("branch name")]),e._v(" + "),a("code",[e._v("git commit")]),e._v(" + "),a("code",[e._v("time")]),e._v(" + "),a("code",[e._v("node status")]),e._v(")")])]),e._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getVersion","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "1.3.0 branch.main commit.b57d4194 time.2023-03-08-09:30:29(UTC) node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"ibax-getbalance"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getbalance"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBalance")])]),e._v(" "),a("p",[e._v("Get the account address balance.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("key_id or account")]),e._v(" - "),a("a",{attrs:{href:"#accountorkeyid"}},[a("em",[e._v("AccountOrKeyId")])]),e._v(" - account address "),a("code",[e._v("XXXX- XXXX-XXXX-XXXX-XXXX")]),e._v(" or account ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecosystem ID "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Default 1")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-5"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the balance object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the minimum unit of the contract account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("total")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the total balance of the minimum unit account (amount + utxo).")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("utxo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Minimum unit UTXO account balance.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")])])]),e._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["648...8120"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["1196-...-...-...-3496",1]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":[{"key_id":{$key_id}},1]}\' http://127.0.0.1:7079 //keyId or account\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "amount": "9915319240441612",\n "digits": 12,\n "total": "9915319240441612",\n "utxo": "0",\n "token_symbol": "IBXC"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockstxinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockstxinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksTxInfo")])]),e._v(" "),a("p",[e._v("Returns a list containing additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the starting block height to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-6"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block information object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height")])]),e._v(" "),a("li",[a("p",[e._v("List of transactions in the block and additional information for each transaction:")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" -\nFor the first block, it is the account address of the first block that signed the transaction.")]),e._v(" "),a("p",[e._v("For all other blocks, it is the address of the account that signed the transaction.")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksTxInfo","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": [ //block_id\n {\n "hash": "uXSaSrMWlbHpNlu049J5BDypC6MzBQ0/5VEfGQf+5aQ=",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160\n }\n ],\n "2": [ //block_id\n {\n "hash": "r8U9IKjtZ5Be5D4ak3zxLlDwn36CTdfIAsVvQhx7P3w=",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblocks"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlocks")])]),e._v(" "),a("p",[e._v("Returns a list containing detailed additional information about the transactions in each block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the starting block to query")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of blocks, default is 25, maximum request is 100")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-7"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block height\n"),a("ul",[a("li",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")]),e._v(" "),a("li",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")]),e._v(" "),a("li",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")]),e._v(" "),a("li",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")]),e._v(" "),a("li",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlocks","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": { //block id\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f73497ede8f22d678bc4be6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "36373332663064383331353264316333653639346431656436383734373634363463616363616564636632353232646335633736643066623737343931366363",\n "bin_data": "Cp4BCAEQppm...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n },\n "2": { //block id\n "header": {\n "block_id": 2,\n "time": 1676536235,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "dd13a30661d35e01df82027a6e6607eb47ee00765d69767dbb99e151676c2c96",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676536235,\n "tx_count": 1,\n "size": "1.53KiB",\n "rollbacks_hash": "9041312d69e6bcd37c91a2bfa066abaeb53b8398708937a618a89960bfadab3d",\n "merkle_root": "65366537383931353662613230356565396466353061316538656538643636323332316636616265623764633539616166346635343030383135386538643130",\n "bin_data": "Cp4BCAIQq9O...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "afc53d20a8ed67905ee43e1a937cf12e50f09f7e824dd7c802c56f421c7b3f7c",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160,\n "time": 1676536233945,\n "type": 3,\n "size": "390.00B"\n }\n ]\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeyInfo")])]),e._v(" "),a("p",[e._v("Returns a list of ecosystems with roles that are registered to the specified address.")]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")])]),e._v(" "),a("h4",{attrs:{id:"return-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-8"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Specify the address eco-list object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Account Address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystems")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Eco-List\n"),a("ul",[a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecosystem name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("roles")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - list of roles.\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - role id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Character name")])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeyInfo","id":1,"params":["0666-XXXX-XXXX-XXXX-5186"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "account": "0666-XXXX-XXXX-XXXX-5186",\n "ecosystems": [\n {\n "ecosystem": "1",\n "name": "platform ecosystem",\n "digits": 12,\n "roles": [\n {\n "id": "1",\n "name": "Developer"\n },\n {\n "id": "2",\n "name": "Governancer"\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-detailedblock"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblock"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.detailedBlock")])]),e._v(" "),a("p",[e._v("Returns a detailed list of additional information about the transactions in the block.")]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block or Hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - Block Height or Block Hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-9"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the block details object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("header")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - block header The block header contains the following fields.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")]),e._v(" "),a("li",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")]),e._v(" "),a("li",[a("strong",[e._v("version")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the block structure version.")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the node that generated the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the size of the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollback_hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("merkle_root")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The merkle tree for this block transaction.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("bin_data")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - Serialization of the block header, all transactions within the block, the previous block hash, and the private key of the node that generated the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("transactions")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Transactions List of transactions in the block and additional information about each transaction:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#hex"}},[e._v("Hex")]),e._v(" String")]),e._v(" - The transaction hash.")]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The address of the account that signed the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - transaction generation timestamp (unit: ms).")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the type of the transaction.")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction size.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["1"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91"]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":[{"id":1}]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "3637333266306438333135...623737343931366363",\n "bin_data": "Cp4BCAEQppm2nwYgyI/8gLSVrsRcMkAFGTK6nxD86hfhgQX0dWzO8aYZExDN9UPm8sKkqeUbwrNliYuCJHvvdX+txINnM7+gDqtMF/1K43kc0gYC0u8uOiANfVG0wUusv0XYEvc0l+3o8i1ni8S+bmhIGT87cmKskUIgBEhSsqZwreVAfnj7KGPFHen8uWVCoHGG/jrtpruKEW1IA1ABYAESRDogQBBdW8EBBcF/1yuTqPczaeLubu5NRxS3v3vzwvFW5gFCIARIUrKmcK3lQH54+yhjxR3p/LllQqBxhv467aa7ihFtGkA2NzMyZjBkODMxNTJkMWMzZTY5NGQxZWQ2ODc0NzY0NjRjYWNjYWVkY2YyNTIyZGM1Yzc2ZDBmYjc3NDkxNmNjKugCeJxibFvmk5+enlp0YK1LUkhRYl5xYnJJZn7egSUuiSWJ7Uu9Uys9XS7HdOxY7SDPfmJJSGZu6mUGBgaG5Lc9y1YGlCblZCZ7p1YecejvOPzyp63tWeYpWS+nxBTv3biTOUTqg7vfgedPuXdbnjsmYX49a9mXA025NT4TbjQ65bQwbloQcjbQRG3ZudjjUxuL1/rlp6QimTfLcZNH0o/bie/SfiskTNm1tPrfmrrlbdfMklamXHR53XpxwSODSb1hX3Kvyb1fU+awbZVG8yaXmGqtO3wR8jPsP6y7vTW4JL/AL7WkPL8o2zm1qMSpNC8lJ/XAkpDU4hKwBxgYGBg3BhRlliWWpDrl5CdnJ2ckZuadh0oxrAT5tLgkMbfgMgMDY1v42yy2ZSEVHonFGUcUdpbM8tosNnXjS7PoLY8vVbLYrORebMzKa/80UF6S/d/TJcsDEitz8hNTjvwaueEHCAAA//+pZRGv",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-maxblockid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-maxblockid"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.maxBlockId")])]),e._v(" "),a("p",[e._v("Get the highest block ID on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-10"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Block Id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The highest block on the current node")])]),e._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 774\n }\n')])])]),a("h3",{attrs:{id:"ibax-getkeyscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getKeysCount")])]),e._v(" "),a("p",[e._v("Get the total number of addresses on the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-11"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of addresses")])]),e._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeysCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 11\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettxcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettxcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTxCount")])]),e._v(" "),a("p",[e._v("Get the total number of transactions in the current node")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-12"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of transactions")])]),e._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149068\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettransactioncount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettransactioncount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTransactionCount")])]),e._v(" "),a("p",[e._v("Get the number of block transactions")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block or hash")]),e._v(" - "),a("em",[a("a",{attrs:{href:"#blockorhash"}},[e._v("BlockOrHash")])]),e._v(" - block height or block hash")])]),e._v(" "),a("h4",{attrs:{id:"return-value-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-13"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("h4",{attrs:{id:"example-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTransactionCount","id":1,"params":["efc386f7573269610a34af9cc722f775cca8183ccaa0ed7a96db61ef0bde6d1c"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 337\n }\n')])])]),a("h3",{attrs:{id:"ibax-getblockscountbynode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockscountbynode"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlocksCountByNode")])]),e._v(" "),a("p",[e._v("Get the number of node location packing blocks")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("nodePosition")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensusMode")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Consensus Mode, parameters (1: Creator Management Mode 2: DAO Governance Mode)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-14"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the node subscript packing number object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("total_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Total number of blocks")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("partial_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of node subscript packing blocks")])])]),e._v(" "),a("h4",{attrs:{id:"example-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksCountByNode","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "total_count": 774,\n "partial_count": 774\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-honornodescount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-honornodescount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.honorNodesCount")])]),e._v(" "),a("p",[e._v("Get number of honor nodes")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-15"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - number of nodes")])]),e._v(" "),a("h4",{attrs:{id:"example-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.honorNodesCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 1\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemcount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemcount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemCount")])]),e._v(" "),a("p",[e._v("Number of ecosystem acquisitions")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-16"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Ecological number")])]),e._v(" "),a("h4",{attrs:{id:"example-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 2\n }\n')])])]),a("h3",{attrs:{id:"ibax-ecosysteminfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ecosysteminfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.ecosystemInfo")])]),e._v(" "),a("p",[e._v("Access to ecological information")]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ecosystem id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecological ID")])]),e._v(" "),a("h4",{attrs:{id:"return-value-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-17"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Eco-ID")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Ecological name")]),e._v(" "),a("li",[a("strong",[e._v("digits")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Accuracy")]),e._v(" "),a("li",[a("strong",[e._v("token_symbol")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Token symbols")]),e._v(" "),a("li",[a("strong",[e._v("token_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the token")]),e._v(" "),a("li",[a("strong",[e._v("total_amount")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the number of issues (first issue, or "),a("code",[e._v('"0"')]),e._v(" if not issued)")]),e._v(" "),a("li",[a("strong",[e._v("is_withdraw")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - destructible "),a("code",[e._v("true:destructible false:undestructible")])]),e._v(" "),a("li",[a("strong",[e._v("withdraw")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - amount of destruction ("),a("code",[e._v('"0"')]),e._v(" if not destructible, or not destroyed)")]),e._v(" "),a("li",[a("strong",[e._v("is_emission")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - may be incremented "),a("code",[e._v("true:may be incremented false:may not be incremented")])]),e._v(" "),a("li",[a("strong",[e._v("emission")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - increment ("),a("code",[e._v('"0"')]),e._v(" if no increment is available, or if no increment is available)")]),e._v(" "),a("li",[a("strong",[e._v("introduction")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco Introduction")]),e._v(" "),a("li",[a("strong",[e._v("logo")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoLogo Id (corresponds to Binary table id), available through the RESTFUL API")]),e._v(" "),a("li",[a("strong",[e._v("creator")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Eco-creator")])]),e._v(" "),a("h4",{attrs:{id:"example-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.ecosystemInfo","id":1,"params":[1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "id": 5,\n "name": "test name",\n "digits": 6,\n "token_symbol": "test",\n "token_name": "test Coin",\n "total_amount": "10000",\n "is_withdraw": true,\n "withdraw": "100000000000900000",\n "is_emission": true,\n "emission": "100000000001000000",\n "introduction": "this is a test introduction",\n "logo": 6,\n "creator": "0666-0819-7161-7879-5186"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-appparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-appparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.appParams")])]),e._v(" "),a("p",[e._v("Returns a list of application parameters in the current or specified ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("appid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the application ID.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID;")]),e._v(" "),a("p",[e._v("If unspecified or 0, the parameters of the current ecosystem will be returned.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Filter the application parameter names.")]),e._v(" "),a("p",[e._v("A comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-18"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("em",[e._v("Array")]),e._v(" - List of application parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application ID")]),e._v(" "),a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Each element of the array contains the following parameters\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - parameter ID, unique;")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the parameter;")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the parameter value;")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.appParams","id":1,"params":[1,1,"role_developer,role_governancer"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "app_id": 1,\n "list": [\n {\n "id": "4",\n "name": "role_developer",\n "value": "1",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n },\n {\n "id": "5",\n "name": "role_governancer",\n "value": "2",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getecosystemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getEcosystemParams")])]),e._v(" "),a("p",[e._v("Get a list of ecosystem parameters")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Ecosystem ID")]),e._v(" "),a("p",[e._v("If 0 or no such parameter, default: current ecid.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The name of the filter parameter.")]),e._v(" "),a("p",[e._v("Comma-separated list of names, e.g.: "),a("code",[e._v("name1,name2")])]),e._v(" "),a("p",[e._v("The "),a("em",[e._v("offset")]),e._v(" and "),a("em",[e._v("limit")]),e._v(" parameters are invalid when there is a filter parameter.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-19"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The id of the parameter, unique.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemParams","id":1,"params":[0,"changing_app_params,changing_language"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "9",\n "name": "changing_app_params",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n },\n {\n "id": "4",\n "name": "changing_language",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettablecount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettablecount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTableCount")])]),e._v(" "),a("p",[e._v("Returns a list of data tables for the current ecosystem.")]),e._v(" "),a("p",[e._v("Offset and number of entries can be set")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-20"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The total number of sheets of the current ecological data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table without prefix.")]),e._v(" "),a("li",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The number of entries in the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTableCount","id":1,"params":[0,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 32,\n "list": [\n {\n "name": "app_params",\n "count": "41"\n },\n {\n "name": "applications",\n "count": "7"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-gettable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettable"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getTable")])]),e._v(" "),a("p",[e._v("Returns information about the current ecosystem request data table.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Data table name")])]),e._v(" "),a("h4",{attrs:{id:"return-value-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-21"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("insert")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add permission to add an entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("new_column")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Add new field permission.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("update")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change entry permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The application id.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Conditions for changing permissions.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of information related to data table fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the field.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The field data type.")]),e._v(" "),a("li",[a("strong",[e._v("perm")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Permission to change the value of this field.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTable","id":1,"params":["app_params"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "name": "app_params",\n "insert": "ContractConditions(\\"DeveloperCondition\\")",\n "new_column": "ContractConditions(\\"@1MainCondition\\")",\n "update": "ContractAccess(\\"@1EditAppParam\\")",\n "conditions": "ContractConditions(\\"@1MainCondition\\")",\n "app_id": "1",\n "columns": [\n {\n "name": "value",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "app_id",\n "type": "number",\n "perm": "ContractAccess(\\"@1ItemChangeAppId\\")"\n },\n {\n "name": "ecosystem",\n "type": "number",\n "perm": "false"\n },\n {\n "name": "conditions",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "permissions",\n "type": "json",\n "perm": "ContractConditions(\\"@1MainCondition\\")"\n },\n {\n "name": "name",\n "type": "varchar",\n "perm": "false"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getlist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getlist"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getList")])]),e._v(" "),a("p",[e._v("Returns the entry of the specified data table.")]),e._v(" "),a("p",[e._v("You can specify the columns to be returned.")]),e._v(" "),a("p",[e._v("You can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("You can set the query criteria.")]),e._v(" "),a("p",[e._v("Hex encoding of data tables of type "),a("em",[e._v("BYTEA")]),e._v(" (byte arrays, hashes, byte code arrays)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("em",[e._v("Object")]),e._v(" - Get the data table object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("order")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Sort by, default id ASC.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("where")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("Query criteria")]),e._v(" "),a("p",[e._v("Example:If you want to query id>2 and name = john")]),e._v(" "),a("p",[e._v("You can use "),a("code",[e._v('where:{"id":{"$gt":2}, "name":{"$eq": "john"}}')])]),e._v(" "),a("p",[e._v("For details, please refer to "),a("RouterLink",{attrs:{to:"/it/topics/script.html#dbfind"}},[e._v("DBFind")]),e._v(" where syntax")],1)])]),e._v(" "),a("h4",{attrs:{id:"return-value-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-22"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - Other columns of the data table.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getList","id":1,"params":[{"name":"@1history","where":{"$and": [{"id":{"$gt": 2}}, {"id":{"$lt": 5}}]}}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "amount": "1000000000000000000",\n "block_id": "4",\n "comment": "UTXO",\n "created_at": "1676538080433",\n "ecosystem": "1",\n "id": "3",\n "recipient_balance": "1000000000000000000",\n "recipient_id": "666...160",\n "sender_balance": "1000000000000000000",\n "sender_id": "666...3160",\n "status": "0",\n "txhash": "2ac156c0ce55c10fd485cb9d59f50e3f9b269fb9bb69571d3c2eeae033d6c6cc",\n "type": "24",\n "value_detail": "NULL"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsections"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsections"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSections")])]),e._v(" "),a("p",[e._v("Return to the tab of the current ecosystem\nList of table entries, you can set the offset and the number of entries.")]),e._v(" "),a("p",[e._v("If "),a("em",[e._v("role_access")]),e._v("\nfield contains a list of roles and does not include the current role, no record will be returned. "),a("em",[e._v("title")]),e._v("\nThe data in the field will be replaced by the "),a("em",[e._v("Accept-Language")]),e._v(" language resource in the request header.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Get the actions request object\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The number of entries, default 25 entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("lang")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" -")]),e._v(" "),a("p",[e._v("This field specifies the multilingual resource code or localization, e.g. "),a("em",[e._v("en, zh")]),e._v(". If the specified multilingual resource is not found, e.g. "),a("em",[e._v("en-US")]),e._v(", then search in the Multilingual Resources group, "),a("strong",[e._v("default")]),e._v(": "),a("strong",[e._v("en")]),e._v(".")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-23"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of tab entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains information about all columns in the sections table.")])])]),e._v(" "),a("h4",{attrs:{id:"example-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSections","id":1,"params":[{"offset":0,"limit":2}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "ecosystem": "1",\n "id": "1",\n "page": "default_page",\n "roles_access": "[]",\n "status": "2",\n "title": "Home",\n "urlname": "home"\n },\n {\n "ecosystem": "1",\n "id": "2",\n "page": "developer_index",\n "roles_access": "[]",\n "status": "1",\n "title": "Developer",\n "urlname": "developer"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getRow")])]),e._v(" "),a("p",[e._v("Returns the entries of the specified data table in the current ecosystem. You can specify the columns to be returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("tableName")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("columns")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")])]),e._v(" "),a("p",[e._v("A comma-separated list of requested columns, if not specified, all columns will be returned.")]),e._v(" "),a("p",[e._v('If you do not filter, you can place a blank "".')]),e._v(" "),a("p",[e._v("The id column will be returned in all cases.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("whereColumn")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Find column name (only Number type columns can be found)")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-24"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("value")]),e._v("- "),a("em",[e._v("Object")]),e._v(" - object that receives column values\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("...")]),e._v(" - The sequence of requested columns.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getRow","id":1,"params":["@1history",4,"id,sender_id,recipient_id,amount,ecosystem,created_at","id"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "value": {\n "amount": "680388766240",\n "created_at": "1677222830899",\n "ecosystem": "1",\n "id": "296",\n "recipient_id": "6667782293976713160",\n "sender_id": "6660819716178795186"\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-systemparams"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-systemparams"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.systemParams")])]),e._v(" "),a("p",[e._v("Returns the list of platform parameters.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("names")]),e._v(" - "),a("em",[e._v("String")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - A list of request parameters, separated by commas.")]),e._v(" "),a("p",[e._v("For example "),a("code",[e._v('names="name1,name2"')]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 100, max 100.")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-25"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:\n"),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unique id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The value of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.systemParams","id":1,"params":["gap_between_blocks,honor_nodes"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "4",\n "name": "gap_between_blocks",\n "value": "2",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n },\n {\n "id": "6",\n "name": "honor_nodes",\n "value": "",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-history"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.history")])]),e._v(" "),a("p",[e._v("Returns the changed records of the entries of the specified data table in the current ecosystem")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the data table.")]),e._v(" "),a("li",[a("strong",[e._v("tableId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-26"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains change records for the requested entry.")])]),e._v(" "),a("h4",{attrs:{id:"example-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.history","id":1,"params":["contracts",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "conditions": "ContractConditions(\\"MainCondition\\")",\n "ecosystem": "1",\n "value": "// This contract is used to set \\"developer\\" rights....."\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagerow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagerow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystempages data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-27"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Directory.")]),e._v(" "),a("li",[a("strong",[e._v("nodesCount")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of nodes the page needs to validate")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application Id")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPageRow","id":1,"params":["default_page"]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5,\n "name": "default_page",\n "value": "If(#account_id# == #guest_account#){\\n Include(@1apps_description)\\n}.Else{\\n Include(@1profile)\\n}",\n "menu": "default_menu",\n "nodesCount": 1,\n "app_id": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenurow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenurow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenuRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem menu data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-28"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The title.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters")])]),e._v(" "),a("h4",{attrs:{id:"example-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenuRow","id":1,"params":["default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 2,\n "name": "default_menu",\n "title": "default",\n "value": "\\nMenuItem.....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsnippetrow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsnippetrow"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSnippetRow")])]),e._v(" "),a("p",[e._v("Gets the current entry in the ecosystem snippet data table field.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Specifies the name of the entry in the table.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-29"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ID of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the entry.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - permissions to change parameters.")])]),e._v(" "),a("h4",{attrs:{id:"example-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSnippetRow","id":1,"params":["welcome"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 12,\n "name": "welcome",\n "value": "Div(content-wrapper)....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getappcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getappcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getAppContent")])]),e._v(" "),a("p",[e._v("Get application related information (including page, snippet, menu)")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Application id")])]),e._v(" "),a("h4",{attrs:{id:"return-value-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-30"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("snippets")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of code snippet information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Code snippet name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("pages")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Array of page information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contracts")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - an array of contract information")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - id")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")])])])]),e._v(" "),a("h4",{attrs:{id:"example-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "snippets": [ //if not app snippets is null array,example:[]\n {\n "id": 2,\n "name": "developer_link"\n },\n {\n "id": 3,\n "name": "export_info"\n }\n ],\n "pages": [ //if not app pages is null array,example:[]\n {\n "id": 6,\n "name": "menus_list"\n },\n {\n "id": 7,\n "name": "params_edit"\n }\n ],\n "contracts": [ //if not app contracts is null array,example:[]\n {\n "id": 2,\n "name": "MainCondition"\n },\n {\n "id": 33,\n "name": "NodeOwnerCondition"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmember"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmember"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMember")])]),e._v(" "),a("p",[e._v("Get member information")]),e._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("account")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Member Information")]),e._v(" "),a("p",[a("strong",[e._v("ecosystemId")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - ecoid")]),e._v(" "),a("h4",{attrs:{id:"return-value-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-31"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - member id")]),e._v(" "),a("li",[a("strong",[e._v("member_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Name")]),e._v(" "),a("li",[a("strong",[e._v("image_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Avatar id")]),e._v(" "),a("li",[a("strong",[e._v("member_info")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Introduction")])]),e._v(" "),a("h4",{attrs:{id:"example-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}}" -d \'{"jsonrpc":"2.0","method":"ibax.getMember","id":1,"params":["1497-2036-4953-3607-1121",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 14,\n "member_name": "som",\n "image_id": 5, \n "member_info": "{\\"information\\": \\"Everything will be okay in the end. If it\'s not okay, it\'s not the end.\\"}"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontracts"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContracts")])]),e._v(" "),a("p",[e._v("Get the list of contracts in the current ecosystem, you can set the offset and the number of entries.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("offset")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The offset, default is 0.")]),e._v(" "),a("li",[a("strong",[e._v("limit")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" The number of entries, default 25.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-32"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of entries.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("list")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Each element of the array contains the following parameters:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract ID.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("value")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The content of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("wallet_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The address of the account to which the contract is bound.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("app_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the application to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("conditions")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Change the permissions of the contract.")]),e._v(" "),a("li",[a("strong",[e._v("token_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The ID of the ecosystem where the pass is used as a payment for the contract.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContracts","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 293,\n "list": [\n {\n "address": "0000-0000-0000-0000-0000",\n "app_id": "1",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "ecosystem_id": "1",\n "id": "1",\n "name": "DeveloperCondition",\n "token_id": "1",\n "value": "// This contract is used to ...",\n "wallet_id": "0"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontractinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontractinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContractInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified contract.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("contractName")]),e._v("\t-\t"),a("em",[e._v("String")]),e._v("\t-\tThe\tname\tof\tthe\tcontract.\tThe\tformat\tis "),a("code",[e._v("@ecosystem_id%%contractName%")]),e._v(", e.g. @1contractName (the specified eco1contract name contractName) or contractName (the current eco-contract name contractName).")])]),e._v(" "),a("h4",{attrs:{id:"return-value-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-33"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the contract ID in the VM.")]),e._v(" "),a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name with ecosystem ID "),a("code",[e._v("@1MainCondition")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("state")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the ecosystem ID to which the contract belongs.")]),e._v(" "),a("li",[a("strong",[e._v("walletid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the account to which the contract is bound")]),e._v(" "),a("li",[a("strong",[e._v("tokenid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the ecosystem ID of the pass that is used as the payment for the contract.")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the address of the contract-bound wallet "),a("code",[e._v("XXXX-... -XXXX")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("tableid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - ID of the entry in the "),a("em",[e._v("contracts")]),e._v(" table where the contract is located.")]),e._v(" "),a("li",[a("strong",[e._v("fields")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - array containing structural information for each parameter of the contract "),a("strong",[e._v("data")]),e._v(" section:\n"),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The type of the parameter.")]),e._v(" "),a("li",[a("strong",[e._v("optional")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - parameter options, "),a("code",[e._v("true")]),e._v(" means optional parameters, "),a("code",[e._v("false")]),e._v(" means mandatory parameters.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","id":1,"params":["@1TokensSend"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5098,\n "state": 1,\n "tableid": "98",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Amount",\n "type": "money",\n "optional": false\n },\n {\n "name": "Recipient",\n "type": "string",\n "optional": true\n },\n {\n "name": "iName",\n "type": "string",\n "optional": true\n },\n {\n "name": "Comment",\n "type": "string",\n "optional": true\n },\n {\n "name": "Ecosystem",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1TokensSend"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-sendtx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-sendtx"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.sendTx")])]),e._v(" "),a("p",[e._v("Receives the transactions in the parameters and adds them to the transaction queue, returning a transaction hash if the request is executed successfully. This hash yields the corresponding transaction within the block and is included in the error text message in case of an error response.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" - Transaction data object\n"),a("ul",[a("li",[a("strong",[e._v("tx_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the content of the transaction, this parameter can specify any name and supports receiving multiple transactions.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-34"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - transaction hash arrays:\n"),a("ul",[a("li",[a("strong",[e._v("tx1")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction 1.")]),e._v(" "),a("li",[a("strong",[e._v("txN")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hash of transaction N.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.sendTx","id":1,"params":[{"tx1":...,"txN":...}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hashes":[\n {"hash1":"hash1"},\n {"hashN":"hashN"}\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txstatus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txstatus"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txStatus")])]),e._v(" "),a("p",[e._v("Gets the block ID and error message of the specified transaction hash. If the return value of the block ID and error text message is null, then the transaction is not yet contained in the block.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash, split using "),a("code",[e._v(",")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"return-value-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-35"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - returns the block ID if the transaction was executed successfully;")]),e._v(" "),a("p",[e._v("If the transaction execution fails, "),a("em",[e._v("blockid")]),e._v(" will be "),a("code",[e._v("0")]),e._v(", and the corresponding block ID will be returned if the transaction execution error is penalized.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("result")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Returns the result of the transaction via the "),a("strong",[e._v("$result")]),e._v(" variable.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("errmsg")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Returns an error text message if the execution of the transaction failed.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("type")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Error type")]),e._v(" "),a("li",[a("strong",[e._v("error")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - error message")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("penalty")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - if the transaction execution fails, (0: no penalty 1: penalty)")])])])])]),e._v(" "),a("h4",{attrs:{id:"example-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.txStatus","id":1,"params":["cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9,4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": "793",\n "result": "",\n "penalty": 0\n },\n "cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9": {\n "blockid": "793",\n "errmsg": {\n "type": "warning",\n "error": "platform ecosystem can not be burning Tokens"\n },\n "result": "",\n "penalty": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfo")])]),e._v(" "),a("p",[e._v("Returns information about the transaction for the specified hash, including the block ID and the number of confirmations. If optional parameters are specified, the contract name and its associated parameters can also be returned.")]),e._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-36"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction.\nIf the value is "),a("code",[e._v("0")]),e._v(", no transactions are found for this hash.\nIf the transaction occurred on the current node, it can be obtained via "),a("a",{attrs:{href:"#ibax-txstatus"}},[e._v("ibax.txStatus")])])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of node confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - Returns contract details if "),a("code",[e._v("contentinfo=true")]),e._v(" is specified. null if not specified")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])]),e._v(" "),a("h4",{attrs:{id:"example-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.txInfo","id":1,"params":["020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "blockid": "796",\n "confirm": 0,\n "data": {\n "block_id": 796,\n "block_hash": "bccbc3cf47b49bee5fb7321810884db49b73f5114b0a6fcd234dd3fdf9c22ef4",\n "address": "0666-7782-2939-7671-3160",\n "ecosystem": 2,\n "hash": "020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "1000000000000",\n "Recipient": "0666-7782-2939-7671-3160"\n },\n "created_at": 1678774455841,\n "size": "213.00B",\n "status": 1\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-txinfomultiple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfomultiple"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.txInfoMultiple")])]),e._v(" "),a("p",[e._v("Returns transaction-related information for the specified hash list.")]),e._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hashes")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - A list of transaction hashes.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("contractinfo")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" - Contract detail parameter identifier, get contract details related to this transaction, default is "),a("code",[e._v("false")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-37"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("results")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Data dictionary with transaction hash as key and transaction details as value.\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The transaction hash.\n"),a("ul",[a("li",[a("strong",[e._v("blockid")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The block ID containing the transaction. if the value is "),a("code",[e._v("0")]),e._v(", then no transaction was found for that hash.")]),e._v(" "),a("li",[a("strong",[e._v("confirm")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the number of confirmations for this block "),a("em",[e._v("blockid")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("data")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - If "),a("code",[e._v("contentinfo=true")]),e._v("is specified, the contract details are returned to this parameter. null when not specified\n"),a("ul",[a("li",[a("strong",[e._v("block_id")]),e._v("- "),a("em",[e._v("Number")]),e._v(" - Block height")]),e._v(" "),a("li",[a("strong",[e._v("block_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - block_hash")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction creation address")]),e._v(" "),a("li",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction sending ecid")]),e._v(" "),a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction hash")]),e._v(" "),a("li",[a("strong",[e._v("expedite")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - expedited fee, or "" if not available')]),e._v(" "),a("li",[a("strong",[e._v("contract_name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Contract name")]),e._v(" "),a("li",[a("strong",[e._v("params")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - contract parameters, contract fields can be queried via "),a("a",{attrs:{href:"#ibax-getcontractinfo"}},[e._v("ibax.getContractInfo")])]),e._v(" "),a("li",[a("strong",[e._v("created_at")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - when the transaction was created")]),e._v(" "),a("li",[a("strong",[e._v("size")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - transaction size unit: B;KiB;MiB;GiB;TiB")]),e._v(" "),a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - status (0:success 1:penalty)")])])])])])])])]),e._v(" "),a("h4",{attrs:{id:"example-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":[["1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284","4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"],true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "results": {\n "1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284": {\n "blockid": 0,\n "confirm": 0,\n "data": null\n },\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": 793,\n "confirm": 0,\n "data": {\n "block_id": 793,\n "block_hash": "ef3b2f2e18662e0b8bba136a209e30c5aae76d9a82e0b21209786f62fe5676e4",\n "address": "0666-0819-7161-7879-5186",\n "ecosystem": 1,\n "hash": "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "200",\n "Comment": "Hello Dear",\n "Recipient": "1196-2490-5275-7101-3496"\n },\n "created_at": 1678765099072,\n "size": "297.00B",\n "status": 0\n }\n }\n }\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagevalidatorscount"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagevalidatorscount"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageValidatorsCount")])]),e._v(" "),a("p",[e._v("Returns the number of nodes to be validated for the specified page.")]),e._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page name in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. @1params_list (specifying ecology 1 page name params_list) or params_list (current ecology page name params_list)")])]),e._v(" "),a("h4",{attrs:{id:"return-value-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-38"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("validate_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Specifies the number of nodes to be validated by the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "validate_count": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpage"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPage")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified page name, which is the result of processing by the templating engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the name of the page with the ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%page_name%")]),e._v(", for example\n"),a("code",[e._v("@1main_page")]),e._v(".")]),e._v(" "),a("p",[e._v("If you don't have an ecosystem ID, the default is to find the current ecological page, e.g. "),a("code",[e._v("main_page")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-39"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("menu")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the menu to which the page belongs.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("menutree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree of the page's menus.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - page JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPage","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "menu": "developer_menu",\n "menutree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ],\n "tree": [\n {\n ....\n }\n ...\n ],\n "nodesCount": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getmenu"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenu"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getMenu")])]),e._v(" "),a("p",[e._v("Gets the tree of code JSON objects for the specified menu name, which is the result of processing by the template engine.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\n"),a("blockquote",[a("p",[e._v("Menu name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%menu_name%")]),e._v(", e.g.\n"),a("code",[e._v("@1main_menu")]),e._v(".\nIf you don't bring the ecosystem ID, the menu of the current ecology will be found by default, for example\n"),a("code",[e._v("main_menu")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-40"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("title")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - the menu title.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - Menu JSON object tree.")])])]),e._v(" "),a("h4",{attrs:{id:"example-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenu","id":1,"params":["@1default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "title": "default",\n "tree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getsource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsource"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getSource")])]),e._v(" "),a("p",[e._v("Returns a tree of coded JSON objects for the specified page name. Does not execute any functions or receive any data. The returned JSON object tree corresponds to the page template and can be used in the visual page designer. If the page is not found, a 404 error is returned.")]),e._v(" "),a("p",[a("a",{attrs:{href:"#authorization"}},[e._v("Authorization")])]),e._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" -\nPage name with ecosystem ID in the format "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", for example "),a("code",[e._v("@1main_page")]),e._v(".\nIf you don't have an ecosystem ID, the default is to find the current ecological page e.g. "),a("code",[e._v("main_page")])])]),e._v(" "),a("h4",{attrs:{id:"return-value-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-41"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Array")]),e._v(" - JSON object tree for the page.")])]),e._v(" "),a("h4",{attrs:{id:"example-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSource","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": [\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1applications"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"name\\": \\"System\\"}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "setvar",\n "attr": {\n "name": "role_developer_id",\n "value": "AppParam(Ecosystem: #ecosystem_id#, App: #application_id#, Name: role_developer)"\n }\n },\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1roles_participants"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"$and\\": [{\\"role->id\\": {\\"$in\\": [#role_developer_id#]}}, {\\"role->id\\": \\"#role_id#\\"}], \\"member->account\\": \\"#account_id#\\", \\"deleted\\": 0}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "if",\n "attr": {\n "condition": "#developer_access_id#>0"\n },\n "children": [\n {\n "tag": "setvar",\n "attr": {\n "name": "this_page",\n "value": "@1params_list"\n }\n }\n\t\t\t\t\t\t...\n ],\n "tail": [\n {\n "tag": "else",\n "children": [\n {\n "tag": "settitle",\n "attr": {\n "title": "$@1ecosystem_parameters$"\n }\n }\n\t\t\t\t\t\t\t\t...\n ]\n }\n ]\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getpagehash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagehash"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getPageHash")])]),e._v(" "),a("p",[e._v("Returns a SHA256 hash of the specified page name, or a 404 error if the page is not found.")]),e._v(" "),a("p",[e._v("To receive the correct hash when making requests to other nodes, you must also pass the\n"),a("em",[e._v("ecosystem,key_id,role_id")]),e._v("\nparameter. To receive pages from other ecosystems, the ecosystem ID must be prefixed to the page name. For example: "),a("code",[e._v("@2mypage")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("name")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The name of the page with the ecosystem ID. The format is "),a("code",[e._v("@ecosystem_id%%%page_name%")]),e._v(", e.g. "),a("code",[e._v("@1main_page")]),e._v(", you can specify the eco ID")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("ecosystem")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Ecosystem ID.")])]),e._v(" "),a("li",[a("p",[a("em",[e._v("Object")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" Get the specified page object")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The account address.")]),e._v(" "),a("li",[a("strong",[e._v("role_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The role ID.")])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-42"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" -\n"),a("ul",[a("li",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Hexadecimal hash.")])])])]),e._v(" "),a("h4",{attrs:{id:"example-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-42"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageHash","id":1,"params":["@1params_list",0,{"role_id":"1","key_id":"-6484253546138538120"}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "fc5ed3b5e879dd5521dfb792e815019bd8411851e850e75a3590d71e950a0465"\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getcontent"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontent"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getContent")])]),e._v(" "),a("p",[e._v("Returns the number of JSON objects for the page code from the "),a("strong",[e._v("template")]),e._v(" parameter, if the optional parameter\n"),a("strong",[e._v("source")]),e._v(" Specified as "),a("code",[e._v("true")]),e._v(", this JSON object tree does not perform any functions and receive data. This JSON object tree can be used in the visual page designer.")]),e._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Object")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("template")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - page code.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("source")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - If specified as "),a("code",[e._v("true")]),e._v(", the JSON object tree does not perform any functions and receives data.")])])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-43"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("tree")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - JSON object tree.")])]),e._v(" "),a("h4",{attrs:{id:"example-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-43"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getContent","id":1,"params":[{"template","..."source":true}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": {\n "type":"......", \n "children": [\n {...},\n {...}\n ]\n }\n }\n }\n \n')])])]),a("h3",{attrs:{id:"ibax-getblockinfo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockinfo"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getBlockInfo")])]),e._v(" "),a("p",[e._v("Returns information about the specified block ID.")]),e._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the height of the block.")])]),e._v(" "),a("h4",{attrs:{id:"return-value-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-44"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block hash value.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("key_id")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the address of the account that signed the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("time")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" block generation timestamp.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("tx_count")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - the total number of transactions within the block.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("rollbacks_hash")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The block rollback hash.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - The position of the block in the honor node list.")])]),e._v(" "),a("li",[a("p",[a("strong",[e._v("consensus_mode")]),e._v(" "),a("em",[e._v("Number")]),e._v(" - Consensus mode, parameters (1: creator management mode 2: DAO governance mode)")])])]),e._v(" "),a("h4",{attrs:{id:"example-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-44"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlockInfo","id":1,"params":[12]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "Hl+/VvYFFu4iq4zLrRDGHBhm7DM7llEAfEJyaX2Q3is=",\n "key_id": 6667782293976713160,\n "time": 1677134955,\n "tx_count": 1,\n "rollbacks_hash": "o37QAighKMb8WqbEHAqCQb5bOfMvOqV0WoTaN631q74=",\n "node_position": 0,\n "consensus_mode": 1\n }\n }\n')])])]),a("h3",{attrs:{id:"ibax-getconfig"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getconfig"}},[e._v("#")]),e._v(" "),a("strong",[e._v("ibax.getConfig")])]),e._v(" "),a("p",[e._v("Get the host address and port of centrifugo")]),e._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("p",[a("strong",[e._v("option")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Configuration item")]),e._v(" "),a("ol",[a("li",[e._v('"centrifugo" - messaging service')])])])]),e._v(" "),a("h4",{attrs:{id:"return-value-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-45"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("centrifugo")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - "),a("a",{attrs:{href:"#omitempty"}},[e._v("Omitempty")]),e._v(" host address and port of centrifugo Result format "),a("code",[e._v("http://address:port")]),e._v(", e.g.: "),a("code",[e._v("http://127.0.0.1:8100")]),e._v(".")])]),e._v(" "),a("h4",{attrs:{id:"example-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-45"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getConfig","id":1,"params":["centrifugo"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "centrifugo":"http://127.0.0.1:8100"\n }\n }\n')])])]),a("h3",{attrs:{id:"net-getnetwork"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-getnetwork"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.getNetwork")])]),e._v(" "),a("p",[e._v("Get node information")]),e._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-46"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("network_id")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - The network identifier.")]),e._v(" "),a("li",[a("strong",[e._v("centrifugo_url")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - centrifugo message service address")]),e._v(" "),a("li",[a("strong",[e._v("test")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether it is a test chain")]),e._v(" "),a("li",[a("strong",[e._v("private")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - whether the chain is private")]),e._v(" "),a("li",[a("strong",[e._v("honor_nodes")]),e._v(" - "),a("em",[e._v("Object")]),e._v(" - List of honor nodes\n"),a("ul",[a("li",[a("strong",[e._v("tcp_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - tcp address")]),e._v(" "),a("li",[a("strong",[e._v("api_address")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - api address")]),e._v(" "),a("li",[a("strong",[e._v("public_key")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - node public key")]),e._v(" "),a("li",[a("strong",[e._v("unban_time")]),e._v(" - "),a("em",[e._v("String")]),e._v(" - Unlock time")])])])]),e._v(" "),a("h4",{attrs:{id:"example-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-46"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.getNetwork","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "network_id": "1",\n "centrifugo_url": "127.0.0.1",\n "test": false,\n "private": false,\n "honor_nodes": [\n {\n "tcp_address": "127.0.0.1:7078",\n "api_address": "http://127.0.0.1:7078",\n "public_key": "049a41b24862f8db61ee66fb206094baa57bfeac7ea786d63662a964d144eb85d1a0e230928d56f46dd61eefac7640b6aa2883b2445c7b2adc0e581f983ff0aedb",\n "unban_time": "-62135596800"\n }\n ]\n }\n }\n')])])]),a("h3",{attrs:{id:"net-status"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#net-status"}},[e._v("#")]),e._v(" "),a("strong",[e._v("net.status")])]),e._v(" "),a("p",[e._v("Get the current node status")]),e._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-47"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - Node Status\n"node server status is running" - the node is running\n"node server is updating" - node is being updated\n"node server is stopped" - node suspended')])]),e._v(" "),a("h4",{attrs:{id:"example-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-47"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.status","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "node server status is running"\n }\n')])])]),a("h3",{attrs:{id:"rpc-modules"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rpc-modules"}},[e._v("#")]),e._v(" "),a("strong",[e._v("rpc.modules")])]),e._v(" "),a("p",[e._v("Get the currently registered JSON-RPC interface")]),e._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-48"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("Array")]),e._v(" - JSON-RPC interface array")])]),e._v(" "),a("h4",{attrs:{id:"example-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-48"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"rpc.modules","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n "net.getNetwork",\n "ibax.getAppContent",\n "ibax.honorNodesCount",\n "ibax.maxBlockId",\n "ibax.detailedBlock",\n "ibax.getConfig",\n "ibax.getTableCount",\n "ibax.getMenu"\n ]\n }\n')])])]),a("h3",{attrs:{id:"admin-startjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-startjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.startJsonRpc")])]),e._v(" "),a("p",[e._v("Can be used to switch between JSON-RPC change namespace services")]),e._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[a("strong",[e._v("methods")]),e._v(" - "),a("em",[e._v("String")]),e._v(' - JSON-RPC module, default: "ibax,net"')]),e._v(" "),a("h4",{attrs:{id:"return-value-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-49"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-49"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.startJsonRpc","id":1,"params":["ibax,net,admin"]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"admin-stopjsonrpc"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#admin-stopjsonrpc"}},[e._v("#")]),e._v(" "),a("strong",[e._v("admin.stopJsonRpc")])]),e._v(" "),a("p",[e._v("Close the JSON-RPC service")]),e._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-50"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("em",[e._v("bool")]),e._v(" - execution status")])]),e._v(" "),a("h4",{attrs:{id:"example-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-50"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.stopJsonRpc","id":1,"params":[]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),a("h3",{attrs:{id:"debug-getnodebanstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getnodebanstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getNodeBanStat")])]),e._v(" "),a("p",[e._v("Get node disable status")]),e._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-51"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("p",[a("strong",[e._v("node_position")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - node subscript\n"),a("strong",[e._v("status")]),e._v(" - "),a("em",[e._v("Bool")]),e._v(" - Disable status, "),a("code",[e._v("true")]),e._v(" ban status, "),a("code",[e._v("false")]),e._v(" not disabled")]),e._v(" "),a("h4",{attrs:{id:"example-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-51"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getNodeBanStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n {\n "node_position": 0,\n "status": true\n }\n ]\n }\n')])])]),a("h3",{attrs:{id:"debug-getmemstat"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debug-getmemstat"}},[e._v("#")]),e._v(" "),a("strong",[e._v("debug.getMemStat")])]),e._v(" "),a("p",[e._v("Get the current node memory usage")]),e._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("p",[e._v("None")]),e._v(" "),a("h4",{attrs:{id:"return-value-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-value-52"}},[e._v("#")]),e._v(" Return Value")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("alloc")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes requested and still in use")]),e._v(" "),a("li",[a("strong",[e._v("sys")]),e._v(" - "),a("em",[e._v("Number")]),e._v(" - Number of bytes fetched from the system")])]),e._v(" "),a("h4",{attrs:{id:"example-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-52"}},[e._v("#")]),e._v(" Example")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getMemStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "alloc": 11537432,\n "sys": 35329248\n }\n }\n')])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/8.596f1de1.js b/assets/js/8.500d8954.js similarity index 99% rename from assets/js/8.596f1de1.js rename to assets/js/8.500d8954.js index c9ec3a3..139e9d3 100644 --- a/assets/js/8.596f1de1.js +++ b/assets/js/8.500d8954.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{390:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ibax-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-overview"}},[e._v("#")]),e._v(" IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-overview"}},[e._v("IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#features"}},[e._v("Features")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#architecture"}},[e._v("Architecture")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#network"}},[e._v("Network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[e._v("Honor Node")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#transactions"}},[e._v("Transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#network-protocol"}},[e._v("Network protocol")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-and-transaction-verification"}},[e._v("Block and transaction verification")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#database"}},[e._v("Database")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[e._v("ECOLIB")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ide"}},[e._v("IDE")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#applications"}},[e._v("Applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables"}},[e._v("Tables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-parameters"}},[e._v("Ecosystem Parameters")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#access-rights-control-mechanism"}},[e._v("Access rights control mechanism")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#access-rights-management"}},[e._v("Access rights management")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exclusive-rights"}},[e._v("Exclusive rights")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecosystem"}},[e._v("Virtual private ecosystem")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#requests-to-web-resources"}},[e._v("Requests to web resources")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rights-to-read-data"}},[e._v("Rights to read data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-creation"}},[e._v("CLB creation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-usage"}},[e._v("CLB usage")])])])])])])]),e._v(" "),a("h2",{attrs:{id:"features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[e._v("#")]),e._v(" Features")]),e._v(" "),a("p",[e._v("The IBAX Network (IBAX) has an integrated application development environment (IDE). It is a multi-level access control system for data, user pages and smart contracts.")]),e._v(" "),a("p",[e._v("In terms of its structure and functions, IBAX is quite different from most existing blockchain platforms:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The development and use of IBAX applications are in an autonomous software environment called "),a("strong",[e._v("ecosystem")]),e._v(". Each ecosystem has its own membership rules that are initially established by the creator;")])]),e._v(" "),a("li",[a("p",[e._v("Ecosystem activities, such as the data involved in "),a("font",{attrs:{color:"Red"}},[e._v("database table")]),e._v(" records or updates, are based on "),a("strong",[e._v("registers")]),e._v(" created with "),a("strong",[e._v("smart contracts")]),e._v(". In most other blockchain platforms, activities are based on transaction exchange between accounts;")],1)]),e._v(" "),a("li",[a("p",[e._v("The access to "),a("strong",[e._v("registers")]),e._v(" and the control of relationships between ecosystem members are managed by a set of rules called "),a("strong",[e._v("smart laws")]),e._v(".")])])]),e._v(" "),a("h2",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("h3",{attrs:{id:"network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network"}},[e._v("#")]),e._v(" Network")]),e._v(" "),a("p",[e._v("IBAX is built on a peer-to-peer (P2P) network.")]),e._v(" "),a("p",[e._v("Guardian nodes in the network store the latest version of the blockchain database, which records the latest status of IBAX's blockchain.")]),e._v(" "),a("p",[e._v("Network users can receive data by sending requests from the guardian node database via "),a("strong",[e._v("Weaver")]),e._v(" or REST API commands. After signing by users, new requests are sent to the network as transactions in binary format. Essentially, these transactions are commands to modify relevant database records. Transactions are aggregated in blocks, and such blocks are sent to the blockchains of all network nodes. Each guardian node will process the transactions in the block, thereby updating the corresponding data in the database.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor Node")]),e._v(" "),a("p",[e._v("A guardian node which is privileged to generate new blocks in the network is called a honor node. The maximum number of honor nodes is defined by "),a("RouterLink",{attrs:{to:"/reference/platform-parameters.html#number-of-nodes"}},[e._v("number_of_nodes")]),e._v(" in the platform parameters table, showing that the number of honor nodes is limited.")],1),e._v(" "),a("p",[e._v("An Honor Node is one of the key components of IBAX Public Network. It executes and validates transactions, collects transaction information from other nodes, adds transactions to the queue, and verifies the correctness and validity of new blocks using the confirmation mechanism. Generally, it has two states: packaging and non-packaging.")]),e._v(" "),a("p",[e._v("An Honor Node in the packaging state delivers the highest performance. It obtains transaction requests to be executed from the transaction queue and verifies the ignature validity and correctness of transactions, e.g. transfer amount, permission for transaction operations, and accurate execution of transactions. All ransactional operations, correct or wrong (wrong transactions will be rolled back), will be written into the block. Wrong transactions will incur a punitive gas fee. Executed transactions are notified to other Honor Nodes along with the block through broadcasting.")]),e._v(" "),a("p",[e._v("An Honor Node in the non-packaging state is mainly responsible for block verification to ensure in-block transactions generated by a packaging node are executed orrectly. In case of an anomaly, it will trigger the exception handling mechanism and IBAX Network will roll back and re-verify the block.")]),e._v(" "),a("p",[e._v("In order to ensure transaction execution efficiency, Honor Nodes collect transaction information constantly.")]),e._v(" "),a("h3",{attrs:{id:"transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transactions"}},[e._v("#")]),e._v(" Transactions")]),e._v(" "),a("p",[e._v("Transactions, including data used to implement "),a("strong",[e._v("smart contracts")]),e._v(", are generated by Weaver.")]),e._v(" "),a("p",[e._v("Transactions are signed by users with a private key. The private key and Weaver's signature function can be stored in browsers, software clients, SIM cards or dedicated physical devices. In the current implementation, the private key is encrypted with the ECDSA algorithm and stored at the Weaver side. All transactions are signed with the ECDSA algorithm.")]),e._v(" "),a("p",[e._v("The structure of a transaction complies with the following format:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("ID - ID of the contract implemented;")])]),e._v(" "),a("li",[a("p",[e._v("Params - parameters sent to the contract;")])]),e._v(" "),a("li",[a("p",[e._v("KeyID - ID of the user sending the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("PublicKey - public key of the honor node;")])]),e._v(" "),a("li",[a("p",[e._v("Time - timestamp generated by the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("EcosystemID - ID of the ecosystem where the transaction is made;")])]),e._v(" "),a("li",[a("p",[e._v("ТokenEcosystem - ID of the ecosystem, 1 by default, and tokens within it are used to cover the transaction costs.")])])]),e._v(" "),a("h3",{attrs:{id:"network-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network-protocol"}},[e._v("#")]),e._v(" Network protocol")]),e._v(" "),a("p",[e._v("Transactions will be sent to honor nodes by users, where they are subject to basic verification to ensure the formats are correct and then are added to the queue. Transactions are also sent to other honor nodes on the network and added to the respective queue.")]),e._v(" "),a("p",[e._v("A honor node is privileged to generate new blocks within a specific time period which is determined by the platform parameter "),a("strong",[e._v("full_nodes")]),e._v(" and a special algorithm. Honor nodes retrieve transactions from queues and send them to the block generator. When generating a new block, transactions in such block will also be processed: each transaction is sent to a virtual machine, where the contract corresponding to the transaction parameters is implemented, thereby updating records in the database.")]),e._v(" "),a("p",[e._v("New blocks should be verified to ensure there are no errors before sending to other honor nodes on other networks.")]),e._v(" "),a("p",[e._v("A new block will be added to the block queue when received by other honor node and, after verification, to the blockchain of the honor node where it is located to process transactions in the block, and thereby updating records in the database.")]),e._v(" "),a("h3",{attrs:{id:"block-and-transaction-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-and-transaction-verification"}},[e._v("#")]),e._v(" Block and transaction verification")]),e._v(" "),a("p",[e._v("After generating or receiving a new block, it will be verified on all other honor nodes, which cover the following:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The first byte of the data received should be 0. If not, the data received will not be considered as a block;")])]),e._v(" "),a("li",[a("p",[e._v("The received block generation timestamp should be before the current timestamp;")])]),e._v(" "),a("li",[a("p",[e._v("The block generation timestamp should correspond to the time interval at which the honor node having privilege to generate new blocks;")])]),e._v(" "),a("li",[a("p",[e._v("The height of a new block should be greater than the height of the largest block on the existing blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the maximum expenses allowed for all transactions in the block;")])]),e._v(" "),a("li",[a("p",[e._v("The block must be properly signed with the secret key of the node which it is located. The signature data should contain:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The height of the block, the hash of the previous block, the timestamp of the block, the ID of the ecosystem where the block is located, and the account address of the honor node of the block;")])]),e._v(" "),a("li",[a("p",[e._v("The position of the honor node in the platform parameter full_nodes array, the Merkel Root (MrklRoot) of all transactions in the block, and the revert hash of the previous block.")])])])])]),e._v(" "),a("p",[e._v("To check the correctness of each transaction in the block with the following methods:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The hash of each transaction must be unique;")])]),e._v(" "),a("li",[a("p",[e._v("A key-signed transaction cannot exceed the limit ("),a("RouterLink",{attrs:{to:"/reference/platform-parameters.html#max-tx-block-per-user"}},[e._v("max_tx_block_per_user")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the limit of the maximum transaction size ("),a("RouterLink",{attrs:{to:"/reference/platform-parameters.html#max-tx-size"}},[e._v("max_tx_size")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("The transaction time can neither be greater than the block generation time nor be greater than the block generation time plus 600 seconds, and it can be no less than the block generation time minus 86400 seconds;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction must be signed properly;")])]),e._v(" "),a("li",[a("p",[e._v("The user who implements the contract must have sufficient tokens in his account to pay for the transaction cost.")])])]),e._v(" "),a("h3",{attrs:{id:"database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database"}},[e._v("#")]),e._v(" Database")]),e._v(" "),a("p",[e._v("The underlying data storage layer of IBAX Network is a "),a("code",[e._v("PGSQL")]),e._v(" database completely open to the public. Based on the permission design of the IBAX Operating System Platform, users do not need to worry about data security. With an object-oriented design philosophy, IBAX Network pre-compiles data through a relational PGSQL database and improves the data processing efficiency.")]),e._v(" "),a("p",[e._v("You may be interested in the following if you are a technical specialist, or just skip it if you are not.\n① All tables without a number prefix in their name belong to permission tables of IBAX Network Basic;\n② All tables with a number prefix in their name belong to permission tables of ecoLibs.")]),e._v(" "),a("h2",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[e._v("#")]),e._v(" ECOLIB")]),e._v(" "),a("p",[e._v("It is quite easy for users, even common users, to create an ecoLib of their own on the IBAX Network System Platform. We have integrated and developed an application where ecoLib creation takes just one click.")]),e._v(" "),a("p",[e._v("When creating an ecoLib, you can configure the ecosystem parameters and rules, and set the administrator account and charging model. Most importantly, to apply the DPoA consensus within ecoLibs better, creators can set it up by writing or importing their own contracts.")]),e._v(" "),a("p",[e._v("We support quick emission of ecoLib tokens by importing contract templates.")]),e._v(" "),a("p",[e._v("Due to the differences in consensus and management permissions, ecoLibs fall into decentralized and centralized ones. They have no specific advantage or disadvantage by type. You should choose the appropriate one against your service needs. What to do if it is OK for now but not for the future? You can change ecoLib parameters, even the consensus mechanism, token, and governance method, on the IBAX Network System Platform. You can leave it all to the self-governance mechanism maintained by the ecoLib administrator or members (depending on the ecoLib type).")]),e._v(" "),a("p",[e._v("On the IBAX Network System Platform, an ecoLib has complete data control permissions and permissions to design and access independent database tables and fields. In the data control permission design, we support triggering when a field satisfies a logical expression. This feature allows for imagination space in special services like monitoring, logic satisfaction, and triggering by time and specific conditions.")]),e._v(" "),a("p",[e._v("There may be multiple DApps in an ecoLib, and each of them can have independent parameters. An ecoLib is like a platform where you can implement anything you want.")]),e._v(" "),a("p",[e._v("In order to better support ecosystem developers, we provide the editing, management, and development tool Weaver. It will reduce the ecosystem development, maintenance, and management costs greatly.")]),e._v(" "),a("h3",{attrs:{id:"ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[e._v("#")]),e._v(" IDE")]),e._v(" "),a("p",[e._v("Weaver has a complete integrated development environment (IDE) for creating blockchain applications, which does not require software developers to have a deep understanding of the blockchain technology.")]),e._v(" "),a("p",[e._v("Weaver provides a table management tool, contract editor, page editor and other functions needed to create applications in the ecosystem, without the support of any software module.")]),e._v(" "),a("p",[e._v("The IDE mainly includes the following parts:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("list of ecosystem parameters;")])]),e._v(" "),a("li",[a("p",[e._v("contract editor;")])]),e._v(" "),a("li",[a("p",[e._v("table management tool;")])]),e._v(" "),a("li",[a("p",[e._v("page editor and visual page designer;")])]),e._v(" "),a("li",[a("p",[e._v("multi-language resources editor;")])]),e._v(" "),a("li",[a("p",[e._v("application import/export functions.")])])]),e._v(" "),a("h3",{attrs:{id:"applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#applications"}},[e._v("#")]),e._v(" Applications")]),e._v(" "),a("p",[e._v("An application is a collection of elements such as database tables, smart contracts, and user pages with access rights for configuration. The ecosystem to which the application element belongs is indicated by the prefix in the element name, such as "),a("code",[e._v("@1ElementName")]),e._v(", where the ecosystem ID is indicated by the number "),a("code",[e._v("1")]),e._v(" after the "),a("code",[e._v("@")]),e._v(" symbol. When using application elements in the current ecosystem, the prefix "),a("code",[e._v("@1")]),e._v(" can be omitted. These applications can perform useful functions or implement various services.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("In IBAX's database, each ecosystem can create an unlimited number of tables. Tables of a specific ecosystem can be identified by a prefix containing the ecosystem ID, which will not be displayed in Weaver.")]),e._v(" "),a("p",[e._v("A table is not bound in any way and belongs to a certain contract. It can be used by all applications within the scope of the table's access rights.")]),e._v(" "),a("p",[e._v("Each ecosystem can create a set of data tables for developing its applications or may, possibly, access data tables of other ecosystems by specifying the table name prefix.")]),e._v(" "),a("p",[e._v("By configuring access rights through smart laws, data are logged into tables. Smart laws are used for rights management.")]),e._v(" "),a("blockquote",[a("p",[e._v("Table management tool")])]),e._v(" "),a("p",[e._v("You can find the table management tool in Weaver menu Table, which cover the following functions:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("View the list of tables and their entries;")])]),e._v(" "),a("li",[a("p",[e._v("Create new tables;")])]),e._v(" "),a("li",[a("p",[e._v("Add a table field and specify its data type, such as")]),e._v(" "),a("ul",[a("li",[e._v("Text correspond postgresql "),a("code",[e._v("text")])]),e._v(" "),a("li",[e._v("Date/Time correspond postgresql "),a("code",[e._v("timestamp")])]),e._v(" "),a("li",[e._v("Varchar correspond postgresql "),a("code",[e._v("varchar(102400)")])]),e._v(" "),a("li",[e._v("Character correspond postgresql "),a("code",[e._v("character(1) NOT NULL DEFAULT '0'")])]),e._v(" "),a("li",[e._v("JSON correspond postgresql "),a("code",[e._v("jsonb")])]),e._v(" "),a("li",[e._v("Number correspond postgresql "),a("code",[e._v("bigint NOT NULL DEFAULT '0'")])]),e._v(" "),a("li",[e._v("Money correspond postgresql "),a("code",[e._v("decimal (30, 0) NOT NULL DEFAULT '0'")])]),e._v(" "),a("li",[e._v("Double correspond postgresql "),a("code",[e._v("double precision")])]),e._v(" "),a("li",[e._v("Binary correspond postgresql "),a("code",[e._v("bytea NOT NULL DEFAULT '\\x'")])])])]),e._v(" "),a("li",[a("p",[e._v("Manage privileges for insert, update data and change table structure.")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Table data manipulation")])]),e._v(" "),a("p",[e._v("For better database manipulation, both Needle and Logicor have the "),a("strong",[e._v("DBFind")]),e._v(" function, which is used to retrieve values and data arrays from tables.")]),e._v(" "),a("p",[e._v("The contract language "),a("strong",[e._v("DBInsert")]),e._v(" function is used to add entries to tables. The "),a("strong",[e._v("DBUpdate")]),e._v(" and "),a("strong",[e._v("DBUpdateExt")]),e._v(" functions are used to update the value of an existing entry. During updating, the corresponding data in tables will be updated, and the blockchain will add new transactions while retaining all historical transactions. Data in tables can only be modified and cannot be deleted.")]),e._v(" "),a("p",[e._v("In order to minimize the contract implementation time, the "),a("strong",[e._v("DBFind")]),e._v(" function cannot query multiple tables simultaneously, and JOIN is not supported. Therefore, we recommend not to normalize application tables, but to store all available information in entries or repeat the information available in other tables. This is not mandatory but necessary for a blockchain application. In this case, data should be stored fully, which cannot be updated even if the same data in other tables is updated, though it is updated synchronously in a relational database.")]),e._v(" "),a("h3",{attrs:{id:"ecosystem-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-parameters"}},[e._v("#")]),e._v(" Ecosystem Parameters")]),e._v(" "),a("p",[e._v("You may view and edit the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") in Weaver's menu. Ecosystem parameters can be divided into the following groups:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("General parameters: the account of the ecosystem creator (founder_account) and other information;")])]),e._v(" "),a("li",[a("p",[e._v("Access rights parameters: used to define access permissions for application elements")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("change the table structure (changing_tables);")])]),e._v(" "),a("li",[a("p",[e._v("change the contract (changing_contracts);")])]),e._v(" "),a("li",[a("p",[e._v("change the user page (changing_page);")])]),e._v(" "),a("li",[a("p",[e._v("change the menu (changing_menu);")])]),e._v(" "),a("li",[a("p",[e._v("change the multi-language resources (changing_language).")])])])]),e._v(" "),a("li",[a("p",[e._v("Technical parameters: used to define the user styles (stylesheet);")])]),e._v(" "),a("li",[a("p",[e._v("User parameters: used to define constants or lists (separated by commas) required for application operation.")])])]),e._v(" "),a("p",[e._v("You may specify the edit permission for parameters of each ecosystem.")]),e._v(" "),a("p",[e._v("You may use the EcosysParam function to retrieve the value of an ecosystem parameter by passing the ecosystem parameter title as a parameter to it.")]),e._v(" "),a("h2",{attrs:{id:"access-rights-control-mechanism"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-control-mechanism"}},[e._v("#")]),e._v(" Access rights control mechanism")]),e._v(" "),a("p",[e._v("IBAX has a multi-level access permission management system. By configuring access rights, you can create and change any application element, such as the contracts, tables, user pages, ecosystem parameters. You may also change the access rights through configuration.")]),e._v(" "),a("p",[e._v("By default, all rights in the IBAX ecosystem are managed by its creator, which is defined in the MainCondition contract of each ecosystem. But after creating smart laws, access control can be transferred to all or a group of ecosystem members.\nAccess rights control")]),e._v(" "),a("p",[e._v("The access rights are defined in contract tables ("),a("strong",[e._v("1_contracts")]),e._v(" ), data tables ("),a("strong",[e._v("1_tables")]),e._v(" ), user page tables ("),a("strong",[e._v("1_pages")]),e._v(" ), menu tables ("),a("strong",[e._v("1_menu")]),e._v(" ), and code block tables ("),a("strong",[e._v("1_blocks")]),e._v(" ). You can find the corresponding menus in Weaver.")]),e._v(" "),a("h3",{attrs:{id:"access-rights-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-management"}},[e._v("#")]),e._v(" Access rights management")]),e._v(" "),a("p",[e._v("The rules of access rights are configured by filling in the corresponding contract expressions "),a("strong",[e._v("ContractConditions(“@1MainCondition”)")]),e._v(", "),a("strong",[e._v("ContractAccess(“@1MainCondition”)")]),e._v(" or logical expressions in the permission field. If the result of the request expression passes (true ), then access is granted. Otherwise, access is denied and related operations are terminated.")]),e._v(" "),a("p",[e._v("The easy way to define rights is to enter a logical expression in the right field. For example, "),a("code",[e._v("$key_id == 8919730491904441614")]),e._v(", where "),a("strong",[e._v("$keyid")]),e._v(" represents the ID of an ecosystem member.")]),e._v(" "),a("p",[e._v("The most common and recommended way to define rights is to use the "),a("code",[e._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),e._v(" function. The contract name "),a("strong",[e._v("ContractsName")]),e._v(" is passed to the function as a parameter, and the contract result must be the result of a logical expression (true or false).")]),e._v(" "),a("p",[e._v("Another way to define rights is to use the "),a("code",[e._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),e._v(" function. The contract "),a("strong",[e._v("ContractsName")]),e._v(" qualified to implement the corresponding operation can be passed to the function as a parameter. For example, if the right field of the amount column is configured as "),a("code",[e._v('ContractAccess("@1TokenTransfer")')]),e._v(", then you can only implement the contract "),a("strong",[e._v("@1TokenTransfer")]),e._v(" if you want to change the value in the amount column. The right to access the contract itself can be managed in the conditions section, which are quite complex and may contain many other contracts.")]),e._v(" "),a("h3",{attrs:{id:"exclusive-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exclusive-rights"}},[e._v("#")]),e._v(" Exclusive rights")]),e._v(" "),a("p",[e._v("In case of emergencies or situations that are critical to the operation of an ecosystem, there are many special parameters in the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") (such as "),a("em",[e._v("changing_contracts")]),e._v(", "),a("em",[e._v("changing_pages")]),e._v(" ), etc., which defines rights to access all contracts, data tables, and pages of the current ecosystem. These rights are configured by key contracts.")]),e._v(" "),a("h2",{attrs:{id:"virtual-private-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecosystem"}},[e._v("#")]),e._v(" Virtual private ecosystem")]),e._v(" "),a("p",[e._v("In IBAX, you can create a virtual private ecosystem - "),a("strong",[e._v("Cross Ledgers Base (CLB)")]),e._v(". A CLB has the full functionality of the standard ecosystem, but operates outside the blockchain. In CLB, you can use and create contracts and template languages, tables, and use Weaver to create applications. You may call contracts on the blockchain ecosystem via API.")]),e._v(" "),a("h3",{attrs:{id:"requests-to-web-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requests-to-web-resources"}},[e._v("#")]),e._v(" Requests to web resources")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The main difference between a CLB and a standard ecosystem is that you can use contract functions ([HTTPRequest](../topics/script.md#httprequest)) and ([HTTPPostJSON](../topics/script.md#httppostjson)) to request any web resource within the contract via HTTP / HTTPS requests. Parameters passed to this function include: URLs, request methods (GET or POST), request headers and request parameters.\n")])])]),a("h3",{attrs:{id:"rights-to-read-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rights-to-read-data"}},[e._v("#")]),e._v(" Rights to read data")]),e._v(" "),a("p",[e._v("Though it is readable, data in CLB is not saved within the blockchain. You can choose to grant the read permission to database tables. You can set rights to read for individual columns, or for any row using a special contract.")]),e._v(" "),a("h3",{attrs:{id:"clb-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-creation"}},[e._v("#")]),e._v(" CLB creation")]),e._v(" "),a("p",[e._v("You may create a CLB node on the network. As predefined, the CLB node administrator is privileged to use the ecosystem list with the CLB functionality, and designate a user with ecosystem creator privileges to install applications, receive new members and configure the resources access permissions.")]),e._v(" "),a("h3",{attrs:{id:"clb-usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-usage"}},[e._v("#")]),e._v(" CLB usage")]),e._v(" "),a("p",[e._v("You may use a CLB to create registration forms, send verification information to users via email or phone, and store publicly accessible data. You can write and test applications, and then import them into the blockchain ecosystem. In a CLB, you may use scheduling contract tasks, create oracle machines to receive data from web resources and send such data to the blockchain ecosystem.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{388:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"ibax-overview"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-overview"}},[e._v("#")]),e._v(" IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ibax-overview"}},[e._v("IBAX Overview")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#features"}},[e._v("Features")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#architecture"}},[e._v("Architecture")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#network"}},[e._v("Network")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[e._v("Honor Node")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#transactions"}},[e._v("Transactions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#network-protocol"}},[e._v("Network protocol")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-and-transaction-verification"}},[e._v("Block and transaction verification")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#database"}},[e._v("Database")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[e._v("ECOLIB")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#ide"}},[e._v("IDE")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#applications"}},[e._v("Applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#tables"}},[e._v("Tables")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecosystem-parameters"}},[e._v("Ecosystem Parameters")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#access-rights-control-mechanism"}},[e._v("Access rights control mechanism")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#access-rights-management"}},[e._v("Access rights management")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#exclusive-rights"}},[e._v("Exclusive rights")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecosystem"}},[e._v("Virtual private ecosystem")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#requests-to-web-resources"}},[e._v("Requests to web resources")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#rights-to-read-data"}},[e._v("Rights to read data")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-creation"}},[e._v("CLB creation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#clb-usage"}},[e._v("CLB usage")])])])])])])]),e._v(" "),a("h2",{attrs:{id:"features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#features"}},[e._v("#")]),e._v(" Features")]),e._v(" "),a("p",[e._v("The IBAX Network (IBAX) has an integrated application development environment (IDE). It is a multi-level access control system for data, user pages and smart contracts.")]),e._v(" "),a("p",[e._v("In terms of its structure and functions, IBAX is quite different from most existing blockchain platforms:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The development and use of IBAX applications are in an autonomous software environment called "),a("strong",[e._v("ecosystem")]),e._v(". Each ecosystem has its own membership rules that are initially established by the creator;")])]),e._v(" "),a("li",[a("p",[e._v("Ecosystem activities, such as the data involved in "),a("font",{attrs:{color:"Red"}},[e._v("database table")]),e._v(" records or updates, are based on "),a("strong",[e._v("registers")]),e._v(" created with "),a("strong",[e._v("smart contracts")]),e._v(". In most other blockchain platforms, activities are based on transaction exchange between accounts;")],1)]),e._v(" "),a("li",[a("p",[e._v("The access to "),a("strong",[e._v("registers")]),e._v(" and the control of relationships between ecosystem members are managed by a set of rules called "),a("strong",[e._v("smart laws")]),e._v(".")])])]),e._v(" "),a("h2",{attrs:{id:"architecture"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),a("h3",{attrs:{id:"network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network"}},[e._v("#")]),e._v(" Network")]),e._v(" "),a("p",[e._v("IBAX is built on a peer-to-peer (P2P) network.")]),e._v(" "),a("p",[e._v("Guardian nodes in the network store the latest version of the blockchain database, which records the latest status of IBAX's blockchain.")]),e._v(" "),a("p",[e._v("Network users can receive data by sending requests from the guardian node database via "),a("strong",[e._v("Weaver")]),e._v(" or REST API commands. After signing by users, new requests are sent to the network as transactions in binary format. Essentially, these transactions are commands to modify relevant database records. Transactions are aggregated in blocks, and such blocks are sent to the blockchains of all network nodes. Each guardian node will process the transactions in the block, thereby updating the corresponding data in the database.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor Node")]),e._v(" "),a("p",[e._v("A guardian node which is privileged to generate new blocks in the network is called a honor node. The maximum number of honor nodes is defined by "),a("RouterLink",{attrs:{to:"/reference/platform-parameters.html#number-of-nodes"}},[e._v("number_of_nodes")]),e._v(" in the platform parameters table, showing that the number of honor nodes is limited.")],1),e._v(" "),a("p",[e._v("An Honor Node is one of the key components of IBAX Public Network. It executes and validates transactions, collects transaction information from other nodes, adds transactions to the queue, and verifies the correctness and validity of new blocks using the confirmation mechanism. Generally, it has two states: packaging and non-packaging.")]),e._v(" "),a("p",[e._v("An Honor Node in the packaging state delivers the highest performance. It obtains transaction requests to be executed from the transaction queue and verifies the ignature validity and correctness of transactions, e.g. transfer amount, permission for transaction operations, and accurate execution of transactions. All ransactional operations, correct or wrong (wrong transactions will be rolled back), will be written into the block. Wrong transactions will incur a punitive gas fee. Executed transactions are notified to other Honor Nodes along with the block through broadcasting.")]),e._v(" "),a("p",[e._v("An Honor Node in the non-packaging state is mainly responsible for block verification to ensure in-block transactions generated by a packaging node are executed orrectly. In case of an anomaly, it will trigger the exception handling mechanism and IBAX Network will roll back and re-verify the block.")]),e._v(" "),a("p",[e._v("In order to ensure transaction execution efficiency, Honor Nodes collect transaction information constantly.")]),e._v(" "),a("h3",{attrs:{id:"transactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transactions"}},[e._v("#")]),e._v(" Transactions")]),e._v(" "),a("p",[e._v("Transactions, including data used to implement "),a("strong",[e._v("smart contracts")]),e._v(", are generated by Weaver.")]),e._v(" "),a("p",[e._v("Transactions are signed by users with a private key. The private key and Weaver's signature function can be stored in browsers, software clients, SIM cards or dedicated physical devices. In the current implementation, the private key is encrypted with the ECDSA algorithm and stored at the Weaver side. All transactions are signed with the ECDSA algorithm.")]),e._v(" "),a("p",[e._v("The structure of a transaction complies with the following format:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("ID - ID of the contract implemented;")])]),e._v(" "),a("li",[a("p",[e._v("Params - parameters sent to the contract;")])]),e._v(" "),a("li",[a("p",[e._v("KeyID - ID of the user sending the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("PublicKey - public key of the honor node;")])]),e._v(" "),a("li",[a("p",[e._v("Time - timestamp generated by the transaction;")])]),e._v(" "),a("li",[a("p",[e._v("EcosystemID - ID of the ecosystem where the transaction is made;")])]),e._v(" "),a("li",[a("p",[e._v("ТokenEcosystem - ID of the ecosystem, 1 by default, and tokens within it are used to cover the transaction costs.")])])]),e._v(" "),a("h3",{attrs:{id:"network-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#network-protocol"}},[e._v("#")]),e._v(" Network protocol")]),e._v(" "),a("p",[e._v("Transactions will be sent to honor nodes by users, where they are subject to basic verification to ensure the formats are correct and then are added to the queue. Transactions are also sent to other honor nodes on the network and added to the respective queue.")]),e._v(" "),a("p",[e._v("A honor node is privileged to generate new blocks within a specific time period which is determined by the platform parameter "),a("strong",[e._v("full_nodes")]),e._v(" and a special algorithm. Honor nodes retrieve transactions from queues and send them to the block generator. When generating a new block, transactions in such block will also be processed: each transaction is sent to a virtual machine, where the contract corresponding to the transaction parameters is implemented, thereby updating records in the database.")]),e._v(" "),a("p",[e._v("New blocks should be verified to ensure there are no errors before sending to other honor nodes on other networks.")]),e._v(" "),a("p",[e._v("A new block will be added to the block queue when received by other honor node and, after verification, to the blockchain of the honor node where it is located to process transactions in the block, and thereby updating records in the database.")]),e._v(" "),a("h3",{attrs:{id:"block-and-transaction-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-and-transaction-verification"}},[e._v("#")]),e._v(" Block and transaction verification")]),e._v(" "),a("p",[e._v("After generating or receiving a new block, it will be verified on all other honor nodes, which cover the following:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The first byte of the data received should be 0. If not, the data received will not be considered as a block;")])]),e._v(" "),a("li",[a("p",[e._v("The received block generation timestamp should be before the current timestamp;")])]),e._v(" "),a("li",[a("p",[e._v("The block generation timestamp should correspond to the time interval at which the honor node having privilege to generate new blocks;")])]),e._v(" "),a("li",[a("p",[e._v("The height of a new block should be greater than the height of the largest block on the existing blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the maximum expenses allowed for all transactions in the block;")])]),e._v(" "),a("li",[a("p",[e._v("The block must be properly signed with the secret key of the node which it is located. The signature data should contain:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The height of the block, the hash of the previous block, the timestamp of the block, the ID of the ecosystem where the block is located, and the account address of the honor node of the block;")])]),e._v(" "),a("li",[a("p",[e._v("The position of the honor node in the platform parameter full_nodes array, the Merkel Root (MrklRoot) of all transactions in the block, and the revert hash of the previous block.")])])])])]),e._v(" "),a("p",[e._v("To check the correctness of each transaction in the block with the following methods:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("The hash of each transaction must be unique;")])]),e._v(" "),a("li",[a("p",[e._v("A key-signed transaction cannot exceed the limit ("),a("RouterLink",{attrs:{to:"/reference/platform-parameters.html#max-tx-block-per-user"}},[e._v("max_tx_block_per_user")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("It cannot exceed the limit of the maximum transaction size ("),a("RouterLink",{attrs:{to:"/reference/platform-parameters.html#max-tx-size"}},[e._v("max_tx_size")]),e._v(");")],1)]),e._v(" "),a("li",[a("p",[e._v("The transaction time can neither be greater than the block generation time nor be greater than the block generation time plus 600 seconds, and it can be no less than the block generation time minus 86400 seconds;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction must be signed properly;")])]),e._v(" "),a("li",[a("p",[e._v("The user who implements the contract must have sufficient tokens in his account to pay for the transaction cost.")])])]),e._v(" "),a("h3",{attrs:{id:"database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database"}},[e._v("#")]),e._v(" Database")]),e._v(" "),a("p",[e._v("The underlying data storage layer of IBAX Network is a "),a("code",[e._v("PGSQL")]),e._v(" database completely open to the public. Based on the permission design of the IBAX Operating System Platform, users do not need to worry about data security. With an object-oriented design philosophy, IBAX Network pre-compiles data through a relational PGSQL database and improves the data processing efficiency.")]),e._v(" "),a("p",[e._v("You may be interested in the following if you are a technical specialist, or just skip it if you are not.\n① All tables without a number prefix in their name belong to permission tables of IBAX Network Basic;\n② All tables with a number prefix in their name belong to permission tables of ecoLibs.")]),e._v(" "),a("h2",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[e._v("#")]),e._v(" ECOLIB")]),e._v(" "),a("p",[e._v("It is quite easy for users, even common users, to create an ecoLib of their own on the IBAX Network System Platform. We have integrated and developed an application where ecoLib creation takes just one click.")]),e._v(" "),a("p",[e._v("When creating an ecoLib, you can configure the ecosystem parameters and rules, and set the administrator account and charging model. Most importantly, to apply the DPoA consensus within ecoLibs better, creators can set it up by writing or importing their own contracts.")]),e._v(" "),a("p",[e._v("We support quick emission of ecoLib tokens by importing contract templates.")]),e._v(" "),a("p",[e._v("Due to the differences in consensus and management permissions, ecoLibs fall into decentralized and centralized ones. They have no specific advantage or disadvantage by type. You should choose the appropriate one against your service needs. What to do if it is OK for now but not for the future? You can change ecoLib parameters, even the consensus mechanism, token, and governance method, on the IBAX Network System Platform. You can leave it all to the self-governance mechanism maintained by the ecoLib administrator or members (depending on the ecoLib type).")]),e._v(" "),a("p",[e._v("On the IBAX Network System Platform, an ecoLib has complete data control permissions and permissions to design and access independent database tables and fields. In the data control permission design, we support triggering when a field satisfies a logical expression. This feature allows for imagination space in special services like monitoring, logic satisfaction, and triggering by time and specific conditions.")]),e._v(" "),a("p",[e._v("There may be multiple DApps in an ecoLib, and each of them can have independent parameters. An ecoLib is like a platform where you can implement anything you want.")]),e._v(" "),a("p",[e._v("In order to better support ecosystem developers, we provide the editing, management, and development tool Weaver. It will reduce the ecosystem development, maintenance, and management costs greatly.")]),e._v(" "),a("h3",{attrs:{id:"ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ide"}},[e._v("#")]),e._v(" IDE")]),e._v(" "),a("p",[e._v("Weaver has a complete integrated development environment (IDE) for creating blockchain applications, which does not require software developers to have a deep understanding of the blockchain technology.")]),e._v(" "),a("p",[e._v("Weaver provides a table management tool, contract editor, page editor and other functions needed to create applications in the ecosystem, without the support of any software module.")]),e._v(" "),a("p",[e._v("The IDE mainly includes the following parts:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("list of ecosystem parameters;")])]),e._v(" "),a("li",[a("p",[e._v("contract editor;")])]),e._v(" "),a("li",[a("p",[e._v("table management tool;")])]),e._v(" "),a("li",[a("p",[e._v("page editor and visual page designer;")])]),e._v(" "),a("li",[a("p",[e._v("multi-language resources editor;")])]),e._v(" "),a("li",[a("p",[e._v("application import/export functions.")])])]),e._v(" "),a("h3",{attrs:{id:"applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#applications"}},[e._v("#")]),e._v(" Applications")]),e._v(" "),a("p",[e._v("An application is a collection of elements such as database tables, smart contracts, and user pages with access rights for configuration. The ecosystem to which the application element belongs is indicated by the prefix in the element name, such as "),a("code",[e._v("@1ElementName")]),e._v(", where the ecosystem ID is indicated by the number "),a("code",[e._v("1")]),e._v(" after the "),a("code",[e._v("@")]),e._v(" symbol. When using application elements in the current ecosystem, the prefix "),a("code",[e._v("@1")]),e._v(" can be omitted. These applications can perform useful functions or implement various services.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("In IBAX's database, each ecosystem can create an unlimited number of tables. Tables of a specific ecosystem can be identified by a prefix containing the ecosystem ID, which will not be displayed in Weaver.")]),e._v(" "),a("p",[e._v("A table is not bound in any way and belongs to a certain contract. It can be used by all applications within the scope of the table's access rights.")]),e._v(" "),a("p",[e._v("Each ecosystem can create a set of data tables for developing its applications or may, possibly, access data tables of other ecosystems by specifying the table name prefix.")]),e._v(" "),a("p",[e._v("By configuring access rights through smart laws, data are logged into tables. Smart laws are used for rights management.")]),e._v(" "),a("blockquote",[a("p",[e._v("Table management tool")])]),e._v(" "),a("p",[e._v("You can find the table management tool in Weaver menu Table, which cover the following functions:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("View the list of tables and their entries;")])]),e._v(" "),a("li",[a("p",[e._v("Create new tables;")])]),e._v(" "),a("li",[a("p",[e._v("Add a table field and specify its data type, such as")]),e._v(" "),a("ul",[a("li",[e._v("Text correspond postgresql "),a("code",[e._v("text")])]),e._v(" "),a("li",[e._v("Date/Time correspond postgresql "),a("code",[e._v("timestamp")])]),e._v(" "),a("li",[e._v("Varchar correspond postgresql "),a("code",[e._v("varchar(102400)")])]),e._v(" "),a("li",[e._v("Character correspond postgresql "),a("code",[e._v("character(1) NOT NULL DEFAULT '0'")])]),e._v(" "),a("li",[e._v("JSON correspond postgresql "),a("code",[e._v("jsonb")])]),e._v(" "),a("li",[e._v("Number correspond postgresql "),a("code",[e._v("bigint NOT NULL DEFAULT '0'")])]),e._v(" "),a("li",[e._v("Money correspond postgresql "),a("code",[e._v("decimal (30, 0) NOT NULL DEFAULT '0'")])]),e._v(" "),a("li",[e._v("Double correspond postgresql "),a("code",[e._v("double precision")])]),e._v(" "),a("li",[e._v("Binary correspond postgresql "),a("code",[e._v("bytea NOT NULL DEFAULT '\\x'")])])])]),e._v(" "),a("li",[a("p",[e._v("Manage privileges for insert, update data and change table structure.")])])]),e._v(" "),a("blockquote",[a("p",[e._v("Table data manipulation")])]),e._v(" "),a("p",[e._v("For better database manipulation, both Needle and Logicor have the "),a("strong",[e._v("DBFind")]),e._v(" function, which is used to retrieve values and data arrays from tables.")]),e._v(" "),a("p",[e._v("The contract language "),a("strong",[e._v("DBInsert")]),e._v(" function is used to add entries to tables. The "),a("strong",[e._v("DBUpdate")]),e._v(" and "),a("strong",[e._v("DBUpdateExt")]),e._v(" functions are used to update the value of an existing entry. During updating, the corresponding data in tables will be updated, and the blockchain will add new transactions while retaining all historical transactions. Data in tables can only be modified and cannot be deleted.")]),e._v(" "),a("p",[e._v("In order to minimize the contract implementation time, the "),a("strong",[e._v("DBFind")]),e._v(" function cannot query multiple tables simultaneously, and JOIN is not supported. Therefore, we recommend not to normalize application tables, but to store all available information in entries or repeat the information available in other tables. This is not mandatory but necessary for a blockchain application. In this case, data should be stored fully, which cannot be updated even if the same data in other tables is updated, though it is updated synchronously in a relational database.")]),e._v(" "),a("h3",{attrs:{id:"ecosystem-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecosystem-parameters"}},[e._v("#")]),e._v(" Ecosystem Parameters")]),e._v(" "),a("p",[e._v("You may view and edit the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") in Weaver's menu. Ecosystem parameters can be divided into the following groups:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("General parameters: the account of the ecosystem creator (founder_account) and other information;")])]),e._v(" "),a("li",[a("p",[e._v("Access rights parameters: used to define access permissions for application elements")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("change the table structure (changing_tables);")])]),e._v(" "),a("li",[a("p",[e._v("change the contract (changing_contracts);")])]),e._v(" "),a("li",[a("p",[e._v("change the user page (changing_page);")])]),e._v(" "),a("li",[a("p",[e._v("change the menu (changing_menu);")])]),e._v(" "),a("li",[a("p",[e._v("change the multi-language resources (changing_language).")])])])]),e._v(" "),a("li",[a("p",[e._v("Technical parameters: used to define the user styles (stylesheet);")])]),e._v(" "),a("li",[a("p",[e._v("User parameters: used to define constants or lists (separated by commas) required for application operation.")])])]),e._v(" "),a("p",[e._v("You may specify the edit permission for parameters of each ecosystem.")]),e._v(" "),a("p",[e._v("You may use the EcosysParam function to retrieve the value of an ecosystem parameter by passing the ecosystem parameter title as a parameter to it.")]),e._v(" "),a("h2",{attrs:{id:"access-rights-control-mechanism"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-control-mechanism"}},[e._v("#")]),e._v(" Access rights control mechanism")]),e._v(" "),a("p",[e._v("IBAX has a multi-level access permission management system. By configuring access rights, you can create and change any application element, such as the contracts, tables, user pages, ecosystem parameters. You may also change the access rights through configuration.")]),e._v(" "),a("p",[e._v("By default, all rights in the IBAX ecosystem are managed by its creator, which is defined in the MainCondition contract of each ecosystem. But after creating smart laws, access control can be transferred to all or a group of ecosystem members.\nAccess rights control")]),e._v(" "),a("p",[e._v("The access rights are defined in contract tables ("),a("strong",[e._v("1_contracts")]),e._v(" ), data tables ("),a("strong",[e._v("1_tables")]),e._v(" ), user page tables ("),a("strong",[e._v("1_pages")]),e._v(" ), menu tables ("),a("strong",[e._v("1_menu")]),e._v(" ), and code block tables ("),a("strong",[e._v("1_blocks")]),e._v(" ). You can find the corresponding menus in Weaver.")]),e._v(" "),a("h3",{attrs:{id:"access-rights-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights-management"}},[e._v("#")]),e._v(" Access rights management")]),e._v(" "),a("p",[e._v("The rules of access rights are configured by filling in the corresponding contract expressions "),a("strong",[e._v("ContractConditions(“@1MainCondition”)")]),e._v(", "),a("strong",[e._v("ContractAccess(“@1MainCondition”)")]),e._v(" or logical expressions in the permission field. If the result of the request expression passes (true ), then access is granted. Otherwise, access is denied and related operations are terminated.")]),e._v(" "),a("p",[e._v("The easy way to define rights is to enter a logical expression in the right field. For example, "),a("code",[e._v("$key_id == 8919730491904441614")]),e._v(", where "),a("strong",[e._v("$keyid")]),e._v(" represents the ID of an ecosystem member.")]),e._v(" "),a("p",[e._v("The most common and recommended way to define rights is to use the "),a("code",[e._v('ContractConditions("@1ContractsName1","@1ContractsName2")')]),e._v(" function. The contract name "),a("strong",[e._v("ContractsName")]),e._v(" is passed to the function as a parameter, and the contract result must be the result of a logical expression (true or false).")]),e._v(" "),a("p",[e._v("Another way to define rights is to use the "),a("code",[e._v('ContractAccess("@1ContractsName3","@1ContractsName4")')]),e._v(" function. The contract "),a("strong",[e._v("ContractsName")]),e._v(" qualified to implement the corresponding operation can be passed to the function as a parameter. For example, if the right field of the amount column is configured as "),a("code",[e._v('ContractAccess("@1TokenTransfer")')]),e._v(", then you can only implement the contract "),a("strong",[e._v("@1TokenTransfer")]),e._v(" if you want to change the value in the amount column. The right to access the contract itself can be managed in the conditions section, which are quite complex and may contain many other contracts.")]),e._v(" "),a("h3",{attrs:{id:"exclusive-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exclusive-rights"}},[e._v("#")]),e._v(" Exclusive rights")]),e._v(" "),a("p",[e._v("In case of emergencies or situations that are critical to the operation of an ecosystem, there are many special parameters in the list of ecosystem parameters ("),a("strong",[e._v("1_parameters")]),e._v(") (such as "),a("em",[e._v("changing_contracts")]),e._v(", "),a("em",[e._v("changing_pages")]),e._v(" ), etc., which defines rights to access all contracts, data tables, and pages of the current ecosystem. These rights are configured by key contracts.")]),e._v(" "),a("h2",{attrs:{id:"virtual-private-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecosystem"}},[e._v("#")]),e._v(" Virtual private ecosystem")]),e._v(" "),a("p",[e._v("In IBAX, you can create a virtual private ecosystem - "),a("strong",[e._v("Cross Ledgers Base (CLB)")]),e._v(". A CLB has the full functionality of the standard ecosystem, but operates outside the blockchain. In CLB, you can use and create contracts and template languages, tables, and use Weaver to create applications. You may call contracts on the blockchain ecosystem via API.")]),e._v(" "),a("h3",{attrs:{id:"requests-to-web-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#requests-to-web-resources"}},[e._v("#")]),e._v(" Requests to web resources")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",[a("code",[e._v("The main difference between a CLB and a standard ecosystem is that you can use contract functions ([HTTPRequest](../topics/script.md#httprequest)) and ([HTTPPostJSON](../topics/script.md#httppostjson)) to request any web resource within the contract via HTTP / HTTPS requests. Parameters passed to this function include: URLs, request methods (GET or POST), request headers and request parameters.\n")])])]),a("h3",{attrs:{id:"rights-to-read-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rights-to-read-data"}},[e._v("#")]),e._v(" Rights to read data")]),e._v(" "),a("p",[e._v("Though it is readable, data in CLB is not saved within the blockchain. You can choose to grant the read permission to database tables. You can set rights to read for individual columns, or for any row using a special contract.")]),e._v(" "),a("h3",{attrs:{id:"clb-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-creation"}},[e._v("#")]),e._v(" CLB creation")]),e._v(" "),a("p",[e._v("You may create a CLB node on the network. As predefined, the CLB node administrator is privileged to use the ecosystem list with the CLB functionality, and designate a user with ecosystem creator privileges to install applications, receive new members and configure the resources access permissions.")]),e._v(" "),a("h3",{attrs:{id:"clb-usage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clb-usage"}},[e._v("#")]),e._v(" CLB usage")]),e._v(" "),a("p",[e._v("You may use a CLB to create registration forms, send verification information to users via email or phone, and store publicly accessible data. You can write and test applications, and then import them into the blockchain ecosystem. In a CLB, you may use scheduling contract tasks, create oracle machines to receive data from web resources and send such data to the blockchain ecosystem.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/61.e593a701.js b/assets/js/80.d5974e7f.js similarity index 99% rename from assets/js/61.e593a701.js rename to assets/js/80.d5974e7f.js index a56f335..7fcb205 100644 --- a/assets/js/61.e593a701.js +++ b/assets/js/80.d5974e7f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{440:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" Daemon")]),e._v(" "),a("p",[e._v("In this section, we will describe how IBax nodes interact with each other from a technical perspective.")]),e._v(" "),a("h2",{attrs:{id:"about-the-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#about-the-server-daemon"}},[e._v("#")]),e._v(" About the server daemon")]),e._v(" "),a("p",[e._v("The server daemon needs to run on every network node, which executes various server functions and supports IBax's blockchain protocol. In the blockchain network, the daemon distributes blocks and transactions, generates new blocks, and verifies blocks and transactions received, and it can avoid the fork issue.")]),e._v(" "),a("h3",{attrs:{id:"honor-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node-daemon"}},[e._v("#")]),e._v(" Honor node daemon")]),e._v(" "),a("p",[e._v("A honor node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-daemon"}},[e._v("BlockGenerator daemon")])]),e._v(" "),a("p",[e._v("Generating new blocks.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("p",[e._v("Downloading new blocks from other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("p",[e._v("Confirming that blocks on the node also exist on most other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("p",[e._v("Distributing transactions and blocks to other honor nodes.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks daemon")]),e._v(" "),a("p",[e._v("Blocks in the queue, which contains blocks from other nodes.")]),e._v(" "),a("p",[e._v("Block processing logic is the same as "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx daemon")]),e._v(" "),a("p",[e._v("Verifying the transactions in queue.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler daemon")]),e._v(" "),a("p",[e._v("Running contracts as scheduled.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node-daemon"}},[e._v("#")]),e._v(" Guardian node daemon")]),e._v(" "),a("p",[e._v("A guardian node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Scheduler")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection daemon")]),e._v(" "),a("p",[e._v("This daemon downloads blocks and synchronizes the blockchain with other network nodes.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronization"}},[e._v("#")]),e._v(" Blockchain synchronization")]),e._v(" "),a("p",[e._v("This daemon synchronizes the blockchain by determining the maximum block height in the blockchain network, requesting new blocks, and solving the fork issue in the blockchain.")]),e._v(" "),a("h4",{attrs:{id:"check-for-blockchain-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-for-blockchain-updates"}},[e._v("#")]),e._v(" Check for blockchain updates")]),e._v(" "),a("p",[e._v("This daemon sends requests from the current block ID to all honor nodes.")]),e._v(" "),a("p",[e._v("If the current block ID of the node running the daemon is less than the current block ID of any honor node, the blockchain network node is considered out of date.")]),e._v(" "),a("h4",{attrs:{id:"download-new-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-new-blocks"}},[e._v("#")]),e._v(" Download new blocks")]),e._v(" "),a("p",[e._v("The node that returns the largest current block height is considered the latest node.\nThe daemon downloads all unknown blocks.")]),e._v(" "),a("h4",{attrs:{id:"solving-the-fork-issue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[e._v("#")]),e._v(" Solving the fork issue")]),e._v(" "),a("p",[e._v("If a fork is detected in the blockchain, the daemon moves the fork backward by downloading all blocks to a common parent block.\nWhen found the common parent block, a blockchain rollback is performed on the node running the daemon, and the correct block is added to the blockchain until the latest one is included.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlocksCollection daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockCollection daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" points to the largest block ID among all honor nodes.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" points to the data with the largest block ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-daemon"}},[e._v("#")]),e._v(" BlockGenerator daemon")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon generates new blocks.")]),e._v(" "),a("h3",{attrs:{id:"pre-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pre-verification"}},[e._v("#")]),e._v(" Pre-verification")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon analyzes the latest blocks in the blockchain to make new block generation plans.")]),e._v(" "),a("p",[e._v("If the following conditions are met, a new block can be generated:")]),e._v(" "),a("ul",[a("li",[e._v("The node that generated the latest block is in a node within the honor node list and runs the daemon.")]),e._v(" "),a("li",[e._v("The shortest time since the latest unverified block was generated.")])]),e._v(" "),a("h3",{attrs:{id:"block-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-generation"}},[e._v("#")]),e._v(" Block generation")]),e._v(" "),a("p",[e._v("A new block generated by the daemon contains all new transactions, which can be received from the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(" of other nodes or generated by the node running the daemon. The block generated is stored in the node database.")]),e._v(" "),a("h3",{attrs:{id:"tables-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-2"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (saves new blocks)")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon does not make any request to other daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator daemon")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends transactions and blocks to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[e._v("#")]),e._v(" Guardian node")]),e._v(" "),a("p",[e._v("When working on a guardian node, the daemon sends transactions generated by its node to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),a("p",[e._v("When working on a honor node, the daemon sends blocks generated and transaction hashes to all honor nodes.")]),e._v(" "),a("p",[e._v("Then, the honor node responds to transaction requests unknown to it. The daemon sends the complete transaction data as a response.")]),e._v(" "),a("h3",{attrs:{id:"tables-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-3"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Disseminator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("transactions")])]),e._v(" "),a("h3",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Send transactions and block hashes to the honor node.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Receive transaction data from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"confirmations-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirmations-daemon"}},[e._v("#")]),e._v(" Confirmations daemon")]),e._v(" "),a("p",[e._v("The Confirmations daemon checks whether all the blocks in its node exist on most other nodes.")]),e._v(" "),a("h3",{attrs:{id:"block-confirmation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-confirmation"}},[e._v("#")]),e._v(" Block confirmation")]),e._v(" "),a("p",[e._v("A block confirmed by multiple node in the network is considered as a confirmed block.")]),e._v(" "),a("p",[e._v("The daemon confirms all blocks one by one starting from the first that is currently not confirmed in the database.")]),e._v(" "),a("p",[e._v("Each block is confirmed in the way as follows:")]),e._v(" "),a("ul",[a("li",[e._v("Sending a request containing the ID of the block being confirmed to all honor nodes.")]),e._v(" "),a("li",[e._v("All honor nodes respond to the block hash.")]),e._v(" "),a("li",[e._v("If the hash responded matches the hash of the block on the daemon node, the confirmation counter value is increased. If not, the cancellation counter value is increased.")])]),e._v(" "),a("h3",{attrs:{id:"tables-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-4"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Confirmations daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("confirmation")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Confirmations daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Request block hashes from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-service-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-service-protocol"}},[e._v("#")]),e._v(" TCP service protocol")]),e._v(" "),a("p",[e._v("The TCP service protocol works on honor nodes and guardian nodes, which uses the binary protocol on TCP to requests from the BlocksCollection, Disseminator, and Confirmation daemons.")]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[e._v("Each request has a type defined by the first two bytes of the request.")]),e._v(" "),a("h2",{attrs:{id:"type-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-1"}},[e._v("#")]),e._v(" Type 1")]),e._v(" "),a("h4",{attrs:{id:"request-sender"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Hashes of the transaction and block.")]),e._v(" "),a("h4",{attrs:{id:"request-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("The block hash is added to the block queue.")]),e._v(" "),a("p",[e._v("Analyzes and verifies the transaction hashes, and select transactions that have not yet appeared on the node.")]),e._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No. After processing the request, a "),a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" request is issued.")]),e._v(" "),a("h2",{attrs:{id:"type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-2"}},[e._v("#")]),e._v(" Type 2")]),e._v(" "),a("h4",{attrs:{id:"request-sender-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-2"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-2"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("The transaction data, including the data size:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the transaction data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The transaction data.")]),e._v(" "),a("h4",{attrs:{id:"request-processing-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing-2"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("Verifies the transaction and add it to the transaction queue.")]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h2",{attrs:{id:"type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-4"}},[e._v("#")]),e._v(" Type 4")]),e._v(" "),a("h4",{attrs:{id:"request-sender-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-3"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-3"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block hash.")]),e._v(" "),a("p",[e._v("Returns "),a("code",[e._v("0")]),e._v(" if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-7"}},[e._v("#")]),e._v(" Type 7")]),e._v(" "),a("h4",{attrs:{id:"request-sender-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-4"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-4"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The block data, including data size.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the block data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The block data.")]),e._v(" "),a("p",[e._v("The connection is closed if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-10"}},[e._v("#")]),e._v(" Type 10")]),e._v(" "),a("h4",{attrs:{id:"request-sender-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-5"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-5"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{459:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" Daemon")]),e._v(" "),a("p",[e._v("In this section, we will describe how IBax nodes interact with each other from a technical perspective.")]),e._v(" "),a("h2",{attrs:{id:"about-the-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#about-the-server-daemon"}},[e._v("#")]),e._v(" About the server daemon")]),e._v(" "),a("p",[e._v("The server daemon needs to run on every network node, which executes various server functions and supports IBax's blockchain protocol. In the blockchain network, the daemon distributes blocks and transactions, generates new blocks, and verifies blocks and transactions received, and it can avoid the fork issue.")]),e._v(" "),a("h3",{attrs:{id:"honor-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node-daemon"}},[e._v("#")]),e._v(" Honor node daemon")]),e._v(" "),a("p",[e._v("A honor node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-daemon"}},[e._v("BlockGenerator daemon")])]),e._v(" "),a("p",[e._v("Generating new blocks.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("p",[e._v("Downloading new blocks from other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("p",[e._v("Confirming that blocks on the node also exist on most other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("p",[e._v("Distributing transactions and blocks to other honor nodes.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks daemon")]),e._v(" "),a("p",[e._v("Blocks in the queue, which contains blocks from other nodes.")]),e._v(" "),a("p",[e._v("Block processing logic is the same as "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx daemon")]),e._v(" "),a("p",[e._v("Verifying the transactions in queue.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler daemon")]),e._v(" "),a("p",[e._v("Running contracts as scheduled.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node-daemon"}},[e._v("#")]),e._v(" Guardian node daemon")]),e._v(" "),a("p",[e._v("A guardian node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Scheduler")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection daemon")]),e._v(" "),a("p",[e._v("This daemon downloads blocks and synchronizes the blockchain with other network nodes.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronization"}},[e._v("#")]),e._v(" Blockchain synchronization")]),e._v(" "),a("p",[e._v("This daemon synchronizes the blockchain by determining the maximum block height in the blockchain network, requesting new blocks, and solving the fork issue in the blockchain.")]),e._v(" "),a("h4",{attrs:{id:"check-for-blockchain-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-for-blockchain-updates"}},[e._v("#")]),e._v(" Check for blockchain updates")]),e._v(" "),a("p",[e._v("This daemon sends requests from the current block ID to all honor nodes.")]),e._v(" "),a("p",[e._v("If the current block ID of the node running the daemon is less than the current block ID of any honor node, the blockchain network node is considered out of date.")]),e._v(" "),a("h4",{attrs:{id:"download-new-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-new-blocks"}},[e._v("#")]),e._v(" Download new blocks")]),e._v(" "),a("p",[e._v("The node that returns the largest current block height is considered the latest node.\nThe daemon downloads all unknown blocks.")]),e._v(" "),a("h4",{attrs:{id:"solving-the-fork-issue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[e._v("#")]),e._v(" Solving the fork issue")]),e._v(" "),a("p",[e._v("If a fork is detected in the blockchain, the daemon moves the fork backward by downloading all blocks to a common parent block.\nWhen found the common parent block, a blockchain rollback is performed on the node running the daemon, and the correct block is added to the blockchain until the latest one is included.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlocksCollection daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockCollection daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" points to the largest block ID among all honor nodes.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" points to the data with the largest block ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-daemon"}},[e._v("#")]),e._v(" BlockGenerator daemon")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon generates new blocks.")]),e._v(" "),a("h3",{attrs:{id:"pre-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pre-verification"}},[e._v("#")]),e._v(" Pre-verification")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon analyzes the latest blocks in the blockchain to make new block generation plans.")]),e._v(" "),a("p",[e._v("If the following conditions are met, a new block can be generated:")]),e._v(" "),a("ul",[a("li",[e._v("The node that generated the latest block is in a node within the honor node list and runs the daemon.")]),e._v(" "),a("li",[e._v("The shortest time since the latest unverified block was generated.")])]),e._v(" "),a("h3",{attrs:{id:"block-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-generation"}},[e._v("#")]),e._v(" Block generation")]),e._v(" "),a("p",[e._v("A new block generated by the daemon contains all new transactions, which can be received from the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(" of other nodes or generated by the node running the daemon. The block generated is stored in the node database.")]),e._v(" "),a("h3",{attrs:{id:"tables-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-2"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (saves new blocks)")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon does not make any request to other daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator daemon")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends transactions and blocks to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[e._v("#")]),e._v(" Guardian node")]),e._v(" "),a("p",[e._v("When working on a guardian node, the daemon sends transactions generated by its node to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),a("p",[e._v("When working on a honor node, the daemon sends blocks generated and transaction hashes to all honor nodes.")]),e._v(" "),a("p",[e._v("Then, the honor node responds to transaction requests unknown to it. The daemon sends the complete transaction data as a response.")]),e._v(" "),a("h3",{attrs:{id:"tables-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-3"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Disseminator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("transactions")])]),e._v(" "),a("h3",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Send transactions and block hashes to the honor node.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Receive transaction data from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"confirmations-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirmations-daemon"}},[e._v("#")]),e._v(" Confirmations daemon")]),e._v(" "),a("p",[e._v("The Confirmations daemon checks whether all the blocks in its node exist on most other nodes.")]),e._v(" "),a("h3",{attrs:{id:"block-confirmation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-confirmation"}},[e._v("#")]),e._v(" Block confirmation")]),e._v(" "),a("p",[e._v("A block confirmed by multiple node in the network is considered as a confirmed block.")]),e._v(" "),a("p",[e._v("The daemon confirms all blocks one by one starting from the first that is currently not confirmed in the database.")]),e._v(" "),a("p",[e._v("Each block is confirmed in the way as follows:")]),e._v(" "),a("ul",[a("li",[e._v("Sending a request containing the ID of the block being confirmed to all honor nodes.")]),e._v(" "),a("li",[e._v("All honor nodes respond to the block hash.")]),e._v(" "),a("li",[e._v("If the hash responded matches the hash of the block on the daemon node, the confirmation counter value is increased. If not, the cancellation counter value is increased.")])]),e._v(" "),a("h3",{attrs:{id:"tables-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-4"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Confirmations daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("confirmation")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Confirmations daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Request block hashes from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-service-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-service-protocol"}},[e._v("#")]),e._v(" TCP service protocol")]),e._v(" "),a("p",[e._v("The TCP service protocol works on honor nodes and guardian nodes, which uses the binary protocol on TCP to requests from the BlocksCollection, Disseminator, and Confirmation daemons.")]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[e._v("Each request has a type defined by the first two bytes of the request.")]),e._v(" "),a("h2",{attrs:{id:"type-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-1"}},[e._v("#")]),e._v(" Type 1")]),e._v(" "),a("h4",{attrs:{id:"request-sender"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Hashes of the transaction and block.")]),e._v(" "),a("h4",{attrs:{id:"request-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("The block hash is added to the block queue.")]),e._v(" "),a("p",[e._v("Analyzes and verifies the transaction hashes, and select transactions that have not yet appeared on the node.")]),e._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No. After processing the request, a "),a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" request is issued.")]),e._v(" "),a("h2",{attrs:{id:"type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-2"}},[e._v("#")]),e._v(" Type 2")]),e._v(" "),a("h4",{attrs:{id:"request-sender-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-2"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-2"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("The transaction data, including the data size:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the transaction data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The transaction data.")]),e._v(" "),a("h4",{attrs:{id:"request-processing-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing-2"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("Verifies the transaction and add it to the transaction queue.")]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h2",{attrs:{id:"type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-4"}},[e._v("#")]),e._v(" Type 4")]),e._v(" "),a("h4",{attrs:{id:"request-sender-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-3"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-3"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block hash.")]),e._v(" "),a("p",[e._v("Returns "),a("code",[e._v("0")]),e._v(" if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-7"}},[e._v("#")]),e._v(" Type 7")]),e._v(" "),a("h4",{attrs:{id:"request-sender-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-4"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-4"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The block data, including data size.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the block data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The block data.")]),e._v(" "),a("p",[e._v("The connection is closed if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-10"}},[e._v("#")]),e._v(" Type 10")]),e._v(" "),a("h4",{attrs:{id:"request-sender-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-5"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-5"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/81.b35c265f.js b/assets/js/81.c70e41a0.js similarity index 99% rename from assets/js/81.b35c265f.js rename to assets/js/81.c70e41a0.js index 2b9f784..55ca2f7 100644 --- a/assets/js/81.b35c265f.js +++ b/assets/js/81.c70e41a0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{463:function(t,a,e){"use strict";e.r(a);var s=e(51),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"smart-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smart-contracts"}},[t._v("#")]),t._v(" Smart Contracts")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#contract-structure"}},[t._v("Contract Structure")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#data-section"}},[t._v("Data section")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#conditions-section"}},[t._v("Conditions section")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#action-section"}},[t._v("Action section")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#variables"}},[t._v("Variables")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#nested-contracts"}},[t._v("Nested Contracts")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#file-upload"}},[t._v("File upload")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#queries-in-json-format"}},[t._v("Queries in JSON format")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#queries-with-date-and-time-operations"}},[t._v("Queries with date and time operations")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#needle-contract-language"}},[t._v("Needle contract language")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#basic-elements-and-structure"}},[t._v("Basic elements and structure")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#data-types-and-variables"}},[t._v("Data types and variables")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#array"}},[t._v("Array")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#if-and-while-statements"}},[t._v("If and While statements")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#functions"}},[t._v("Functions")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#function-declaration"}},[t._v("Function declaration")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#variable-length-parameters"}},[t._v("Variable-length parameters")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#optional-parameters"}},[t._v("Optional parameters")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#needle-functions-classification"}},[t._v("Needle functions classification")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#needle-functions-reference"}},[t._v("Needle functions reference")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#appparam"}},[t._v("AppParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbrow"}},[t._v("DBRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbselectmetrics"}},[t._v("DBSelectMetrics")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecosysparam"}},[t._v("EcosysParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#gethistory"}},[t._v("GetHistory")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#gethistoryrow"}},[t._v("GetHistoryRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getcolumntype"}},[t._v("GetColumnType")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getdatafromxlsx"}},[t._v("GetDataFromXLSX")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getrowscountxlsx"}},[t._v("GetRowsCountXLSX")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#langres"}},[t._v("LangRes")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getblock"}},[t._v("GetBlock")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbinsert"}},[t._v("DBInsert")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbupdate"}},[t._v("DBUpdate")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbupdateext"}},[t._v("DBUpdateExt")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delcolumn"}},[t._v("DelColumn")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#deltable"}},[t._v("DelTable")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#append"}},[t._v("Append")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#join"}},[t._v("Join")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#split"}},[t._v("Split")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#len"}},[t._v("Len")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#row"}},[t._v("Row")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#one"}},[t._v("One")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getmapkeys"}},[t._v("GetMapKeys")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sortedkeys"}},[t._v("SortedKeys")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#callcontract"}},[t._v("CallContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#contractaccess"}},[t._v("ContractAccess")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#contractconditions"}},[t._v("ContractConditions")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#evalcondition"}},[t._v("EvalCondition")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getcontractbyid"}},[t._v("GetContractById")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getcontractbyname"}},[t._v("GetContractByName")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#roleaccess"}},[t._v("RoleAccess")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#transactioninfo"}},[t._v("TransactionInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#throw"}},[t._v("Throw")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#validatecondition"}},[t._v("ValidateCondition")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#addresstoid"}},[t._v("AddressToId")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#idtoaddress"}},[t._v("IdToAddress")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#pubtoid"}},[t._v("PubToID")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#decodebase64"}},[t._v("DecodeBase64")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#encodebase64"}},[t._v("EncodeBase64")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#float"}},[t._v("Float")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#hextobytes"}},[t._v("HexToBytes")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#formatmoney"}},[t._v("FormatMoney")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#random"}},[t._v("Random")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#int"}},[t._v("Int")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#hash"}},[t._v("Hash")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sha256"}},[t._v("Sha256")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#str"}},[t._v("Str")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#jsonencode"}},[t._v("JSONEncode")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#jsonencodeindent"}},[t._v("JSONEncodeIndent")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#jsondecode"}},[t._v("JSONDecode")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#hasprefix"}},[t._v("HasPrefix")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#contains"}},[t._v("Contains")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#replace"}},[t._v("Replace")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#size"}},[t._v("Size")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sprintf"}},[t._v("Sprintf")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#substr"}},[t._v("Substr")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#tolower"}},[t._v("ToLower")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#toupper"}},[t._v("ToUpper")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#trimspace"}},[t._v("TrimSpace")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#floor"}},[t._v("Floor")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#log"}},[t._v("Log")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#log10"}},[t._v("Log10")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#pow"}},[t._v("Pow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#round"}},[t._v("Round")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sqrt"}},[t._v("Sqrt")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#stringtobytes"}},[t._v("StringToBytes")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#bytestostring"}},[t._v("BytesToString")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sysparamstring"}},[t._v("SysParamString")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sysparamint"}},[t._v("SysParamInt")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbupdatesysparam"}},[t._v("DBUpdateSysParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#updatenotifications"}},[t._v("UpdateNotifications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#updaterolesnotifications"}},[t._v("UpdateRolesNotifications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#httprequest"}},[t._v("HTTPRequest")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#httppostjson"}},[t._v("HTTPPostJSON")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#blocktime"}},[t._v("BlockTime")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#datetime"}},[t._v("DateTime")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#unixdatetime"}},[t._v("UnixDateTime")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#createobs"}},[t._v("CreateOBS")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getobslist"}},[t._v("GetOBSList")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#runobs"}},[t._v("RunOBS")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#stopobs"}},[t._v("StopOBS")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#removeobs"}},[t._v("RemoveOBS")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#system-contracts"}},[t._v("System Contracts")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#newecosystem"}},[t._v("NewEcosystem")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editecosystemname"}},[t._v("EditEcosystemName")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newcontract"}},[t._v("NewContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editcontract"}},[t._v("EditContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#bindwallet"}},[t._v("BindWallet")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#unbindwallet"}},[t._v("UnbindWallet")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newparameter"}},[t._v("NewParameter")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editparameter"}},[t._v("EditParameter")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newmenu"}},[t._v("NewMenu")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editmenu"}},[t._v("EditMenu")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#appendmenu"}},[t._v("AppendMenu")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newpage"}},[t._v("NewPage")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editpage"}},[t._v("EditPage")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#appendpage"}},[t._v("AppendPage")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newblock"}},[t._v("NewBlock")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editblock"}},[t._v("EditBlock")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newtable"}},[t._v("NewTable")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#edittable"}},[t._v("EditTable")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newcolumn"}},[t._v("NewColumn")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editcolumn"}},[t._v("EditColumn")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newlang"}},[t._v("NewLang")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editlang"}},[t._v("EditLang")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#import"}},[t._v("Import")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#importupload"}},[t._v("ImportUpload")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newappparam"}},[t._v("NewAppParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editappparam"}},[t._v("EditAppParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newdelayedcontract"}},[t._v("NewDelayedContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editdelayedcontract"}},[t._v("EditDelayedContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#uploadbinary"}},[t._v("UploadBinary")])])])])]),t._v(" "),e("p",[t._v("Smart Contract (hereinafter referred to as Contract) is one of the basic elements of an application. The implementation of a contract on a page by the user is usually a single operation that the purpose is to update or create a database entry. All data operations of an application form a contract system, and these contracts interact with each other through database or contract content functions.")]),t._v(" "),e("h2",{attrs:{id:"contract-structure"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contract-structure"}},[t._v("#")]),t._v(" Contract Structure")]),t._v(" "),e("p",[t._v("Use the keyword "),e("code",[t._v("contract")]),t._v(" to declare a contract, followed by the contract name, and the contract content must be enclosed in braces. A contract mainly consists of three sections:")]),t._v(" "),e("ol",[e("li",[e("p",[e("strong",[t._v("data")]),t._v(" - "),e("a",{attrs:{href:"#data-section"}},[t._v("data section")]),t._v(", where declares the variables of the input data, including variable name and variable type;")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("conditions")]),t._v(" - "),e("a",{attrs:{href:"#conditions-section"}},[t._v("conditions section")]),t._v(", where validates the correctness of the data;")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("action")]),t._v(" - "),e("a",{attrs:{href:"#action-section"}},[t._v("action section")]),t._v(", where defines the data manipulations.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("contract MyContract {\n data {\n FromId int\n ToId int\n Amount money\n }\n func conditions {\n ...\n }\n func action {\n ...\n }\n}\n")])])]),e("h3",{attrs:{id:"data-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#data-section"}},[t._v("#")]),t._v(" Data section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("data")]),t._v(" section describes the contract data inputs and the form parameters received.")]),t._v(" "),e("p",[t._v("The structure of each line by sequence:")]),t._v(" "),e("ul",[e("li",[t._v("Variable name - only receive variables, not arrays;")]),t._v(" "),e("li",[t._v("Variable data type - the "),e("a",{attrs:{href:"#data-types-and-variables"}},[t._v("data type")]),t._v(" of the variable;")]),t._v(" "),e("li",[t._v("optional - an optional parameter that do not need to fill in the form element.")])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('contract my {\n data {\n Name string\n RequestId int\n Photo file "optional"\n Amount money\n Private bytes\n }\n ...\n}\n')])])]),e("h3",{attrs:{id:"conditions-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#conditions-section"}},[t._v("#")]),t._v(" Conditions section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("conditions")]),t._v(" section describes the validation of data received.")]),t._v(" "),e("p",[t._v("The following commands are used for error warnings: serious errors "),e("code",[t._v("error")]),t._v(", warning errors "),e("code",[t._v("warning")]),t._v(", suggestive errors "),e("code",[t._v("info")]),t._v(". These three commands will generate an error that terminates the execution of contracts, and each error will print a different type of error log information. For example:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('if fuel == 0 {\n error "fuel cannot be zero!"\n}\nif money < limit {\n warning Sprintf("You don\'t have enough money: %v <%v", money, limit)\n}\nif idexist > 0 {\n info "You have already been registered"\n}\n')])])]),e("h3",{attrs:{id:"action-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#action-section"}},[t._v("#")]),t._v(" Action section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("action")]),t._v(" section describes the main code of the contract, which retrieves other data and records the result values in tables. For example:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('action {\nDBUpdate("keys", $key_id, {"-amount": $amount})\nDBUpdate("keys", $recipient, {"+amount": $amount, "pub": $Pub})\n}\n')])])]),e("h2",{attrs:{id:"variables"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variables"}},[t._v("#")]),t._v(" Variables")]),t._v(" "),e("p",[t._v("Variables declared in the data section are passed to other contract sections through the "),e("code",[t._v("$")]),t._v(" symbol followed by the variable name. The "),e("code",[t._v("$")]),t._v(" symbol can also be used to declare other variables that are not within the data section, which are considered as global variables of this contract and all contracts that this contract is nested.")]),t._v(" "),e("p",[t._v("Pre-defined variables can be used in contracts, which contain transaction data that called the contract:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("$time")]),t._v(" - transaction timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$ecosystem_id")]),t._v(" - ecosystem ID;")]),t._v(" "),e("li",[e("code",[t._v("$block")]),t._v(" - ID of the block containing the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$key_id")]),t._v(" - address of the account that signed the current transaction;")]),t._v(" "),e("li",[e("code",[t._v("$type")]),t._v(" - contract ID in the virtual machine;")]),t._v(" "),e("li",[e("code",[t._v("$block_key_id")]),t._v(" - account address of the node generated the block;")]),t._v(" "),e("li",[e("code",[t._v("$block_time")]),t._v(" - block generation timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$original_contract")]),t._v(" - name of the contract that initially processed the transaction. It means the contract is called during transaction validation if the variable is an empty string. To check whether the contract is called by another contract or directly by the transaction, you need to compare the values of $original_contract and $this_contract. It means that the contract is called by the transaction if they are equal;")]),t._v(" "),e("li",[e("code",[t._v("$this_contract")]),t._v(" - name of the contract currently being executed;")]),t._v(" "),e("li",[e("code",[t._v("$guest_key")]),t._v(" - guest account address;")]),t._v(" "),e("li",[e("code",[t._v("$stack")]),t._v(" - contract array stack with a data type of array, containing all contracts executed. The first element of the array represents the name of the contract currently being executed, while the last element represents the name of the contract that initially processed the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$node_position")]),t._v(" - the index number of the verification node array where the block is located;")]),t._v(" "),e("li",[e("code",[t._v("$txhash")]),t._v(" - transaction hash;")]),t._v(" "),e("li",[e("code",[t._v("$contract")]),t._v(" - the current contract structure array.")])]),t._v(" "),e("p",[t._v("Predefined variables can be accessed not only in contracts, but also in permission fields that defines the access permission conditions of the application elements. When used in permission fields, predefined variables for block information are always equal to zero, such as "),e("code",[t._v("$time")]),t._v(", "),e("code",[t._v("$block")]),t._v(", etc.")]),t._v(" "),e("p",[t._v("A predefined variable "),e("code",[t._v("$result")]),t._v(" is assigned with the return result of the contract.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('contract my {\n data {\n Name string\n Amount money\n }\n func conditions {\n if $Amount <= 0 {\n error "Amount cannot be 0"\n }\n $ownerId = 1232\n }\n func action {\n var amount money\n amount = $Amount - 10\n DBUpdate("mytable", $ownerId, {name: $Name,amount: amount})\n DBUpdate("mytable2", $ownerId, {amount: 10})\n }\n}\n')])])]),e("h2",{attrs:{id:"nested-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#nested-contracts"}},[t._v("#")]),t._v(" Nested Contracts")]),t._v(" "),e("p",[t._v("You can nest contracts in the conditions and action sections of the contract. Nested contracts can be called directly, and the contract parameters are specified in parentheses after the contract name, for example, "),e("code",[t._v("@1NameContract(Params)")]),t._v(". You may also call nested contracts with the "),e("a",{attrs:{href:"#callcontract"}},[t._v("CallContract")]),t._v(" function.")]),t._v(" "),e("h2",{attrs:{id:"file-upload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-upload"}},[t._v("#")]),t._v(" File upload")]),t._v(" "),e("p",[t._v("To upload a file using a form in the format of "),e("code",[t._v("multipart/form-data")]),t._v(", the data type of the contract must be "),e("code",[t._v("file")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("contract Upload {\n data {\n \t File file\n }\n ...\n}\n")])])]),e("p",[t._v("The "),e("a",{attrs:{href:"#uploadbinary"}},[t._v("UploadBinary")]),t._v(" contract is used to upload and store files. With the Logicor language function "),e("RouterLink",{attrs:{to:"/it/topics/templates2.html#binary"}},[t._v("Binary")]),t._v(" in the page editor, you can get the file download link.")],1),t._v(" "),e("h2",{attrs:{id:"queries-in-json-format"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-in-json-format"}},[t._v("#")]),t._v(" Queries in JSON format")]),t._v(" "),e("p",[t._v("In the contract language, "),e("strong",[t._v("JSON")]),t._v(" can be specified as a field type. You can use the syntax: "),e("strong",[t._v("columnname->fieldname")]),t._v(" to process the entry field. The value obtained is recorded in "),e("strong",[t._v("columnname.fieldname")]),t._v(". The above syntax can be used in Columns,One,Where of the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret map\nvar val str\nvar list array\nret = DBFind("mytable").Columns("myname,doc,doc->ind").WhereId($Id).Row()\nval = ret["doc.ind"]\nval = DBFind("mytable").Columns("myname,doc->type").WhereId($Id).One("doc->type")\nlist = DBFind("mytable").Columns("myname,doc,doc->ind").Where("doc->ind = ?", "101")\nval = DBFind("mytable").WhereId($Id).One("doc->check")\n')])])]),e("h2",{attrs:{id:"queries-with-date-and-time-operations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-with-date-and-time-operations"}},[t._v("#")]),t._v(" Queries with date and time operations")]),t._v(" "),e("p",[t._v("You cannot directly query and update the date and time with the contract language functions, but you can use PostgreSQL functions and features in the Where statement as in the example below. For example, you need to compare the field date_column with the current time. If date_column is a timestamp type, the expression should be "),e("code",[t._v("date_column NOW()")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Where("to_timestamp(date_column)> NOW()")\nWhere("date_column , >=, <=, ==, !=, ||, &&")])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if val> 10 || id != $block_key_id {\n ...\n} else {\n ...\n}\n")])])]),e("p",[t._v("The code block is executed when the conditional statement of the "),e("strong",[t._v("while")]),t._v(" loop is true. "),e("strong",[t._v("break")]),t._v(" means to terminate the loop of the code block. If you want to start a loop from the beginning, use "),e("strong",[t._v("continue")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var i int\nwhile true {\n if i > 100 {\n break\n }\n ...\n if i == 50 {\n continue\n }\n ...\n i = i + 1\n}\n")])])]),e("p",[t._v("In addition to conditional statements, Needle also supports standard arithmetic operations: "),e("code",[t._v("+")]),t._v(", "),e("code",[t._v("-")]),t._v(", "),e("code",[t._v("*")]),t._v(", "),e("code",[t._v("/")]),t._v(".")]),t._v(" "),e("p",[t._v("Variables of string and bytes types can be used as a conditional statement. If the length of the type is greater than zero, the condition is true, otherwise it is false.")]),t._v(" "),e("h2",{attrs:{id:"functions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#functions"}},[t._v("#")]),t._v(" Functions")]),t._v(" "),e("p",[t._v("Functions can perform some operations on the data received by the "),e("a",{attrs:{href:"#data-section"}},[t._v("data section")]),t._v(" of a contract: read and write data from the database, convert the type of value, and establish the interaction between contracts.")]),t._v(" "),e("h3",{attrs:{id:"function-declaration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#function-declaration"}},[t._v("#")]),t._v(" Function declaration")]),t._v(" "),e("p",[t._v("Use the func keyword to declare a function, followed by the name and the list of parameters passed to it and their types. All parameters are enclosed in parentheses and separated by commas. After the parentheses, the data type of the value returned by the function must be declared. The function body must be enclosed in braces. If the function has no parameters, the braces can be omitted. To return a value from a function, use the "),e("code",[t._v("return")]),t._v(" keyword.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func myfunc(left int, right int) int {\n return left*right + left - right\n}\nfunc test int {\n return myfunc(10, 30) + myfunc(20, 50)\n}\nfunc ooops {\n error "Ooops..."\n}\n')])])]),e("p",[t._v("Function do not return errors, because all error checks are performed automatically. If there is an error in any function, the contract will terminate its operation and present the error description in a window.")]),t._v(" "),e("h3",{attrs:{id:"variable-length-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variable-length-parameters"}},[t._v("#")]),t._v(" Variable-length parameters")]),t._v(" "),e("p",[t._v("Functions can define variable-length parameters, use the "),e("code",[t._v("...")]),t._v(" symbol as the last parameter type of the function to indicate variable-length parameters, with a data type of "),e("code",[t._v("array")]),t._v(". Variable-length parameters include all variables from the time the parameter is passed in the call. All types of variables can be passed, but you need to deal with conflicts of mismatching of data types.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func sum(out string, values ...) {\nvar i, res int\n\nwhile i 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"field": {"$gte": 12}}')]),t._v("\nEquivalent to "),e("code",[t._v("field >= 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$and": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 AND expr2 AND expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$or": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 OR expr2 OR expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$like": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value%'")]),t._v(" (fuzzy search).")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$begin": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'value%'")]),t._v(" (starts with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$end": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value'")]),t._v(" (ends with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: "$isnull"}')]),t._v("\nEquivalent to field is null.")])])])])]),t._v(" "),e("p",[t._v("Make sure not to overwrite the keys of object arrays. For example, if you want to query with "),e("code",[t._v("id>2 and id<5")]),t._v(", you cannot use "),e("code",[t._v('{id:{"$gt": 2}, id:{"$lt": 5}}')]),t._v(", because the first element will be overwritten by the second element. You should use the following query structure:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{id: [{"$gt": 2}, {"$lt": 5}]}\n')])])]),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"$and": [{id:{"$gt": 2}}, {id:{"$lt": 5}}]}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Queries by ID. For example, .WhereId(1).")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Order")])]),t._v(" "),e("p",[t._v("Used to sort the result set by a specified column, or by id by default.")]),t._v(" "),e("p",[t._v("If you use only one field for sorting, you can specify it as a string. To sort multiple fields, you need to specify an array of string objects:")]),t._v(" "),e("p",[t._v("Descending order: "),e("code",[t._v('{"field": "-1"}')]),t._v(" Equivalent to "),e("code",[t._v("field desc")]),t._v(".")]),t._v(" "),e("p",[t._v("Ascending order: "),e("code",[t._v('{"field": "1"}')]),t._v(" Equivalent to "),e("code",[t._v("field asc")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")])]),t._v(" "),e("p",[t._v("Returns the number of entries. 25, by default. The maximum number is 10,000.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Offset")])]),t._v(" "),e("p",[t._v("Offset.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Ecosystemid")])]),t._v(" "),e("p",[t._v("Ecosystem ID. By default, the table of the current ecosystem is queried.")])])]),t._v(" "),e("h4",{attrs:{id:"example-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var i int\nvar ret string\nret = DBFind("contracts").Columns("id,value").Where({id: [{"$gt": 2}, {"$lt": 5}]}).Order( "id")\nwhile i 0 {\n item = list[0]\n}\n')])])]),e("h3",{attrs:{id:"gethistoryrow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gethistoryrow"}},[t._v("#")]),t._v(" GetHistoryRow")]),t._v(" "),e("p",[t._v("Returns a single snapshot from the change history of a specified entry in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetHistoryRow(table string, id int, rollbackId int) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("rollbackId")])]),t._v(" "),e("p",[t._v("rollback_tx The entry ID of the table.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' $result = GetHistoryRow("contracts",205,2358)\n')])])]),e("h3",{attrs:{id:"getcolumntype"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[t._v("#")]),t._v(" GetColumnType")]),t._v(" "),e("p",[t._v("Returns the data type of a specified field in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetColumnType(table, column string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The following types can be returned: "),e("code",[t._v("text, varchar, number, money, double, bytes, json, datetime, double")]),t._v(".")]),t._v(" "),e("h4",{attrs:{id:"example-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var coltype string\ncoltype = GetColumnType("members", "member_name")\n')])])]),e("h3",{attrs:{id:"getdatafromxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getdatafromxlsx"}},[t._v("#")]),t._v(" GetDataFromXLSX")]),t._v(" "),e("p",[t._v("Returns data from XLSX spreadsheets.")]),t._v(" "),e("h4",{attrs:{id:"syntax-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetDataFromXLSX(binId int, line int, count int, sheet int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("line")])]),t._v(" "),e("p",[t._v("The starting line number, starting from 0 by default.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("count")])]),t._v(" "),e("p",[t._v("The number of rows that need to be returned.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var a array\na = GetDataFromXLSX(3, 12, 10, 1)\n")])])]),e("h3",{attrs:{id:"getrowscountxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getrowscountxlsx"}},[t._v("#")]),t._v(" GetRowsCountXLSX")]),t._v(" "),e("p",[t._v("Returns the number of lines in a specified XLSX file.")]),t._v(" "),e("h4",{attrs:{id:"syntax-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetRowsCountXLSX(binId int, sheet int) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var count int\ncount = GetRowsCountXLSX(binid, 1)\n")])])]),e("h3",{attrs:{id:"langres"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[t._v("#")]),t._v(" LangRes")]),t._v(" "),e("p",[t._v("Returns a multilingual resource with name label for language lang, specified as a two-character code, for example: "),e("code",[t._v("en")]),t._v(", "),e("code",[t._v("zh")]),t._v(". If there is no language for a selected language, then the language resource of the "),e("code",[t._v("en")]),t._v(" label is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("LangRes(label string, lang string) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("label")])]),t._v(" "),e("p",[t._v("Language resource name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("lang")])]),t._v(" "),e("p",[t._v("Two-character language code.")])])]),t._v(" "),e("h4",{attrs:{id:"example-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('warning LangRes("@1confirm", "en")\nerror LangRes("@1problems", "zh")\n')])])]),e("h3",{attrs:{id:"getblock"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getblock"}},[t._v("#")]),t._v(" GetBlock")]),t._v(" "),e("p",[t._v("Returns relevant information about a specified block.")]),t._v(" "),e("h4",{attrs:{id:"syntax-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetBlock(blockID int64) map\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("blockID")])]),t._v(" "),e("p",[t._v("Block ID.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("Return an array of objects:")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("id")])]),t._v(" "),e("p",[t._v("Block ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("time")])]),t._v(" "),e("p",[t._v("Block generation timestamp.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")])]),t._v(" "),e("p",[t._v("The account address of the verification node generated the block.")])])]),t._v(" "),e("h4",{attrs:{id:"example-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var b map\nb = GetBlock(1)\nPrintln(b)\n")])])]),e("h3",{attrs:{id:"dbinsert"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbinsert"}},[t._v("#")]),t._v(" DBInsert")]),t._v(" "),e("p",[t._v("Adds an entry to a specified table and return the entry ID.")]),t._v(" "),e("h4",{attrs:{id:"syntax-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBInsert(table string, params map) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are inserted values.")])])]),t._v(" "),e("h4",{attrs:{id:"example-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBInsert("mytable", {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdate"}},[t._v("#")]),t._v(" DBUpdate")]),t._v(" "),e("p",[t._v("Changes the column value of a specified entry ID in a specified table. If the entry ID does not exist in the table, an error is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdate(tblname string, id int, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdate("mytable", myid, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdateext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdateext"}},[t._v("#")]),t._v(" DBUpdateExt")]),t._v(" "),e("p",[t._v("Changes the value of a column in a specified table that matches the query condition.")]),t._v(" "),e("h4",{attrs:{id:"syntax-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdateExt(tblname string, where map, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("where")])]),t._v(" "),e("p",[t._v("Query conditions.")]),t._v(" "),e("p",[t._v("For more details, see "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdateExt("mytable", {id: $key_id, ecosystem: $ecosystem_id}, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"delcolumn"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delcolumn"}},[t._v("#")]),t._v(" DelColumn")]),t._v(" "),e("p",[t._v("Deletes a field in a specified table that has no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelColumn(tblname string, column string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("The field to be deleted.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelColumn("mytable", "mycolumn")\n')])])]),e("h3",{attrs:{id:"deltable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deltable"}},[t._v("#")]),t._v(" DelTable")]),t._v(" "),e("p",[t._v("Deletes a specified table that has e no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelTable(tblname string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelTable("mytable")\n')])])]),e("h3",{attrs:{id:"append"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#append"}},[t._v("#")]),t._v(" Append")]),t._v(" "),e("p",[t._v("Inserts any type of val into the src array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("p",[t._v("Append(src array, val anyType) array")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("src")])]),t._v(" "),e("p",[t._v("The original array.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("The value to be inserted.")])])]),t._v(" "),e("h4",{attrs:{id:"example-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var list array\nlist = Append(list, "new_val")\n')])])]),e("h3",{attrs:{id:"join"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#join"}},[t._v("#")]),t._v(" Join")]),t._v(" "),e("p",[t._v("Combines elements of the in array into a string with a specified sep separator.")]),t._v(" "),e("h4",{attrs:{id:"syntax-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Join(in array, sep string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("Array name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var val string, myarr array\n myarr[0] = "first"\n myarr[1] = 10\n val = Join(myarr, ",")\n')])])]),e("h3",{attrs:{id:"split"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#split"}},[t._v("#")]),t._v(" Split")]),t._v(" "),e("p",[t._v("Uses the sep separator to split the in string into elements and put them into an array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Split(in string, sep string) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("String.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var myarr array\nmyarr = Split("first,second,third", ",")\n')])])]),e("h3",{attrs:{id:"len"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#len"}},[t._v("#")]),t._v(" Len")]),t._v(" "),e("p",[t._v("Returns the number of elements in a specified array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Len(val array) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if Len(mylist) == 0 {\n ...\n}\n")])])]),e("h3",{attrs:{id:"row"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#row"}},[t._v("#")]),t._v(" Row")]),t._v(" "),e("p",[t._v("The list parameter must not be specified in this case. Return the first object array in the array list. If the list is empty, an empty result is returned. This function is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" Row(list array) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("list")])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")])])]),t._v(" "),e("h4",{attrs:{id:"example-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var ret map\n ret = DBFind("contracts").Columns("id,value").WhereId(10).Row()\n Println(ret)\n')])])]),e("h3",{attrs:{id:"one"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#one"}},[t._v("#")]),t._v(" One")]),t._v(" "),e("p",[t._v("Returns the field value of the first object array in the array list. If the list array is empty, nil is returned. It is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("One(list array, column string) string\n")])])]),e("ul",[e("li",[e("strong",[t._v("list")])])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret string\nret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")\nif ret != nil {\n Println(ret)\n}\n')])])]),e("h3",{attrs:{id:"getmapkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getmapkeys"}},[t._v("#")]),t._v(" GetMapKeys")]),t._v(" "),e("p",[t._v("Returns the key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetMapKeys(val map) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k1"] = "v1"\nval["k2"] = "v2"\narr = GetMapKeys(val)\n')])])]),e("h3",{attrs:{id:"sortedkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sortedkeys"}},[t._v("#")]),t._v(" SortedKeys")]),t._v(" "),e("p",[t._v("Returns a sorted key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("SortedKeys(val map) array\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k2"] = "v2"\nval["k1"] = "v1"\narr = SortedKeys(val)\n')])])]),e("h3",{attrs:{id:"callcontract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#callcontract"}},[t._v("#")]),t._v(" CallContract")]),t._v(" "),e("p",[t._v("Calls the contract with a specified name. All parameters of the data section in the contract must be included in an object array. This function returns the value assigned to the "),e("strong",[t._v("$result")]),t._v(" variable by a specified contract.")]),t._v(" "),e("h4",{attrs:{id:"syntax-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("CallContract(name string, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The name of the contract being called.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An associative array of the contract input data.")])])]),t._v(" "),e("h4",{attrs:{id:"example-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var par map\npar["Name"] = "My Name"\nCallContract("MyContract", par)\n')])])]),e("h3",{attrs:{id:"contractaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractaccess"}},[t._v("#")]),t._v(" ContractAccess")]),t._v(" "),e("p",[t._v("Checks if the name of contract being executed matches one of the names listed in the parameters. Usually it is used to control contract access to tables. When editing table fields or inserting and adding new column fields in the permissions section of the table, please specify this function in the permissions fields.")]),t._v(" "),e("h4",{attrs:{id:"syntax-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractAccess(name string, [name string]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractAccess("MyContract")\nContractAccess("MyContract","SimpleContract")\n')])])]),e("h3",{attrs:{id:"contractconditions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractconditions"}},[t._v("#")]),t._v(" ContractConditions")]),t._v(" "),e("p",[t._v("Calls the conditions section in the contract with a specified name.")]),t._v(" "),e("p",[t._v("For this type of contracts, the data section must be empty. If the conditions section is executed without error, it returns true. If there is an error during execution, the parent contract will also be terminated due to the error. This function is usually used to control the contract's access to tables and can be called in the permission fields when editing system tables.")]),t._v(" "),e("h4",{attrs:{id:"syntax-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractConditions(name string, [name string]) bool\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractConditions("MainCondition")\n')])])]),e("h3",{attrs:{id:"evalcondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#evalcondition"}},[t._v("#")]),t._v(" EvalCondition")]),t._v(" "),e("p",[t._v("Gets the value of the condfield field in the record with a 'name' field from the tablename table, and checks the conditions of the condfield field value.")]),t._v(" "),e("h4",{attrs:{id:"syntax-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(tablename string, name string, condfield string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tablename")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Queries the value with the 'name' field.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("condfield")])]),t._v(" "),e("p",[t._v("The name of the field whose conditions needs to be checked.")])])]),t._v(" "),e("h4",{attrs:{id:"example-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(`menu`, $Name, `conditions`)\n")])])]),e("h3",{attrs:{id:"getcontractbyid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyid"}},[t._v("#")]),t._v(" GetContractById")]),t._v(" "),e("p",[t._v("Returns its contract name by contract ID. If not found the contract, an empty string is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractById(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("The contract ID in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var name string\nname = GetContractById($IdContract)\n")])])]),e("h3",{attrs:{id:"getcontractbyname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyname"}},[t._v("#")]),t._v(" GetContractByName")]),t._v(" "),e("p",[t._v("This function returns its contract ID by contract name. If not found the contract, zero is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractByName(name string) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The contract name in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var id int\nid = GetContractByName(`NewBlock`)\n")])])]),e("h3",{attrs:{id:"roleaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#roleaccess"}},[t._v("#")]),t._v(" RoleAccess")]),t._v(" "),e("p",[t._v("Checks whether the role ID of the contract caller matches one of the IDs specified in the parameter.")]),t._v(" "),e("p",[t._v("You can use this function to control contract access to tables and other data.")]),t._v(" "),e("h4",{attrs:{id:"syntax-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(id int, [id int]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Role ID.")])])]),t._v(" "),e("h4",{attrs:{id:"example-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(1)\nRoleAccess(1, 3)\n")])])]),e("h3",{attrs:{id:"transactioninfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#transactioninfo"}},[t._v("#")]),t._v(" TransactionInfo")]),t._v(" "),e("p",[t._v("Queries transactions by specified hash value and returns information about the contract executed and its parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("TransactionInfo(hash: string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hash")])]),t._v(" "),e("p",[t._v("Transaction hash in hexadecimal string format.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("This function returns a string in JSON format:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("contract")])]),t._v(" "),e("p",[t._v("Contract name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("Data passed to contract parameters.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("block")])]),t._v(" "),e("p",[t._v("ID of the block that processed the transaction.")])])]),t._v(" "),e("h4",{attrs:{id:"example-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var out map\nout = JSONDecode(TransactionInfo(hash))\n")])])]),e("h3",{attrs:{id:"throw"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#throw"}},[t._v("#")]),t._v(" Throw")]),t._v(" "),e("p",[t._v("Generates an error of type exception.")]),t._v(" "),e("h4",{attrs:{id:"syntax-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Throw(ErrorId string, ErrDescription string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("ErrorId")])]),t._v(" "),e("p",[t._v("Error identifier.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ErrDescription")])]),t._v(" "),e("p",[t._v("Error description.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The format of this type of transaction results:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"type":"exception","error":"Error description","id":"Error ID"}\n')])])]),e("h4",{attrs:{id:"example-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Throw("Problem", "There is a problem")\n')])])]),e("h3",{attrs:{id:"validatecondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#validatecondition"}},[t._v("#")]),t._v(" ValidateCondition")]),t._v(" "),e("p",[t._v("Tries to compile the conditions specified by the condition parameter. If there is an error during the compilation process, an error is generated and the contract called is terminated. This function is designed to check the correctness of the conditional format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ValidateCondition(condition string, state int)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("condition")])]),t._v(" "),e("p",[t._v("The conditional format that needs to be verified.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("state")])]),t._v(" "),e("p",[t._v("Ecosystem ID. If you check the global condition, please specify it as 0.")])])]),t._v(" "),e("h4",{attrs:{id:"example-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ValidateCondition(`ContractAccess("@1MyContract")`, 1)\n')])])]),e("h3",{attrs:{id:"addresstoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[t._v("#")]),t._v(" AddressToId")]),t._v(" "),e("p",[t._v("Returns the corresponding account address by wallet address. If an invalid address is specified, '0' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("AddressToId(address string) int\n\n")])])]),e("ul",[e("li",[e("p",[t._v("Address")]),t._v(" "),e("p",[t._v("Wallet address in "),e("code",[t._v("XXXX-...-XXXX")]),t._v(" format or number format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("wallet = AddressToId($Recipient)\n")])])]),e("h3",{attrs:{id:"idtoaddress"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#idtoaddress"}},[t._v("#")]),t._v(" IdToAddress")]),t._v(" "),e("p",[t._v("Returns the corresponding wallet address by account address. If an invalid address is specified, the invalid address 'invalid' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("IdToAddress(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Account address.")])])]),t._v(" "),e("h4",{attrs:{id:"example-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("$address = IdToAddress($id)\n")])])]),e("h3",{attrs:{id:"pubtoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pubtoid"}},[t._v("#")]),t._v(" PubToID")]),t._v(" "),e("p",[t._v("The account address is returned by public key in hexadecimal format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("PubToID(hexkey string) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexkey")])]),t._v(" "),e("p",[t._v("The public key in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var wallet int\nwallet = PubToID("04fa5e78.....34abd6")\n')])])]),e("h3",{attrs:{id:"decodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#decodebase64"}},[t._v("#")]),t._v(" DecodeBase64")]),t._v(" "),e("p",[t._v("Returns a string by specifying the base64 format")]),t._v(" "),e("h4",{attrs:{id:"syntax-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DecodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("String in base64 format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("val = DecodeBase64(mybase64)\n")])])]),e("h3",{attrs:{id:"encodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#encodebase64"}},[t._v("#")]),t._v(" EncodeBase64")]),t._v(" "),e("p",[t._v("Returns a string in base64 format by specifying a string.")]),t._v(" "),e("h4",{attrs:{id:"syntax-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EncodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("The string to be encoded.")])])]),t._v(" "),e("h4",{attrs:{id:"example-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var base64str string\nbase64str = EncodeBase64("my text")\n')])])]),e("h3",{attrs:{id:"float"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#float"}},[t._v("#")]),t._v(" Float")]),t._v(" "),e("p",[t._v("Converts an integer or string to a float number.")]),t._v(" "),e("h4",{attrs:{id:"syntax-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Float(val int|string) float\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("An integer or string.")])])]),t._v(" "),e("h4",{attrs:{id:"example-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('val = Float("567.989") + Float(232)\n')])])]),e("h3",{attrs:{id:"hextobytes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hextobytes"}},[t._v("#")]),t._v(" HexToBytes")]),t._v(" "),e("p",[t._v("Converts a string in hexadecimal format to byte type bytes.")]),t._v(" "),e("h4",{attrs:{id:"syntax-42"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" HexToBytes(hexdata string) bytes\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexdata")])]),t._v(" "),e("p",[t._v("A string in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val bytes\nval = HexToBytes("34fe4501a4d80094")\n')])])]),e("h3",{attrs:{id:"formatmoney"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#formatmoney"}},[t._v("#")]),t._v(" FormatMoney")]),t._v(" "),e("p",[t._v("Returns the string value of exp / 10 ^ digit.")]),t._v(" "),e("h4",{attrs:{id:"syntax-43"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("FormatMoney(exp string, digit int) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Exp")])]),t._v(" "),e("p",[t._v("A number in string format.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("digit")])]),t._v(" "),e("p",[t._v("The exponent (positive or negative) of 10 in the expression "),e("code",[t._v("Exp/10^digit")]),t._v(". Positive values determine decimal places.")])])]),t._v(" "),e("h4",{attrs:{id:"example-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' s = FormatMoney("78236475917384", 0)\n')])])]),e("h3",{attrs:{id:"random"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#random"}},[t._v("#")]),t._v(" Random")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Returns a random number between min and max (min <= result 0 {\n info "You have already been registered"\n}\n')])])]),e("h3",{attrs:{id:"action-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#action-section"}},[t._v("#")]),t._v(" Action section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("action")]),t._v(" section describes the main code of the contract, which retrieves other data and records the result values in tables. For example:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('action {\nDBUpdate("keys", $key_id, {"-amount": $amount})\nDBUpdate("keys", $recipient, {"+amount": $amount, "pub": $Pub})\n}\n')])])]),e("h2",{attrs:{id:"variables"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variables"}},[t._v("#")]),t._v(" Variables")]),t._v(" "),e("p",[t._v("Variables declared in the data section are passed to other contract sections through the "),e("code",[t._v("$")]),t._v(" symbol followed by the variable name. The "),e("code",[t._v("$")]),t._v(" symbol can also be used to declare other variables that are not within the data section, which are considered as global variables of this contract and all contracts that this contract is nested.")]),t._v(" "),e("p",[t._v("Pre-defined variables can be used in contracts, which contain transaction data that called the contract:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("$time")]),t._v(" - transaction timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$ecosystem_id")]),t._v(" - ecosystem ID;")]),t._v(" "),e("li",[e("code",[t._v("$block")]),t._v(" - ID of the block containing the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$key_id")]),t._v(" - address of the account that signed the current transaction;")]),t._v(" "),e("li",[e("code",[t._v("$type")]),t._v(" - contract ID in the virtual machine;")]),t._v(" "),e("li",[e("code",[t._v("$block_key_id")]),t._v(" - account address of the node generated the block;")]),t._v(" "),e("li",[e("code",[t._v("$block_time")]),t._v(" - block generation timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$original_contract")]),t._v(" - name of the contract that initially processed the transaction. It means the contract is called during transaction validation if the variable is an empty string. To check whether the contract is called by another contract or directly by the transaction, you need to compare the values of $original_contract and $this_contract. It means that the contract is called by the transaction if they are equal;")]),t._v(" "),e("li",[e("code",[t._v("$this_contract")]),t._v(" - name of the contract currently being executed;")]),t._v(" "),e("li",[e("code",[t._v("$guest_key")]),t._v(" - guest account address;")]),t._v(" "),e("li",[e("code",[t._v("$stack")]),t._v(" - contract array stack with a data type of array, containing all contracts executed. The first element of the array represents the name of the contract currently being executed, while the last element represents the name of the contract that initially processed the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$node_position")]),t._v(" - the index number of the verification node array where the block is located;")]),t._v(" "),e("li",[e("code",[t._v("$txhash")]),t._v(" - transaction hash;")]),t._v(" "),e("li",[e("code",[t._v("$contract")]),t._v(" - the current contract structure array.")])]),t._v(" "),e("p",[t._v("Predefined variables can be accessed not only in contracts, but also in permission fields that defines the access permission conditions of the application elements. When used in permission fields, predefined variables for block information are always equal to zero, such as "),e("code",[t._v("$time")]),t._v(", "),e("code",[t._v("$block")]),t._v(", etc.")]),t._v(" "),e("p",[t._v("A predefined variable "),e("code",[t._v("$result")]),t._v(" is assigned with the return result of the contract.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('contract my {\n data {\n Name string\n Amount money\n }\n func conditions {\n if $Amount <= 0 {\n error "Amount cannot be 0"\n }\n $ownerId = 1232\n }\n func action {\n var amount money\n amount = $Amount - 10\n DBUpdate("mytable", $ownerId, {name: $Name,amount: amount})\n DBUpdate("mytable2", $ownerId, {amount: 10})\n }\n}\n')])])]),e("h2",{attrs:{id:"nested-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#nested-contracts"}},[t._v("#")]),t._v(" Nested Contracts")]),t._v(" "),e("p",[t._v("You can nest contracts in the conditions and action sections of the contract. Nested contracts can be called directly, and the contract parameters are specified in parentheses after the contract name, for example, "),e("code",[t._v("@1NameContract(Params)")]),t._v(". You may also call nested contracts with the "),e("a",{attrs:{href:"#callcontract"}},[t._v("CallContract")]),t._v(" function.")]),t._v(" "),e("h2",{attrs:{id:"file-upload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-upload"}},[t._v("#")]),t._v(" File upload")]),t._v(" "),e("p",[t._v("To upload a file using a form in the format of "),e("code",[t._v("multipart/form-data")]),t._v(", the data type of the contract must be "),e("code",[t._v("file")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("contract Upload {\n data {\n \t File file\n }\n ...\n}\n")])])]),e("p",[t._v("The "),e("a",{attrs:{href:"#uploadbinary"}},[t._v("UploadBinary")]),t._v(" contract is used to upload and store files. With the Logicor language function "),e("RouterLink",{attrs:{to:"/it/topics/templates2.html#binary"}},[t._v("Binary")]),t._v(" in the page editor, you can get the file download link.")],1),t._v(" "),e("h2",{attrs:{id:"queries-in-json-format"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-in-json-format"}},[t._v("#")]),t._v(" Queries in JSON format")]),t._v(" "),e("p",[t._v("In the contract language, "),e("strong",[t._v("JSON")]),t._v(" can be specified as a field type. You can use the syntax: "),e("strong",[t._v("columnname->fieldname")]),t._v(" to process the entry field. The value obtained is recorded in "),e("strong",[t._v("columnname.fieldname")]),t._v(". The above syntax can be used in Columns,One,Where of the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret map\nvar val str\nvar list array\nret = DBFind("mytable").Columns("myname,doc,doc->ind").WhereId($Id).Row()\nval = ret["doc.ind"]\nval = DBFind("mytable").Columns("myname,doc->type").WhereId($Id).One("doc->type")\nlist = DBFind("mytable").Columns("myname,doc,doc->ind").Where("doc->ind = ?", "101")\nval = DBFind("mytable").WhereId($Id).One("doc->check")\n')])])]),e("h2",{attrs:{id:"queries-with-date-and-time-operations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-with-date-and-time-operations"}},[t._v("#")]),t._v(" Queries with date and time operations")]),t._v(" "),e("p",[t._v("You cannot directly query and update the date and time with the contract language functions, but you can use PostgreSQL functions and features in the Where statement as in the example below. For example, you need to compare the field date_column with the current time. If date_column is a timestamp type, the expression should be "),e("code",[t._v("date_column NOW()")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Where("to_timestamp(date_column)> NOW()")\nWhere("date_column , >=, <=, ==, !=, ||, &&")])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if val> 10 || id != $block_key_id {\n ...\n} else {\n ...\n}\n")])])]),e("p",[t._v("The code block is executed when the conditional statement of the "),e("strong",[t._v("while")]),t._v(" loop is true. "),e("strong",[t._v("break")]),t._v(" means to terminate the loop of the code block. If you want to start a loop from the beginning, use "),e("strong",[t._v("continue")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var i int\nwhile true {\n if i > 100 {\n break\n }\n ...\n if i == 50 {\n continue\n }\n ...\n i = i + 1\n}\n")])])]),e("p",[t._v("In addition to conditional statements, Needle also supports standard arithmetic operations: "),e("code",[t._v("+")]),t._v(", "),e("code",[t._v("-")]),t._v(", "),e("code",[t._v("*")]),t._v(", "),e("code",[t._v("/")]),t._v(".")]),t._v(" "),e("p",[t._v("Variables of string and bytes types can be used as a conditional statement. If the length of the type is greater than zero, the condition is true, otherwise it is false.")]),t._v(" "),e("h2",{attrs:{id:"functions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#functions"}},[t._v("#")]),t._v(" Functions")]),t._v(" "),e("p",[t._v("Functions can perform some operations on the data received by the "),e("a",{attrs:{href:"#data-section"}},[t._v("data section")]),t._v(" of a contract: read and write data from the database, convert the type of value, and establish the interaction between contracts.")]),t._v(" "),e("h3",{attrs:{id:"function-declaration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#function-declaration"}},[t._v("#")]),t._v(" Function declaration")]),t._v(" "),e("p",[t._v("Use the func keyword to declare a function, followed by the name and the list of parameters passed to it and their types. All parameters are enclosed in parentheses and separated by commas. After the parentheses, the data type of the value returned by the function must be declared. The function body must be enclosed in braces. If the function has no parameters, the braces can be omitted. To return a value from a function, use the "),e("code",[t._v("return")]),t._v(" keyword.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func myfunc(left int, right int) int {\n return left*right + left - right\n}\nfunc test int {\n return myfunc(10, 30) + myfunc(20, 50)\n}\nfunc ooops {\n error "Ooops..."\n}\n')])])]),e("p",[t._v("Function do not return errors, because all error checks are performed automatically. If there is an error in any function, the contract will terminate its operation and present the error description in a window.")]),t._v(" "),e("h3",{attrs:{id:"variable-length-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variable-length-parameters"}},[t._v("#")]),t._v(" Variable-length parameters")]),t._v(" "),e("p",[t._v("Functions can define variable-length parameters, use the "),e("code",[t._v("...")]),t._v(" symbol as the last parameter type of the function to indicate variable-length parameters, with a data type of "),e("code",[t._v("array")]),t._v(". Variable-length parameters include all variables from the time the parameter is passed in the call. All types of variables can be passed, but you need to deal with conflicts of mismatching of data types.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func sum(out string, values ...) {\nvar i, res int\n\nwhile i 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"field": {"$gte": 12}}')]),t._v("\nEquivalent to "),e("code",[t._v("field >= 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$and": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 AND expr2 AND expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$or": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 OR expr2 OR expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$like": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value%'")]),t._v(" (fuzzy search).")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$begin": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'value%'")]),t._v(" (starts with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$end": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value'")]),t._v(" (ends with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: "$isnull"}')]),t._v("\nEquivalent to field is null.")])])])])]),t._v(" "),e("p",[t._v("Make sure not to overwrite the keys of object arrays. For example, if you want to query with "),e("code",[t._v("id>2 and id<5")]),t._v(", you cannot use "),e("code",[t._v('{id:{"$gt": 2}, id:{"$lt": 5}}')]),t._v(", because the first element will be overwritten by the second element. You should use the following query structure:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{id: [{"$gt": 2}, {"$lt": 5}]}\n')])])]),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"$and": [{id:{"$gt": 2}}, {id:{"$lt": 5}}]}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Queries by ID. For example, .WhereId(1).")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Order")])]),t._v(" "),e("p",[t._v("Used to sort the result set by a specified column, or by id by default.")]),t._v(" "),e("p",[t._v("If you use only one field for sorting, you can specify it as a string. To sort multiple fields, you need to specify an array of string objects:")]),t._v(" "),e("p",[t._v("Descending order: "),e("code",[t._v('{"field": "-1"}')]),t._v(" Equivalent to "),e("code",[t._v("field desc")]),t._v(".")]),t._v(" "),e("p",[t._v("Ascending order: "),e("code",[t._v('{"field": "1"}')]),t._v(" Equivalent to "),e("code",[t._v("field asc")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")])]),t._v(" "),e("p",[t._v("Returns the number of entries. 25, by default. The maximum number is 10,000.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Offset")])]),t._v(" "),e("p",[t._v("Offset.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Ecosystemid")])]),t._v(" "),e("p",[t._v("Ecosystem ID. By default, the table of the current ecosystem is queried.")])])]),t._v(" "),e("h4",{attrs:{id:"example-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var i int\nvar ret string\nret = DBFind("contracts").Columns("id,value").Where({id: [{"$gt": 2}, {"$lt": 5}]}).Order( "id")\nwhile i 0 {\n item = list[0]\n}\n')])])]),e("h3",{attrs:{id:"gethistoryrow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gethistoryrow"}},[t._v("#")]),t._v(" GetHistoryRow")]),t._v(" "),e("p",[t._v("Returns a single snapshot from the change history of a specified entry in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetHistoryRow(table string, id int, rollbackId int) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("rollbackId")])]),t._v(" "),e("p",[t._v("rollback_tx The entry ID of the table.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' $result = GetHistoryRow("contracts",205,2358)\n')])])]),e("h3",{attrs:{id:"getcolumntype"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[t._v("#")]),t._v(" GetColumnType")]),t._v(" "),e("p",[t._v("Returns the data type of a specified field in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetColumnType(table, column string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The following types can be returned: "),e("code",[t._v("text, varchar, number, money, double, bytes, json, datetime, double")]),t._v(".")]),t._v(" "),e("h4",{attrs:{id:"example-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var coltype string\ncoltype = GetColumnType("members", "member_name")\n')])])]),e("h3",{attrs:{id:"getdatafromxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getdatafromxlsx"}},[t._v("#")]),t._v(" GetDataFromXLSX")]),t._v(" "),e("p",[t._v("Returns data from XLSX spreadsheets.")]),t._v(" "),e("h4",{attrs:{id:"syntax-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetDataFromXLSX(binId int, line int, count int, sheet int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("line")])]),t._v(" "),e("p",[t._v("The starting line number, starting from 0 by default.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("count")])]),t._v(" "),e("p",[t._v("The number of rows that need to be returned.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var a array\na = GetDataFromXLSX(3, 12, 10, 1)\n")])])]),e("h3",{attrs:{id:"getrowscountxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getrowscountxlsx"}},[t._v("#")]),t._v(" GetRowsCountXLSX")]),t._v(" "),e("p",[t._v("Returns the number of lines in a specified XLSX file.")]),t._v(" "),e("h4",{attrs:{id:"syntax-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetRowsCountXLSX(binId int, sheet int) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var count int\ncount = GetRowsCountXLSX(binid, 1)\n")])])]),e("h3",{attrs:{id:"langres"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[t._v("#")]),t._v(" LangRes")]),t._v(" "),e("p",[t._v("Returns a multilingual resource with name label for language lang, specified as a two-character code, for example: "),e("code",[t._v("en")]),t._v(", "),e("code",[t._v("zh")]),t._v(". If there is no language for a selected language, then the language resource of the "),e("code",[t._v("en")]),t._v(" label is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("LangRes(label string, lang string) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("label")])]),t._v(" "),e("p",[t._v("Language resource name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("lang")])]),t._v(" "),e("p",[t._v("Two-character language code.")])])]),t._v(" "),e("h4",{attrs:{id:"example-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('warning LangRes("@1confirm", "en")\nerror LangRes("@1problems", "zh")\n')])])]),e("h3",{attrs:{id:"getblock"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getblock"}},[t._v("#")]),t._v(" GetBlock")]),t._v(" "),e("p",[t._v("Returns relevant information about a specified block.")]),t._v(" "),e("h4",{attrs:{id:"syntax-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetBlock(blockID int64) map\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("blockID")])]),t._v(" "),e("p",[t._v("Block ID.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("Return an array of objects:")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("id")])]),t._v(" "),e("p",[t._v("Block ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("time")])]),t._v(" "),e("p",[t._v("Block generation timestamp.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")])]),t._v(" "),e("p",[t._v("The account address of the verification node generated the block.")])])]),t._v(" "),e("h4",{attrs:{id:"example-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var b map\nb = GetBlock(1)\nPrintln(b)\n")])])]),e("h3",{attrs:{id:"dbinsert"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbinsert"}},[t._v("#")]),t._v(" DBInsert")]),t._v(" "),e("p",[t._v("Adds an entry to a specified table and return the entry ID.")]),t._v(" "),e("h4",{attrs:{id:"syntax-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBInsert(table string, params map) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are inserted values.")])])]),t._v(" "),e("h4",{attrs:{id:"example-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBInsert("mytable", {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdate"}},[t._v("#")]),t._v(" DBUpdate")]),t._v(" "),e("p",[t._v("Changes the column value of a specified entry ID in a specified table. If the entry ID does not exist in the table, an error is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdate(tblname string, id int, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdate("mytable", myid, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdateext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdateext"}},[t._v("#")]),t._v(" DBUpdateExt")]),t._v(" "),e("p",[t._v("Changes the value of a column in a specified table that matches the query condition.")]),t._v(" "),e("h4",{attrs:{id:"syntax-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdateExt(tblname string, where map, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("where")])]),t._v(" "),e("p",[t._v("Query conditions.")]),t._v(" "),e("p",[t._v("For more details, see "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdateExt("mytable", {id: $key_id, ecosystem: $ecosystem_id}, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"delcolumn"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delcolumn"}},[t._v("#")]),t._v(" DelColumn")]),t._v(" "),e("p",[t._v("Deletes a field in a specified table that has no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelColumn(tblname string, column string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("The field to be deleted.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelColumn("mytable", "mycolumn")\n')])])]),e("h3",{attrs:{id:"deltable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deltable"}},[t._v("#")]),t._v(" DelTable")]),t._v(" "),e("p",[t._v("Deletes a specified table that has e no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelTable(tblname string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelTable("mytable")\n')])])]),e("h3",{attrs:{id:"append"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#append"}},[t._v("#")]),t._v(" Append")]),t._v(" "),e("p",[t._v("Inserts any type of val into the src array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("p",[t._v("Append(src array, val anyType) array")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("src")])]),t._v(" "),e("p",[t._v("The original array.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("The value to be inserted.")])])]),t._v(" "),e("h4",{attrs:{id:"example-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var list array\nlist = Append(list, "new_val")\n')])])]),e("h3",{attrs:{id:"join"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#join"}},[t._v("#")]),t._v(" Join")]),t._v(" "),e("p",[t._v("Combines elements of the in array into a string with a specified sep separator.")]),t._v(" "),e("h4",{attrs:{id:"syntax-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Join(in array, sep string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("Array name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var val string, myarr array\n myarr[0] = "first"\n myarr[1] = 10\n val = Join(myarr, ",")\n')])])]),e("h3",{attrs:{id:"split"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#split"}},[t._v("#")]),t._v(" Split")]),t._v(" "),e("p",[t._v("Uses the sep separator to split the in string into elements and put them into an array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Split(in string, sep string) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("String.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var myarr array\nmyarr = Split("first,second,third", ",")\n')])])]),e("h3",{attrs:{id:"len"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#len"}},[t._v("#")]),t._v(" Len")]),t._v(" "),e("p",[t._v("Returns the number of elements in a specified array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Len(val array) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if Len(mylist) == 0 {\n ...\n}\n")])])]),e("h3",{attrs:{id:"row"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#row"}},[t._v("#")]),t._v(" Row")]),t._v(" "),e("p",[t._v("The list parameter must not be specified in this case. Return the first object array in the array list. If the list is empty, an empty result is returned. This function is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" Row(list array) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("list")])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")])])]),t._v(" "),e("h4",{attrs:{id:"example-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var ret map\n ret = DBFind("contracts").Columns("id,value").WhereId(10).Row()\n Println(ret)\n')])])]),e("h3",{attrs:{id:"one"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#one"}},[t._v("#")]),t._v(" One")]),t._v(" "),e("p",[t._v("Returns the field value of the first object array in the array list. If the list array is empty, nil is returned. It is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("One(list array, column string) string\n")])])]),e("ul",[e("li",[e("strong",[t._v("list")])])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret string\nret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")\nif ret != nil {\n Println(ret)\n}\n')])])]),e("h3",{attrs:{id:"getmapkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getmapkeys"}},[t._v("#")]),t._v(" GetMapKeys")]),t._v(" "),e("p",[t._v("Returns the key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetMapKeys(val map) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k1"] = "v1"\nval["k2"] = "v2"\narr = GetMapKeys(val)\n')])])]),e("h3",{attrs:{id:"sortedkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sortedkeys"}},[t._v("#")]),t._v(" SortedKeys")]),t._v(" "),e("p",[t._v("Returns a sorted key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("SortedKeys(val map) array\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k2"] = "v2"\nval["k1"] = "v1"\narr = SortedKeys(val)\n')])])]),e("h3",{attrs:{id:"callcontract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#callcontract"}},[t._v("#")]),t._v(" CallContract")]),t._v(" "),e("p",[t._v("Calls the contract with a specified name. All parameters of the data section in the contract must be included in an object array. This function returns the value assigned to the "),e("strong",[t._v("$result")]),t._v(" variable by a specified contract.")]),t._v(" "),e("h4",{attrs:{id:"syntax-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("CallContract(name string, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The name of the contract being called.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An associative array of the contract input data.")])])]),t._v(" "),e("h4",{attrs:{id:"example-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var par map\npar["Name"] = "My Name"\nCallContract("MyContract", par)\n')])])]),e("h3",{attrs:{id:"contractaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractaccess"}},[t._v("#")]),t._v(" ContractAccess")]),t._v(" "),e("p",[t._v("Checks if the name of contract being executed matches one of the names listed in the parameters. Usually it is used to control contract access to tables. When editing table fields or inserting and adding new column fields in the permissions section of the table, please specify this function in the permissions fields.")]),t._v(" "),e("h4",{attrs:{id:"syntax-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractAccess(name string, [name string]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractAccess("MyContract")\nContractAccess("MyContract","SimpleContract")\n')])])]),e("h3",{attrs:{id:"contractconditions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractconditions"}},[t._v("#")]),t._v(" ContractConditions")]),t._v(" "),e("p",[t._v("Calls the conditions section in the contract with a specified name.")]),t._v(" "),e("p",[t._v("For this type of contracts, the data section must be empty. If the conditions section is executed without error, it returns true. If there is an error during execution, the parent contract will also be terminated due to the error. This function is usually used to control the contract's access to tables and can be called in the permission fields when editing system tables.")]),t._v(" "),e("h4",{attrs:{id:"syntax-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractConditions(name string, [name string]) bool\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractConditions("MainCondition")\n')])])]),e("h3",{attrs:{id:"evalcondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#evalcondition"}},[t._v("#")]),t._v(" EvalCondition")]),t._v(" "),e("p",[t._v("Gets the value of the condfield field in the record with a 'name' field from the tablename table, and checks the conditions of the condfield field value.")]),t._v(" "),e("h4",{attrs:{id:"syntax-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(tablename string, name string, condfield string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tablename")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Queries the value with the 'name' field.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("condfield")])]),t._v(" "),e("p",[t._v("The name of the field whose conditions needs to be checked.")])])]),t._v(" "),e("h4",{attrs:{id:"example-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(`menu`, $Name, `conditions`)\n")])])]),e("h3",{attrs:{id:"getcontractbyid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyid"}},[t._v("#")]),t._v(" GetContractById")]),t._v(" "),e("p",[t._v("Returns its contract name by contract ID. If not found the contract, an empty string is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractById(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("The contract ID in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var name string\nname = GetContractById($IdContract)\n")])])]),e("h3",{attrs:{id:"getcontractbyname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyname"}},[t._v("#")]),t._v(" GetContractByName")]),t._v(" "),e("p",[t._v("This function returns its contract ID by contract name. If not found the contract, zero is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractByName(name string) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The contract name in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var id int\nid = GetContractByName(`NewBlock`)\n")])])]),e("h3",{attrs:{id:"roleaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#roleaccess"}},[t._v("#")]),t._v(" RoleAccess")]),t._v(" "),e("p",[t._v("Checks whether the role ID of the contract caller matches one of the IDs specified in the parameter.")]),t._v(" "),e("p",[t._v("You can use this function to control contract access to tables and other data.")]),t._v(" "),e("h4",{attrs:{id:"syntax-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(id int, [id int]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Role ID.")])])]),t._v(" "),e("h4",{attrs:{id:"example-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(1)\nRoleAccess(1, 3)\n")])])]),e("h3",{attrs:{id:"transactioninfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#transactioninfo"}},[t._v("#")]),t._v(" TransactionInfo")]),t._v(" "),e("p",[t._v("Queries transactions by specified hash value and returns information about the contract executed and its parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("TransactionInfo(hash: string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hash")])]),t._v(" "),e("p",[t._v("Transaction hash in hexadecimal string format.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("This function returns a string in JSON format:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("contract")])]),t._v(" "),e("p",[t._v("Contract name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("Data passed to contract parameters.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("block")])]),t._v(" "),e("p",[t._v("ID of the block that processed the transaction.")])])]),t._v(" "),e("h4",{attrs:{id:"example-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var out map\nout = JSONDecode(TransactionInfo(hash))\n")])])]),e("h3",{attrs:{id:"throw"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#throw"}},[t._v("#")]),t._v(" Throw")]),t._v(" "),e("p",[t._v("Generates an error of type exception.")]),t._v(" "),e("h4",{attrs:{id:"syntax-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Throw(ErrorId string, ErrDescription string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("ErrorId")])]),t._v(" "),e("p",[t._v("Error identifier.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ErrDescription")])]),t._v(" "),e("p",[t._v("Error description.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The format of this type of transaction results:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"type":"exception","error":"Error description","id":"Error ID"}\n')])])]),e("h4",{attrs:{id:"example-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Throw("Problem", "There is a problem")\n')])])]),e("h3",{attrs:{id:"validatecondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#validatecondition"}},[t._v("#")]),t._v(" ValidateCondition")]),t._v(" "),e("p",[t._v("Tries to compile the conditions specified by the condition parameter. If there is an error during the compilation process, an error is generated and the contract called is terminated. This function is designed to check the correctness of the conditional format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ValidateCondition(condition string, state int)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("condition")])]),t._v(" "),e("p",[t._v("The conditional format that needs to be verified.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("state")])]),t._v(" "),e("p",[t._v("Ecosystem ID. If you check the global condition, please specify it as 0.")])])]),t._v(" "),e("h4",{attrs:{id:"example-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ValidateCondition(`ContractAccess("@1MyContract")`, 1)\n')])])]),e("h3",{attrs:{id:"addresstoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[t._v("#")]),t._v(" AddressToId")]),t._v(" "),e("p",[t._v("Returns the corresponding account address by wallet address. If an invalid address is specified, '0' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("AddressToId(address string) int\n\n")])])]),e("ul",[e("li",[e("p",[t._v("Address")]),t._v(" "),e("p",[t._v("Wallet address in "),e("code",[t._v("XXXX-...-XXXX")]),t._v(" format or number format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("wallet = AddressToId($Recipient)\n")])])]),e("h3",{attrs:{id:"idtoaddress"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#idtoaddress"}},[t._v("#")]),t._v(" IdToAddress")]),t._v(" "),e("p",[t._v("Returns the corresponding wallet address by account address. If an invalid address is specified, the invalid address 'invalid' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("IdToAddress(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Account address.")])])]),t._v(" "),e("h4",{attrs:{id:"example-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("$address = IdToAddress($id)\n")])])]),e("h3",{attrs:{id:"pubtoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pubtoid"}},[t._v("#")]),t._v(" PubToID")]),t._v(" "),e("p",[t._v("The account address is returned by public key in hexadecimal format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("PubToID(hexkey string) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexkey")])]),t._v(" "),e("p",[t._v("The public key in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var wallet int\nwallet = PubToID("04fa5e78.....34abd6")\n')])])]),e("h3",{attrs:{id:"decodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#decodebase64"}},[t._v("#")]),t._v(" DecodeBase64")]),t._v(" "),e("p",[t._v("Returns a string by specifying the base64 format")]),t._v(" "),e("h4",{attrs:{id:"syntax-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DecodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("String in base64 format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("val = DecodeBase64(mybase64)\n")])])]),e("h3",{attrs:{id:"encodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#encodebase64"}},[t._v("#")]),t._v(" EncodeBase64")]),t._v(" "),e("p",[t._v("Returns a string in base64 format by specifying a string.")]),t._v(" "),e("h4",{attrs:{id:"syntax-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EncodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("The string to be encoded.")])])]),t._v(" "),e("h4",{attrs:{id:"example-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var base64str string\nbase64str = EncodeBase64("my text")\n')])])]),e("h3",{attrs:{id:"float"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#float"}},[t._v("#")]),t._v(" Float")]),t._v(" "),e("p",[t._v("Converts an integer or string to a float number.")]),t._v(" "),e("h4",{attrs:{id:"syntax-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Float(val int|string) float\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("An integer or string.")])])]),t._v(" "),e("h4",{attrs:{id:"example-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('val = Float("567.989") + Float(232)\n')])])]),e("h3",{attrs:{id:"hextobytes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hextobytes"}},[t._v("#")]),t._v(" HexToBytes")]),t._v(" "),e("p",[t._v("Converts a string in hexadecimal format to byte type bytes.")]),t._v(" "),e("h4",{attrs:{id:"syntax-42"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" HexToBytes(hexdata string) bytes\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexdata")])]),t._v(" "),e("p",[t._v("A string in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val bytes\nval = HexToBytes("34fe4501a4d80094")\n')])])]),e("h3",{attrs:{id:"formatmoney"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#formatmoney"}},[t._v("#")]),t._v(" FormatMoney")]),t._v(" "),e("p",[t._v("Returns the string value of exp / 10 ^ digit.")]),t._v(" "),e("h4",{attrs:{id:"syntax-43"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("FormatMoney(exp string, digit int) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Exp")])]),t._v(" "),e("p",[t._v("A number in string format.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("digit")])]),t._v(" "),e("p",[t._v("The exponent (positive or negative) of 10 in the expression "),e("code",[t._v("Exp/10^digit")]),t._v(". Positive values determine decimal places.")])])]),t._v(" "),e("h4",{attrs:{id:"example-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' s = FormatMoney("78236475917384", 0)\n')])])]),e("h3",{attrs:{id:"random"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#random"}},[t._v("#")]),t._v(" Random")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Returns a random number between min and max (min <= result (map | array [index value])")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSetIndex")]),e._v(" – assigns the value of the top element of the stack to elements of map or array, without using Value. For example, "),a("code",[e._v("(map | array) (index value) (value) => (map | array)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdFuncName")]),e._v(" - adds parameters that are passed using sequential descriptions divided by dot . For example, "),a("code",[e._v("func name => Func (...) .Name (...)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdUnwrapArr")]),e._v(" - defines a Boolean flag if the top element of the stack is an array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdMapInit")]),e._v(" – initializes the value of map;")]),e._v(" "),a("li",[a("strong",[e._v("cmdArrayInit")]),e._v(" – initializes the value of array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdError")]),e._v(" - this command is created when a contract or function terminates with a specified "),a("code",[e._v("error, warning, info")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"stack-operation-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stack-operation-commands"}},[e._v("#")]),e._v(" Stack operation commands")]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("In the current version, automatic type conversion is not fully applicable for these commands. For example,")])]),e._v(" "),a("blockquote",[a("p",[a("code",[e._v("string + float | int | decimal => float | int | decimal, float + int | str => float, but int + string => runtime error")]),e._v(".")])]),e._v(" "),a("p",[e._v("The following are commands for direct stack processing. The Value field is not used in these commands.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("cmdNot")]),e._v(" - logical negation. "),a("code",[e._v("(val) => (!ValueToBool(val))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSign")]),e._v(" - change of sign. "),a("code",[e._v("(val) => (-val)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAdd")]),e._v(" - addition. "),a("code",[e._v("(val1)(val2) => (val1 + val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSub")]),e._v(" - subtraction. "),a("code",[e._v("(val1)(val2) => (val1-val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdMul")]),e._v(" - multiplication. "),a("code",[e._v("(val1)(val2) => (val1 * val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdDiv")]),e._v(" - division. "),a("code",[e._v("(val1)(val2) => (val1 / val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAnd")]),e._v(" - logical AND. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) && valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdOr")]),e._v(" - logical OR. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) || valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdEqual")]),e._v(" - equality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 == val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotEq")]),e._v(" - inequality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 != val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdLess")]),e._v(" - less-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 (val1 >= val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdGreat")]),e._v(" - greater-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1> val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotGreat")]),e._v(" - less-than-or-equal comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 <= val2)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"runtime-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runtime-structure"}},[e._v("#")]),e._v(" Runtime structure")]),e._v(" "),a("p",[e._v("The execution of bytecodes will not affect the virtual machine. For example, it allows various functions and contracts to run simultaneously in a single virtual machine. The Runtime structure is used to run functions and contracts, as well as any expressions and bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type RunTime struct {\n stack []interface{}\n blocks []*blockStack\n vars []interface{}\n extend *map[string]interface{}\n vm *VM\n cost int64\n err error\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("stack")]),e._v(" - the stack to execute the bytecode;")]),e._v(" "),a("li",[a("strong",[e._v("blocks")]),e._v(" - block calls stack;")]),e._v(" "),a("li",[a("strong",[e._v("vars")]),e._v(" - stack of variables. Its variable will be added to the stack of variables when the bytecode is called in the block. After exiting the block, the size of the stack of variables will return to the previous value;")]),e._v(" "),a("li",[a("strong",[e._v("extend")]),e._v(" - a pointer to map with values of external variables ("),a("code",[e._v("$name")]),e._v(");")]),e._v(" "),a("li",[a("strong",[e._v("vm")]),e._v(" - a virtual machine pointer;")]),e._v(" "),a("li",[a("strong",[e._v("cost")]),e._v(" - fuel unit of the resulting cost of execution;")]),e._v(" "),a("li",[a("strong",[e._v("err")]),e._v(" - error occurred during execution.")])]),e._v(" "),a("h4",{attrs:{id:"blockstack-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockstack-structure"}},[e._v("#")]),e._v(" blockStack structure")]),e._v(" "),a("p",[e._v("The blockStack structure is used in the Runtime structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type blockStack struct {\n Block *Block\n Offset int\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Block")]),e._v(" - a pointer to the block being executed;")]),e._v(" "),a("li",[a("strong",[e._v("Offset")]),e._v(" – the offset of the last command executed in the bytecode of the specified block.")])]),e._v(" "),a("h3",{attrs:{id:"runcode-function"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runcode-function"}},[e._v("#")]),e._v(" RunCode function")]),e._v(" "),a("p",[e._v("Bytecodes are executed in the "),a("strong",[e._v("RunCode")]),e._v(" function. It contains a loop that performs the corresponding operation for each bytecode command. Before processing a bytecode, the data required must be initialized.")]),e._v(" "),a("p",[e._v("New blocks are added to other blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = append(rt.blocks, &blockStack{block, len(rt.vars)})\n")])])]),a("p",[e._v("Next, get the information of relevant parameters of the tail function. These parameters are contained in the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var namemap map[string][]interface{}\nif block.Type == ObjFunc && block.Info.(*FuncInfo).Names != nil {\n if rt.stack[len(rt.stack)-1] != nil {\n namemap = rt.stack[len(rt.stack)-1].(map[string][]interface{})\n }\n rt.stack = rt.stack[:len(rt.stack)-1]\n}\n")])])]),a("p",[e._v("Then, all variables defined in the current block must be initialized with their initial values.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("start := len(rt.stack)\nvaroff := len(rt.vars)\nfor vkey, vpar := range block.Vars {\n rt.cost--\n var value interface{}\n")])])]),a("p",[e._v("Since variables in the function are also variables, we need to retrieve them from the last element of the stack in the order described by the function itself.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if block.Type == ObjFunc && vkey = len(params.Params)-1 {\n")])])]),a("p",[e._v("If variable parameters passed belongs to a variable number of parameters, then these parameters will be combined into an array of variables.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" off := varoff + params.Offset[len(params.Params)-1]\n rt.vars[off] = append(rt.vars[off].([]interface{}), value)\n } else {\n rt.vars[varoff+params.Offset[i]] = value\n }\n }\n }\n}\n")])])]),a("p",[e._v("After that, all we have to do is delete values passed from the top of the stack as function parameters, thereby moving the stack. We have copied their values into a variable array.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if block.Type == ObjFunc {\n start -= len(block.Info.(*FuncInfo).Params)\n}\n")])])]),a("p",[e._v("When a bytecode command loop finished, we must clear the stack correctly.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("last := rt.blocks[len(rt.blocks)-1]\n")])])]),a("p",[e._v("Delete the current block from the stack of blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = rt.blocks[:len(rt.blocks)-1]\nif status == statusReturn {\n")])])]),a("p",[e._v("If successfully exited from a function already executed, we will add the return value to the end of the previous stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if last.Block.Type == ObjFunc {\n for count := len(last.Block.Info.(*FuncInfo).Results); count > 0; count-- {\n rt.stack[start] = rt.stack[len(rt.stack)-count]\n start++\n }\n status = statusNormal\n } else {\n")])])]),a("p",[e._v("As you can see, if we do not execute the function, then we will not restore the stack status and exit the function as is. The reason is that loops and conditional structures that have been executed in the function are also bytecode blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" return\n\n }\n}\n\nrt.stack = rt.stack[:start]\n")])])]),a("h3",{attrs:{id:"other-functions-for-operations-with-vm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("#")]),e._v(" Other functions for operations with VM")]),e._v(" "),a("p",[e._v("Your may create a virtual machine with the "),a("strong",[e._v("NewVM")]),e._v(" function. Each virtual machine will be added with four functions, such as "),a("strong",[e._v("ExecContract")]),e._v(", "),a("strong",[e._v("MemoryUsage")]),e._v(", "),a("strong",[e._v("CallContract")]),e._v(", and "),a("strong",[e._v("Settings")]),e._v(", through the "),a("strong",[e._v("Extend")]),e._v(" function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for key, item := range ext.Objects {\n fobj := reflect.ValueOf(item).Type()\n")])])]),a("p",[e._v("We traverse all the objects passed and only look at the functions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" switch fobj.Kind() {\n case reflect.Func:\n")])])]),a("p",[e._v("We fill the "),a("strong",[e._v("ExtFuncInfo")]),e._v(" structure according to the information received about the function, and add its structure to the top level map "),a("strong",[e._v("Objects")]),e._v(" by name.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" data := ExtFuncInfo{key, make([]reflect.Type, fobj.NumIn()), make([]reflect.Type, fobj.NumOut()),\n make([]string, fobj.NumIn()), fobj.IsVariadic(), item}\n for i := 0; i 0 && ((*lexems)[i-1].Type == isComma || (*lexems)[i-1].Type == lexOper) {\n continue main\n }\n for k := len(buffer) - 1; k >= 0; k-- {\n if buffer[k].Cmd == cmdSys {\n continue main\n }\n}\nbreak main\n\n")])])]),a("p",[e._v("In general, the algorithm itself corresponds to an algorithm for converting to inverse Polish notation. With the consideration of the calling of necessary contracts, functions, and indexes, as well as other things not encountered during parsing and options for parsing lexIdent type tokens, then, variables, functions or contracts with this name will be checked. If nothing is found and this is not a function or contract call, then it will indicate an error.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("objInfo, tobj := vm.findObj(lexem.Value.(string), block)\nif objInfo == nil && (!vm.Extern || i> *ind || i >= len(*lexems)-2 || (*lexems)[i+1].Type != isLPar) {\n return fmt.Errorf(`unknown identifier %s`, lexem.Value.(string))\n}\n")])])]),a("p",[e._v("We may encounter such a situation, and the contract call will be described later. In this example, if no functions or variables with the same name are found, then we think it is necessary to call a contract. In this compiled language, there is no difference between contracts and function calls. But we need to call the contract through the "),a("strong",[e._v("ExecContract")]),e._v(" function used in the bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if objInfo.Type == ObjContract {\n if objInfo.Value != nil {\n objContract = objInfo.Value.(*Block)\n }\n objInfo, tobj = vm.findObj(`ExecContract`, block)\n isContract = true\n}\n")])])]),a("p",[e._v("We record the number of variables so far in "),a("code",[e._v("count")]),e._v(", which will also be written to the stack along with the number of function parameters. In each subsequent detection of parameters, we only need to increase this number by one unit at the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("count := 0\nif (*lexems)[i+2].Type != isRPar {\n count++\n}\n")])])]),a("p",[e._v("We have a list Used of called parameters for contracts, then we need to mark the case of the contract is called. If the contract is called without parameters, we must add two empty parameters to call "),a("strong",[e._v("ExecContract")]),e._v(" to get at least two parameters.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('if isContract {\n name := StateName((*block)[0].Info.(uint32), lexem.Value.(string))\n for j := len(*block) - 1; j >= 0; j-- {\n topblock := (*block)[j]\n if topblock.Type == ObjContract {\n if topblock.Info.(*ContractInfo).Used == nil {\n topblock.Info.(*ContractInfo).Used = make(map[string]bool)\n }\n topblock.Info.(*ContractInfo).Used[name] = true\n }\n }\n bytecode = append(bytecode, &ByteCode{cmdPush, name})\n if count == 0 {\n count = 2\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n }\n count++\n}\n')])])]),a("p",[e._v("If we see that there is a square bracket next, then we add the "),a("strong",[e._v("cmdIndex")]),e._v(" command to get the value by the index.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if (*lexems)[i+1].Type == isLBrack {\n if objInfo == nil || objInfo.Type != ObjVar {\n return fmt.Errorf(`unknown variable %s`, lexem.Value.(string))\n }\n buffer = append(buffer, &ByteCode{cmdIndex, 0})\n}\n")])])]),a("p",[e._v("The "),a("strong",[e._v("CompileBlock")]),e._v(" function can generate object trees and expression-independent bytecodes. The compilation process is based on a finite state machine, just like a lexical analyzer, but with the following differences. First, we do not use symbols but tokens; second, we will immediately describe the "),a("em",[e._v("states")]),e._v(" variables in all states and transitions. It represents an array of objects indexed by token type. Each token has a structure of "),a("em",[e._v("compileState")]),e._v(", and a new state is specified in "),a("em",[e._v("NewState")]),e._v(". If it is clear what structure we have resolved, we can specify the function of the handler in the "),a("em",[e._v("Func")]),e._v(" field.")]),e._v(" "),a("p",[e._v("Let us review the main state as an example.")]),e._v(" "),a("p",[e._v("If we encounter a newline or comment, then we will remain in the same state. If we encounter the "),a("strong",[e._v("contract")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateContract")]),e._v(" and start parsing the structure. If we encounter the "),a("strong",[e._v("func")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateFunc")]),e._v(". If other tokens are received, the function generating error will be called.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateRoot\n lexNewLine: {stateRoot, 0},\n lexKeyword | (keyContract << 8): {stateContract | statePush, 0},\n lexKeyword | (keyFunc << 8): {stateFunc | statePush, 0},\n lexComment: {stateRoot, 0},\n 0: {errUnknownCmd, cfError},\n},\n")])])]),a("p",[e._v("Suppose we encountered the "),a("strong",[e._v("func")]),e._v(" keyword and we have changed the state to "),a("em",[e._v("stateFunc")]),e._v(". Since the function name must follow the "),a("strong",[e._v("func")]),e._v(" keyword, we will keep the same state when changing the function name. For all other tokens, we will generate corresponding errors. If we get the function name in the token identifier, then we go to the "),a("em",[e._v("stateFParams")]),e._v(" state, where we can get the parameters of the function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateFunc\n lexNewLine: {stateFunc, 0},\n lexIdent: {stateFParams, cfNameBlock},\n 0: {errMustName, cfError},\n},\n")])])]),a("p",[e._v("At the same time as the above operations, we will call the "),a("strong",[e._v("fNameBlock")]),e._v(" function. It should be noted that the Block structure is created with the statePush mark, where we get it from the buffer and fill it with the data we need. The "),a("strong",[e._v("fNameBlock")]),e._v(" function is suitable for contracts and functions (including those nested in them). It fills the "),a("em",[e._v("Info")]),e._v(" field with the corresponding structure and writes itself into the "),a("em",[e._v("Objects")]),e._v(" of the parent block. In this way, we can call the function or contract with the specified name. Similarly, we create corresponding functions for all states and variables. These functions are usually very small and perform some duties when constructing the virtual machine tree.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("func fNameBlock(buf *[]*Block, state int, lexem *Lexem) error {\n var itype int\n prev := (*buf)[len(*buf)-2]\n fblock := (*buf)[len(*buf)-1]\n name := lexem.Value.(string)\n switch state {\n case stateBlock:\n itype = ObjContract\n name = StateName((*buf)[0].Info.(uint32), name)\n fblock.Info = &ContractInfo{ID: uint32(len(prev.Children) - 1), Name: name,\n Owner: (*buf)[0].Owner}\n default:\n itype = ObjFunc\n fblock.Info = &FuncInfo{}\n }\n fblock.Type = itype\n prev.Objects[name] = &ObjInfo{Type: itype, Value: fblock}\n return nil\n}\n")])])]),a("p",[e._v("For the "),a("strong",[e._v("CompileBlock")]),e._v(" function, it just traverses all the tokens and switches states according to the tokens described in states. Almost all additional tokens correspond to additional program codes.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("statePush")]),e._v(" – adds the "),a("strong",[e._v("Block")]),e._v(" object to the object tree;")]),e._v(" "),a("li",[a("strong",[e._v("statePop")]),e._v(" - used when the block ends with a closing brace;")]),e._v(" "),a("li",[a("strong",[e._v("stateStay")]),e._v(" - you need to keep the current mark when changing to a new state;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBlock")]),e._v(" - transition to the "),a("strong",[e._v("stateBlock")]),e._v(" state for processing "),a("em",[e._v("while")]),e._v(" and "),a("em",[e._v("if")]),e._v(". After processing expressions, you need to process blocks within the braces;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBody")]),e._v(" - transition to the "),a("strong",[e._v("stateBody")]),e._v(" state;")]),e._v(" "),a("li",[a("strong",[e._v("stateFork")]),e._v(" - save the marked position. When the expression starts with an identifier or a name with "),a("code",[e._v("$")]),e._v(", we can make function calls or assignments;")]),e._v(" "),a("li",[a("strong",[e._v("stateToFork")]),e._v(" – used to get the token stored in "),a("strong",[e._v("stateFork")]),e._v(", which will be passed to the process function;")]),e._v(" "),a("li",[a("strong",[e._v("stateLabel")]),e._v(" – used to insert "),a("strong",[e._v("cmdLabel")]),e._v(" commands. "),a("em",[e._v("while")]),e._v(" structure requires this flag;")]),e._v(" "),a("li",[a("strong",[e._v("stateMustEval")]),e._v(" – check the availability of conditional expressions at the beginning of "),a("em",[e._v("if")]),e._v(" and "),a("em",[e._v("while")]),e._v(" structures.")])]),e._v(" "),a("p",[e._v("In addition to the "),a("strong",[e._v("CompileBlock")]),e._v(" function, the "),a("strong",[e._v("FlushBlock")]),e._v(" function should also be mentioned. But the problem is that the block tree is constructed independently of existing virtual machines. More precisely, we obtain information about functions and contracts that exist in a virtual machine, but we collect the compiled blocks into a separate tree. Otherwise, if an error occurs during compilation, we must roll back the virtual machine to the previous state. Therefore, we go to the compilation tree separately, but after the compilation is successful, the "),a("strong",[e._v("FlushContract")]),e._v(" function must be called. This function adds the completed block tree to the current virtual machine. The compilation phase is now complete.")]),e._v(" "),a("h2",{attrs:{id:"lexical-analyzer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexical-analyzer"}},[e._v("#")]),e._v(" Lexical analyzer")]),e._v(" "),a("p",[e._v("The lexical analyzer processes incoming strings and forms a sequence of tokens of the following types :")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - system token, for example: "),a("code",[e._v("{}, [], (), ,, .")]),e._v(" etc;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - operation token, for example: "),a("code",[e._v("+, -, /, \\, *")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - number;")]),e._v(" "),a("li",[a("strong",[e._v("lexident")]),e._v(" - identifier;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewline")]),e._v(" - newline character;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comment;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - keyword;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" - type;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" - reference to external variables or functions, for example: "),a("code",[e._v("$myname")]),e._v(".")])]),e._v(" "),a("p",[e._v("In the current version, a conversion table (finite state machine) is initially constructed with the help of the "),a("a",{attrs:{href:"#lextablelextablego"}},[e._v("script/lextable/lextable.go")]),e._v(" file to parse the tokens, which is written to the lex_table.go file. In general, you can get rid of the conversion table initially generated by the file and create a conversion table in the memory ("),a("code",[e._v("init()")]),e._v(") immediately upon startup. The lexical analysis itself occurs in the lexParser function in the "),a("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lextable-lextable-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lextable-lextable-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),a("p",[e._v("Here we define the alphabet to operate and describe how the finite state machine changes from one state to another based on the next received symbol.")]),e._v(" "),a("p",[a("em",[e._v("states")]),e._v(" is a JSON object containing a list of states.")]),e._v(" "),a("p",[e._v("Except for specific symbols, "),a("code",[e._v("d")]),e._v(" stands for all symbols not specified in the state.\n"),a("code",[e._v("n")]),e._v(" stands for 0x0a, "),a("code",[e._v("s")]),e._v(" stands for space, "),a("code",[e._v("q")]),e._v(" stands for backquote, "),a("code",[e._v("Q")]),e._v(" stands for double quote, "),a("code",[e._v("r")]),e._v(" stands for character >= 128, "),a("code",[e._v("a")]),e._v(" stands for AZ and az, and "),a("code",[e._v("1")]),e._v(" stands for 1- 9.")]),e._v(" "),a("p",[e._v("The name of these states are keys, and the possible values are listed in the value object. Then, there is a new state to make transitions for each group. Then there is the name of the token. If we need to return to the initial state, the third parameter is the service token, which indicates how to handle the current symbol.")]),e._v(" "),a("p",[e._v("For example, we have the main state and the incoming characters "),a("code",[e._v("/")]),e._v(", "),a("code",[e._v('"/": ["solidus", "", "push next"]')]),e._v(",")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("push")]),e._v(" - gives the command to remember that it is in a separate stack ;")]),e._v(" "),a("li",[a("strong",[e._v("next")]),e._v(" - goes to the next character, and at the same time we change the status to "),a("strong",[e._v("solidus")]),e._v(". After that, gets the next character and check the status of "),a("strong",[e._v("solidus")]),e._v(".")])]),e._v(" "),a("p",[e._v("If the next character has "),a("code",[e._v("/")]),e._v(" or "),a("code",[e._v("/*")]),e._v(", then we go to the comment "),a("strong",[e._v("comment")]),e._v(" state because they start with "),a("code",[e._v("//")]),e._v(" or "),a("code",[e._v("/*")]),e._v(". Obviously, each comment has a different state afterwards, because they end with a different symbol.")]),e._v(" "),a("p",[e._v("If the next character is not "),a("code",[e._v("/")]),e._v(" and "),a("code",[e._v("*")]),e._v(", then we record everything in the stack as "),a("strong",[e._v("lexOper")]),e._v(" type tags, clear the stack and return to the main state.")]),e._v(" "),a("p",[e._v("The following module converts the state tree into a numeric array and writes it into the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("p",[e._v("In the first loop:")]),e._v(" "),a("p",[e._v("We form an alphabet of valid symbols.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for ind, ch := range alphabet {\n i := byte(ind)\n")])])]),a("p",[e._v("In addition, in "),a("strong",[e._v("state2int")]),e._v(", we provide each state with its own sequence identifier.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" state2int := map[string]uint{`main`: 0}\n if err := json.Unmarshal([]byte(states), &data); err == nil {\n for key := range data {\n if key != `main` {\n state2int[key] = uint(len(state2int))\n")])])]),a("p",[e._v("When we traverse all states and each set in a state and each symbol in a set, we write a three-byte number [new state identifier (0 = main)] + [token type ( 0-no token)] + [token].\nThe bidimensionality of the "),a("em",[e._v("table")]),e._v(" array is that it is divided into states and 34 input symbols from the "),a("em",[e._v("alphabet")]),e._v(" array, which are arranged in the same order.\nWe are in the "),a("em",[e._v("main")]),e._v(" state on the zero row of the "),a("em",[e._v("table")]),e._v(". Take the first character, find its index in the "),a("em",[e._v("alphabet")]),e._v(" array, and get the value from the column with the given index. Starting from the value received, we receive the token in the low byte. If the parsing is complete, the second byte indicates the type of token received. In the third byte, we receive the index of the next new state.\nAll of these are described in more detail in the "),a("strong",[e._v("lexParser")]),e._v(" function in "),a("em",[e._v("lex.go")]),e._v(".\nIf you want to add some new characters, you need to add them to the "),a("em",[e._v("alphabet")]),e._v(" array and increase the quantity of the "),a("em",[e._v("AlphaSize")]),e._v(" constant. If you want to add a new symbol combination, it should be described in the status, similar to the existing options. After the above operation, run the "),a("em",[e._v("lextable.go")]),e._v(" file to update the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lex-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lex-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lex-go"}},[e._v("lex.go")])]),e._v(" "),a("p",[e._v("The "),a("strong",[e._v("lexParser")]),e._v(" function directly generates lexical analysis and returns an array of received tags based on incoming strings. Let us analyze the structure of tokens.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type Lexem struct {\n Type uint32 // Type of the lexem\n Value interface{} // Value of lexem\n Line uint32 // Line of the lexem\n Column uint32 // Position inside the line\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Type")]),e._v(" - token type. It has one of the following values: "),a("code",[e._v("lexSys, lexOper, lexNumber, lexIdent, lexString, lexComment, lexKeyword, lexType, lexExtend")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" – token value. The type of value depends on the token type, Let us analyze it in more detail:\n"),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - includes brackets, commas, etc. In this case, "),a("code",[e._v("Type = ch << 8 | lexSys")]),e._v(", please refer to the "),a("code",[e._v("isLPar ... isRBrack")]),e._v(" constant, and its value is uint32 bits;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - the value represents an equivalent character sequence in the form of uint32. See the "),a("code",[e._v("isNot ... isOr")]),e._v(" constants;")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - numbers are stored as int64 or float64. If the number has a decimal point, it is float64;")]),e._v(" "),a("li",[a("strong",[e._v("lexIdent")]),e._v(" - identifiers are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewLine")]),e._v(" - newline character. Also used to calculate the row and token position;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - lines are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comments are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - for keywords, only the corresponding indexes are stored, see the "),a("code",[e._v("keyContract ... keyTail")]),e._v(" constant. In this case "),a("code",[e._v("Type = KeyID << 8 | lexKeyword")]),e._v(". In addition, it should be noted that the "),a("code",[e._v("true, false, nil")]),e._v(" keywords will be immediately converted to lexNumber type tokens, and the corresponding "),a("code",[e._v("bool")]),e._v(" and "),a("code",[e._v("intreface {}")]),e._v(" types will be used;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" – this value contains the corresponding "),a("code",[e._v("reflect.Type")]),e._v(" type value;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" – identifiers beginning with a "),a("code",[e._v("$")]),e._v(". These variables and functions are passed from the outside and are therefore assigned to special types of tokens. This value contains the name as a string without a $ at the beginning.")])])]),e._v(" "),a("li",[a("strong",[e._v("Line")]),e._v(" - the line where the token is found;")]),e._v(" "),a("li",[a("strong",[e._v("Column")]),e._v(" - in-line position of the token.")])]),e._v(" "),a("p",[e._v("Let us analyze the "),a("strong",[e._v("lexParser")]),e._v(" function in detail. The "),a("strong",[e._v("todo")]),e._v(" function looks up the symbol index in the alphabet based on the current state and the incoming symbol, and obtains a new state, token identifier (if any), and other tokens from the conversion table. The parsing itself involves calling the "),a("strong",[e._v("todo")]),e._v(" function in turn for each next character and switching to a new state. Once the tag is received, we create the corresponding token in the output criteria and continue the parsing process. It should be noted that during the parsing process, we do not accumulate the token symbols into a separate stack or array, because we only save the offset of the start of the token. After getting the token, we move the offset of the next token to the current parsing position.")]),e._v(" "),a("p",[e._v("All that remains is to check the lexical status tokens used in the parsing:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexfPush")]),e._v(" - this token means that we start to accumulate symbols in a new token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfNext")]),e._v(" - the character must be added to the current token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfPop")]),e._v(" - the receipt of the token is complete. Usually, with this flag we have the identifier type of the parsed token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfSkip")]),e._v(' - this token is used to exclude characters from parsing. For example, the control slashes in the string are \\n \\r ". They will be automatically replaced during the lexical analysis stage.')])]),e._v(" "),a("h2",{attrs:{id:"needle-language"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle-language"}},[e._v("#")]),e._v(" Needle language")]),e._v(" "),a("h3",{attrs:{id:"lexemes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexemes"}},[e._v("#")]),e._v(" Lexemes")]),e._v(" "),a("p",[e._v("The source code of a program must be in UTF-8 encoding.")]),e._v(" "),a("p",[e._v("The following lexical types are processed:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Keywords")]),e._v(" - "),a("code",[e._v("action, break, conditions, continue, contract, data, else, error, false, func, If, info, nil, return, settings, true, var, warning, while")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Number")]),e._v(" - only decimal numbers are accepted. There are two basic types: "),a("strong",[e._v("int")]),e._v(" and "),a("strong",[e._v("float")]),e._v(". If the number has a decimal point, it becomes a float "),a("strong",[e._v("float")]),e._v(". "),a("strong",[e._v("int")]),e._v(" type is equivalent to "),a("strong",[e._v("int64")]),e._v(" in golang, while "),a("strong",[e._v("float")]),e._v(" type is equivalent to "),a("strong",[e._v("float64")]),e._v(" in golang.")]),e._v(" "),a("li",[a("strong",[e._v("String")]),e._v(" - the string can be enclosed in double quotes "),a("code",[e._v('("a string")')]),e._v(" or backquotes "),a("code",[e._v("(\\`a string\\`)")]),e._v(". Both types of strings can contain newline characters. Strings in double quotes can contain double quotes, newline characters, and carriage returns escaped with slashes. For example, "),a("code",[e._v('"This is a \\"first string\\".\\r\\nThis is a second string."')]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Comment")]),e._v(" - there are two types of comments. Single-line comments use two slashes (//). For example, // This is a single-line comment. Multi-line comments use slash and asterisk symbols and can span multiple lines. For example, "),a("code",[e._v("/* This is a multi-line comment */")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Identifier")]),e._v(" - the names of variables and functions composed of a-z and A-Z letters, UTF-8 symbols, numbers and underscores. The name can start with a letter, underscore, "),a("code",[e._v("@")]),e._v(" or "),a("code",[e._v("$")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" is the name of the variable defined in the "),a("strong",[e._v("data section")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" can also be used to define global variables in the scope of "),a("strong",[e._v("conditions")]),e._v(" and "),a("strong",[e._v("action sections")]),e._v(". Ecosystem contracts can be called using the "),a("code",[e._v("@")]),e._v(" symbol. For example: "),a("code",[e._v("@1NewTable(...)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#types"}},[e._v("#")]),e._v(" Types")]),e._v(" "),a("p",[e._v("Corresponding golang types are specified next to theNeedle types.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("bool")]),e._v(" - bool, "),a("strong",[e._v("false")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("bytes")]),e._v(" - []byte{}, an empty byte array by default;")]),e._v(" "),a("li",[a("strong",[e._v("int")]),e._v(" - int64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - uint64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("array")]),e._v(" - []interface{}, an empty array by default;")]),e._v(" "),a("li",[a("strong",[e._v("map")]),e._v(" - map[string]interface{}, an empty object array by default;")]),e._v(" "),a("li",[a("strong",[e._v("money")]),e._v(" - decimal. Decimal, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("float")]),e._v(" - float64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("string")]),e._v(" - string, an empty string by default;")]),e._v(" "),a("li",[a("strong",[e._v("file")]),e._v(" - map[string]interface{}, an empty object array by default.")])]),e._v(" "),a("p",[e._v("These types of variables are defined with the "),a("code",[e._v("var")]),e._v(" keyword. For example, "),a("code",[e._v("var var1, var2 int")]),e._v(". When defined in this way, a variable will be assigned with a default value by type.")]),e._v(" "),a("p",[e._v("All variable values are of the interface{} type, and then they are assigned to the required golang types. Therefore, for example, array and map types are golang types []interface{} and map[string]interface{}. Both types of arrays can contain elements of any type.")]),e._v(" "),a("h3",{attrs:{id:"expressions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expressions"}},[e._v("#")]),e._v(" Expressions")]),e._v(" "),a("p",[e._v("An expression may include arithmetic operations, logical operations, and function calls. All expressions are evaluated from left to right by priority of operators. If having an equal priority, operators are evaluated from left to right.")]),e._v(" "),a("p",[e._v("Priority of operations from high to low:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Function call and parentheses")]),e._v(" - when a function is called, passed parameters will be calculated from left to right;")]),e._v(" "),a("li",[a("strong",[e._v("Unary Operation")]),e._v(" - logical negation "),a("code",[e._v("!")]),e._v(" and arithmetic sign change "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Multiplication and Division")]),e._v(" - arithmetic multiplication "),a("code",[e._v("*")]),e._v(" and division "),a("code",[e._v("/")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Addition and Subtraction")]),e._v(" - arithmetic addition "),a("code",[e._v("+")]),e._v(" and subtraction "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical comparison")]),e._v(" - "),a("code",[e._v(">=>> >=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical equality and inequality")]),e._v(" - "),a("code",[e._v("== !=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical AND")]),e._v(" - "),a("code",[e._v("&&")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical OR")]),e._v(" - "),a("code",[e._v("||")]),e._v(".")])]),e._v(" "),a("p",[e._v("When evaluating logical AND and OR, both sides of the expression are evaluated in any case.")]),e._v(" "),a("p",[e._v("Needle has no type checking during compilation. When evaluating operands, an attempt is made to convert the type to a more complex type. The type of complexity order can be as follows: "),a("code",[e._v("string, int, float, money")]),e._v(". Only part of the type conversions is implemented. The string type supports addition operations, and the result will be string concatenation. For example, "),a("code",[e._v("string + string = string, money-int = money, int * float = float")]),e._v(".")]),e._v(" "),a("p",[e._v("For functions, type checking is performed on the "),a("code",[e._v("string")]),e._v(" and "),a("code",[e._v("int")]),e._v(" types during execution.")]),e._v(" "),a("p",[a("strong",[e._v("array")]),e._v(" and "),a("strong",[e._v("map")]),e._v(" types can be addressed by index. For the "),a("strong",[e._v("array")]),e._v(" type, the "),a("strong",[e._v("int")]),e._v(" value must be specified as the index. For the "),a("strong",[e._v("map")]),e._v(" type, a variable or "),a("strong",[e._v("string")]),e._v(" value must be specified. If you assign a value to an "),a("strong",[e._v("array")]),e._v(" element whose index is greater than the current maximum index, an empty element will be added to the array. The initial value of these elements is "),a("strong",[e._v("nil")]),e._v(". For example: .. code:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('var my array\nmy[5] = 0\nvar mymap map\nmymap["index"] = my[3]\n')])])]),a("p",[e._v("In expressions of conditional logical values (such as "),a("code",[e._v("if, while, &&, ||, !")]),e._v("), the type is automatically converted to a logical value. If the type is not the default value, it is true.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var mymap map\nvar val string\nif mymap && val {\n...\n}\n")])])]),a("h3",{attrs:{id:"scope"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#scope"}},[e._v("#")]),e._v(" Scope")]),e._v(" "),a("p",[e._v("Braces specify a block that can contain local scope variables. By default, the scope of a variable extends to its own blocks and all nested blocks. In a block, you can define a new variable using the name of an existing variable. However, in this case, external variables with the same name become unavailable.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var a int\na = 3\n{\n var a int\n a = 4\n Println(a) // 4\n}\nPrintln(a) // 3\n")])])]),a("h3",{attrs:{id:"contract-execution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-execution"}},[e._v("#")]),e._v(" Contract execution")]),e._v(" "),a("p",[e._v("When calling a contract, parameters defined in "),a("strong",[e._v("data")]),e._v(" must be passed to it. Before executing a contract, the virtual machine receives these parameters and assigns them to the corresponding variables ($Param). Then, the predefined "),a("strong",[e._v("conditions")]),e._v(" function and "),a("strong",[e._v("action")]),e._v(" function are called.")]),e._v(" "),a("p",[e._v("Errors that occur during contract execution can be divided into two types: form errors and environment errors. Form errors are generated using special commands: "),a("code",[e._v("error, warning, info")]),e._v(" and when the built-in function returns "),a("code",[e._v("err")]),e._v(" not equal to "),a("em",[e._v("nil")]),e._v(".")]),e._v(" "),a("p",[e._v("The Needle language does not handle exceptions. Any error will terminate the execution of contracts. Since a separate stack and structure for saving variable values are created when a contract is executed, the golang garbage collection mechanism will automatically delete these data when a contract is executed.")]),e._v(" "),a("h3",{attrs:{id:"backus-naur-form-bnf"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backus-naur-form-bnf"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"backus-naur-form-bnf"}},[e._v("Backus–Naur Form (BNF)")])]),e._v(" "),a("p",[e._v("In computer science, BNF is a notation technique for context-free syntax and is usually used to describe the syntax of the language used in computing.")]),e._v(" "),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("''''''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] ]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("' | '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'A' |'B' | ... |'Z' |'a' |'b' | ... |'z' | 0x80 | 0x81 | ... | 0xFF\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x20'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x09'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x0D 0x0A'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'!' |'\"' |'$' |''' |'(' |')' |'\\*' |'+' |',' |'-' |'.' |'/ '|'<' |'=' |'>' |'[' |'\\\\' |']' |'_' |'|' |'}' | '{' | | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( |'_') { |'_' | }\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | |'!' |'#' | ... |'[' |']' | ...\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{ |'\\\"' |'\\n' |'\\r'}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'\"' {}'\"' |'\\`' {}'\\`'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'='\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'==' |'!=' |'>' |'<' |'<=' |'>=' |'&&' |'||' |'\\*' |'/' |'+ '|'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {','}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'(' []')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" [{'.' '(' []')'}]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'{''}'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( | | | | | break | continue | return)\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'if [else ]'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'while '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'contract '{'[] {} [] []'}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'data '{' {} '}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" '\"'{}'\"'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'optional | image | file | hidden | text | polymap | map | address | signature:'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'conditions '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'action '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'func '('[{','}]')'[{}] [] '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {',' } \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'.''('[{','}]')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'var {','}'\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{463:function(e,t,a){"use strict";a.r(t);var n=a(51),s=Object(n.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"compiler-and-virtual-machine"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#compiler-and-virtual-machine"}},[e._v("#")]),e._v(" Compiler and Virtual Machine")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#source-code-storage-and-compilation"}},[e._v("Source code storage and compilation")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-machine-structures"}},[e._v("Virtual machine structures")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#vm-structure"}},[e._v("VM Structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#block-structure"}},[e._v("Block structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#objinfo-structure"}},[e._v("ObjInfo structure")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#contractinfo-structure"}},[e._v("ContractInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#fieldinfo-structure"}},[e._v("FieldInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#funcname-structure"}},[e._v("FuncName Structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#extfuncinfo-structure"}},[e._v("ExtFuncInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#varinfo-structure"}},[e._v("VarInfo structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#objextend-value"}},[e._v("ObjExtend value")])])])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#virtual-machine-commands"}},[e._v("Virtual machine commands")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#bytecode-structure"}},[e._v("ByteCode structure")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#command-identifiers"}},[e._v("Command identifiers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#stack-operation-commands"}},[e._v("Stack operation commands")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#runtime-structure"}},[e._v("Runtime structure")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockstack-structure"}},[e._v("blockStack structure")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#runcode-function"}},[e._v("RunCode function")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("Other functions for operations with VM")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#compiler"}},[e._v("Compiler")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#lexical-analyzer"}},[e._v("Lexical analyzer")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")])])])]),e._v(" "),a("li",[a("a",{attrs:{href:"#needle-language"}},[e._v("Needle language")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#lexemes"}},[e._v("Lexemes")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#types"}},[e._v("Types")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#expressions"}},[e._v("Expressions")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#scope"}},[e._v("Scope")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#contract-execution"}},[e._v("Contract execution")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#backus-naur-form-bnf"}},[e._v("Backus–Naur Form (BNF)")])])])])]),e._v(" "),a("p",[e._v("This section involves program compilation and Needle language operations in the Virtual Machine (VM).")]),e._v(" "),a("h2",{attrs:{id:"source-code-storage-and-compilation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#source-code-storage-and-compilation"}},[e._v("#")]),e._v(" Source code storage and compilation")]),e._v(" "),a("p",[e._v("Contracts and functions are written with Golang and stored in the contract tables of ecosystems.")]),e._v(" "),a("p",[e._v("When a contract is executed, its source code will be read from the database and compiled into bytecode.")]),e._v(" "),a("p",[e._v("When a contract is changed, its source code will be updated and saved in the database. Then, the source code is compiled, thereby updating the bytecode in the corresponding virtual machine.")]),e._v(" "),a("p",[e._v("As bytecodes are not physically saved, it will be compiled anew when the program is executed again.")]),e._v(" "),a("p",[e._v("The entire source code described in the contract table of each ecosystem is compiled into a virtual machine in strict order, and the status of the virtual machine is the same on all nodes.")]),e._v(" "),a("p",[e._v("When the contract is called, the virtual machine will not change its status in any way. The execution of any contract or calling of any function occurs on a separate running stack created during each external call.")]),e._v(" "),a("p",[e._v("Each ecosystem can have a so-called virtual ecosystem, which can be used within a node in conjunction with tables outside the blockchain, without direct affection on the blockchain or other virtual ecosystems. In this case, the node hosting such a virtual ecosystem will compile its contract and create its own virtual machine.")]),e._v(" "),a("h2",{attrs:{id:"virtual-machine-structures"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-machine-structures"}},[e._v("#")]),e._v(" Virtual machine structures")]),e._v(" "),a("h3",{attrs:{id:"vm-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vm-structure"}},[e._v("#")]),e._v(" VM Structure")]),e._v(" "),a("p",[e._v("A virtual machine is organized in memory as a structure like below.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type VM struct {\n Block\n ExtCost func(string) int64\n FuncCallsDB map[string]struct{}\n Extern bool\n ShiftContract int64\n logger *log.Entry\n}\n")])])]),a("p",[e._v("A VM structure has the following elements:")]),e._v(" "),a("ul",[a("li",[e._v("Block - contains a "),a("a",{attrs:{href:"#block-structure"}},[e._v("block structure")]),e._v(";")]),e._v(" "),a("li",[e._v("ExtCost - a function returns the cost of executing an external golang function;")]),e._v(" "),a("li",[e._v("FuncCallsDB - a collection of Golang function names. This function returns the execution cost as the first parameter. These functions use EXPLAIN to calculate the cost of database processing;")]),e._v(" "),a("li",[e._v("Extern - a Boolean flag indicating whether a contract is an external contract. It is set to true when a VM is created. Contracts called are not displayed when the code is compiled. In other words, it allows to call the contract code determined in the future;")]),e._v(" "),a("li",[e._v("ShiftContract - ID of the first contract in the VM;")]),e._v(" "),a("li",[e._v("logger - VM error log output.")])]),e._v(" "),a("h3",{attrs:{id:"block-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-structure"}},[e._v("#")]),e._v(" Block structure")]),e._v(" "),a("p",[e._v("A virtual machine is a tree composed of "),a("strong",[e._v("Block type")]),e._v(" objects.")]),e._v(" "),a("p",[e._v("A block is an independent unit that contains some bytecodes. In simple terms, everything you put in the braces ("),a("code",[e._v("{}")]),e._v(") in the language is a block.")]),e._v(" "),a("p",[e._v("For example, the following code would create a block with functions. This block also contains another block with an if statement, which contains a block with a while statement.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("func my() {\n if true {\n while false {\n ...\n }\n }\n}\n")])])]),a("p",[e._v("The block is organized in the memory as a structure like below.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type Block struct {\n Objects map[string]*ObjInfo\n Type int\n Owner *OwnerInfo\n Info interface{}\n Parent *Block\n Vars []reflect.Type\n Code ByteCodes\n Children Blocks\n}\n")])])]),a("p",[e._v("A block structure consists of the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Objects")]),e._v(" - a map of internal objects of the pointer type "),a("a",{attrs:{href:"#objInfo-structure"}},[e._v("ObjInfo")]),e._v(". For example, if there is a variable in the block, you can get information about it by its name;")]),e._v(" "),a("li",[a("strong",[e._v("Type")]),e._v(" - the type of the block. For a function block, its type is "),a("strong",[e._v("ObjFunc")]),e._v("; for a contract block, its type is "),a("strong",[e._v("ObjContract")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - a structure of "),a("strong",[e._v("OwnerInfo")]),e._v(" pointer type. This structure contains information about the owner of the compiled contract, which is specified during contract compilation or obtained from the "),a("strong",[e._v("contracts")]),e._v(" table;")]),e._v(" "),a("li",[a("strong",[e._v("Info")]),e._v(" - it contains information about the object, which depends on the block type;")]),e._v(" "),a("li",[a("strong",[e._v("Parent")]),e._v(" - a pointer to the parent block;")]),e._v(" "),a("li",[a("strong",[e._v("Vars")]),e._v(" - an array containing the types of current block variables;")]),e._v(" "),a("li",[a("strong",[e._v("Code")]),e._v(" - the bytecode of the block itself, which will be executed when the control rights are passed to the block, for example, function calls or loop bodies;")]),e._v(" "),a("li",[a("strong",[e._v("Children")]),e._v(" - an array containing sub-blocks, such as function nesting, loops, conditional operators.")])]),e._v(" "),a("h3",{attrs:{id:"objinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#objinfo-structure"}},[e._v("#")]),e._v(" ObjInfo structure")]),e._v(" "),a("p",[e._v("The ObjInfo structure contains information about internal objects.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ObjInfo struct {\n Type int\n Value interface{}\n}\n")])])]),a("p",[e._v("The ObjInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Type")]),e._v(" is the object type, which has any of the following values:\n"),a("ul",[a("li",[a("strong",[e._v("ObjContract")]),e._v(" – "),a("a",{attrs:{href:"#contractInfo-structure"}},[e._v("contract")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("ObjFunc")]),e._v(" - function;")]),e._v(" "),a("li",[a("strong",[e._v("ObjExtFunc")]),e._v(" - external golang function;")]),e._v(" "),a("li",[a("strong",[e._v("ObjVar")]),e._v(" - variable;")]),e._v(" "),a("li",[a("strong",[e._v("ObjExtend")]),e._v(" - $name variable.")])])]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" – it contains the structure of each type.")])]),e._v(" "),a("h4",{attrs:{id:"contractinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contractinfo-structure"}},[e._v("#")]),e._v(" ContractInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjContract")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a "),a("strong",[e._v("ContractInfo")]),e._v(" structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ContractInfo struct {\n ID uint32\n Name string\n Owner *OwnerInfo\n Used map[string]bool\n Tx *[]*FieldInfo\n}\n")])])]),a("p",[e._v("The ContractInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("ID")]),e._v(" - contract ID, displayed in the blockchain when calling the contract;")]),e._v(" "),a("li",[a("strong",[e._v("Name")]),e._v(" - contract name;")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - other information about the contract;")]),e._v(" "),a("li",[a("strong",[e._v("Used")]),e._v(" - map of contracts names that has been called;")]),e._v(" "),a("li",[a("strong",[e._v("Tx")]),e._v(" - a data array described in the "),a("RouterLink",{attrs:{to:"/it/topics/script.html#data-section"}},[e._v("data section")]),e._v(" of the contract.")],1)]),e._v(" "),a("h4",{attrs:{id:"fieldinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fieldinfo-structure"}},[e._v("#")]),e._v(" FieldInfo structure")]),e._v(" "),a("p",[e._v("The FieldInfo structure is used in the "),a("strong",[e._v("ContractInfo")]),e._v(" structure and describes elements in "),a("RouterLink",{attrs:{to:"/it/topics/script.html#data-section"}},[e._v("data section")]),e._v(" of a contract.")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FieldInfo struct {\n Name string\n Type reflect.Type\n Original uint32\n Tags string\n}\n")])])]),a("p",[e._v("The FieldInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Name")]),e._v(" - field name;")]),e._v(" "),a("li",[a("strong",[e._v("Type")]),e._v(" - field type;")]),e._v(" "),a("li",[a("strong",[e._v("Original")]),e._v(" - optional field;")]),e._v(" "),a("li",[a("strong",[e._v("Tags")]),e._v(" - additional labels for this field.")])]),e._v(" "),a("h4",{attrs:{id:"funcinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#funcinfo-structure"}},[e._v("#")]),e._v(" FuncInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the ObjFunc type, and the Value field contains a FuncInfo structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FuncInfo struct {\n Params []reflect.Type\n Results []reflect.Type\n Names *map[string]FuncName\n Variadic bool\n ID uint32\n}\n")])])]),a("p",[e._v("The FuncInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Params")]),e._v(" - an array of parameter types;")]),e._v(" "),a("li",[a("strong",[e._v("Results")]),e._v(" - an array of returned types;")]),e._v(" "),a("li",[a("strong",[e._v("Names")]),e._v(" - map of data for tail functions, for example, "),a("code",[e._v("DBFind().Columns ()")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Variadic")]),e._v(" - true if the function can have a variable number of parameters;")]),e._v(" "),a("li",[a("strong",[e._v("ID")]),e._v(" - function ID.")])]),e._v(" "),a("h4",{attrs:{id:"funcname-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#funcname-structure"}},[e._v("#")]),e._v(" FuncName Structure")]),e._v(" "),a("p",[e._v("The FuncName structure is used for FuncInfo and describes the data of a tail function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type FuncName struct {\n Params []reflect.Type\n Offset []int\n Variadic bool\n}\n")])])]),a("p",[e._v("The FuncName structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Params")]),e._v(" - an array of parameter types;")]),e._v(" "),a("li",[a("strong",[e._v("Offset")]),e._v(" - the array of offsets for these variables. In fact, the values of all parameters in a function can be initialized with the dot .;")]),e._v(" "),a("li",[a("strong",[e._v("Variadic")]),e._v(" - true if the tail function can have a variable number of parameters.")])]),e._v(" "),a("h4",{attrs:{id:"extfuncinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#extfuncinfo-structure"}},[e._v("#")]),e._v(" ExtFuncInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the ObjExtFunc type, and the Value field contains a ExtFuncInfo structure. It is used to describe golang functions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ExtFuncInfo struct {\n Name string\n Params []reflect.Type\n Results []reflect.Type\n Auto []string\n Variadic bool\n Func interface{}\n}\n")])])]),a("p",[e._v("The ExtFuncInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Name")]),e._v(", "),a("strong",[e._v("Params")]),e._v(", "),a("strong",[e._v("Results")]),e._v(" parameters have the same structure as "),a("a",{attrs:{href:"#funcinfo-structure"}},[e._v("FuncInfo")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Auto")]),e._v(" - an array of variables. If any, passes to the function as an additional parameter. For example, a variable of type SmartContract sc;")]),e._v(" "),a("li",[a("strong",[e._v("Func")]),e._v(" - golang functions.")])]),e._v(" "),a("h4",{attrs:{id:"varinfo-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#varinfo-structure"}},[e._v("#")]),e._v(" VarInfo structure")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjVar")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a "),a("strong",[e._v("VarInfo")]),e._v(" structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type VarInfo struct {\n Obj *ObjInfo\n Owner *Block\n}\n")])])]),a("p",[e._v("The VarInfo structure has the following elements:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Obj")]),e._v(" - information about the type and value of the variable;")]),e._v(" "),a("li",[a("strong",[e._v("Owner")]),e._v(" - Pointer to the owner block.")])]),e._v(" "),a("h4",{attrs:{id:"objextend-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#objextend-value"}},[e._v("#")]),e._v(" ObjExtend value")]),e._v(" "),a("p",[e._v("Pointing to the "),a("strong",[e._v("ObjExtend")]),e._v(" type, and the "),a("strong",[e._v("Value")]),e._v(" field contains a string containing the name of the variable or function.")]),e._v(" "),a("h2",{attrs:{id:"virtual-machine-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-machine-commands"}},[e._v("#")]),e._v(" Virtual machine commands")]),e._v(" "),a("h3",{attrs:{id:"bytecode-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bytecode-structure"}},[e._v("#")]),e._v(" ByteCode structure")]),e._v(" "),a("p",[e._v("A bytecode is a sequence of "),a("strong",[e._v("ByteCode")]),e._v(" type structures.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type ByteCode struct {\n Cmd uint16\n Value interface{}\n}\n")])])]),a("p",[e._v("This structure has the following fields:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Cmd")]),e._v(" - the identifier of the storage commands;")]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" - contains the operand (value).")])]),e._v(" "),a("p",[e._v("In general, commands perform an operation on the top element of the stack and writes the result value into it if necessary.")]),e._v(" "),a("h3",{attrs:{id:"command-identifiers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#command-identifiers"}},[e._v("#")]),e._v(" Command identifiers")]),e._v(" "),a("p",[e._v("Identifiers of the virtual machine commands are described in the vm/cmds_list.go file.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("cmdPush")]),e._v(" – put a value from the Value field to the stack. For example, put numbers and lines to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdVar")]),e._v(" - put the value of a variable to the stack. Value contains a pointer to the VarInfo structure and information about the variable;")]),e._v(" "),a("li",[a("strong",[e._v("cmdExtend")]),e._v(" – put the value of an external variable to the stack. Value contains a string with the variable name (starting with $);")]),e._v(" "),a("li",[a("strong",[e._v("cmdCallExtend")]),e._v(" – call an external function (starting with $). The parameters of the function are obtained from the stack, and the results are placed to the stack. Value contains a function name (starting with $);")]),e._v(" "),a("li",[a("strong",[e._v("cmdPushStr")]),e._v(" – put the string in Value to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdCall")]),e._v(" - calls the virtual machine function. Value contains a "),a("strong",[e._v("ObjInfo")]),e._v(" structure. This command is applicable to the "),a("strong",[e._v("ObjExtFunc")]),e._v(" golang function and "),a("strong",[e._v("ObjFunc")]),e._v(" Needle function. If a function is called, its parameters will be obtained from the stack and the result values will be placed to the stack;")]),e._v(" "),a("li",[a("strong",[e._v("cmdCallVari")]),e._v(" - similar to the "),a("strong",[e._v("cmdCall")]),e._v(" command, it calls the virtual machine function. This command is used to call a function with a variable number of parameters;")]),e._v(" "),a("li",[a("strong",[e._v("cmdReturn")]),e._v(" - used to exit the function. The return values will be put to the stack, and the Value field is not used;")]),e._v(" "),a("li",[a("strong",[e._v("cmdIf")]),e._v(" – transfer control to the bytecode in the "),a("strong",[e._v("block")]),e._v(" structure, which is passed in the Value field. The control will be transferred to the stack only when the top element of the stack is called by the "),a("em",[e._v("valueToBool")]),e._v(" function and returned "),a("code",[e._v("true")]),e._v(". Otherwise, the control will be transferred to the next command;")]),e._v(" "),a("li",[a("strong",[e._v("cmdElse")]),e._v(" - this command works in the same way as the "),a("strong",[e._v("cmdIf")]),e._v(", but only when the top element of the stack is called by the valueToBool function and returned "),a("code",[e._v("false")]),e._v(", the control will be transferred to the specified block;")]),e._v(" "),a("li",[a("strong",[e._v("cmdAssignVar")]),e._v(" – get a list of variables of type "),a("strong",[e._v("VarInfo")]),e._v(" from Value. These variables use the "),a("strong",[e._v("cmdAssign")]),e._v(" command to get the value;")]),e._v(" "),a("li",[a("strong",[e._v("cmdAssign")]),e._v(" – assign the value in the stack to the variable obtained by the "),a("strong",[e._v("cmdAssignVar")]),e._v(" command;")]),e._v(" "),a("li",[a("strong",[e._v("cmdLabel")]),e._v(" - defines a label when control is returned during the while loop;")]),e._v(" "),a("li",[a("strong",[e._v("cmdContinue")]),e._v(" - this command transfers control to the "),a("strong",[e._v("cmdLabel")]),e._v(" label. When executing a new iteration of the loop, Value is not used;")]),e._v(" "),a("li",[a("strong",[e._v("cmdWhile")]),e._v(" – use valueToBool to check the top element of the stack. If this value is "),a("code",[e._v("true")]),e._v(", the "),a("strong",[e._v("block")]),e._v(" structure will be called from the value field;")]),e._v(" "),a("li",[a("strong",[e._v("cmdBreak")]),e._v(" - exits the loop;")]),e._v(" "),a("li",[a("strong",[e._v("cmdIndex")]),e._v(" – put the value in map or array into the stack by index, without using Value. For example, "),a("code",[e._v("(map | array) (index value) => (map | array [index value])")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSetIndex")]),e._v(" – assigns the value of the top element of the stack to elements of map or array, without using Value. For example, "),a("code",[e._v("(map | array) (index value) (value) => (map | array)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdFuncName")]),e._v(" - adds parameters that are passed using sequential descriptions divided by dot . For example, "),a("code",[e._v("func name => Func (...) .Name (...)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdUnwrapArr")]),e._v(" - defines a Boolean flag if the top element of the stack is an array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdMapInit")]),e._v(" – initializes the value of map;")]),e._v(" "),a("li",[a("strong",[e._v("cmdArrayInit")]),e._v(" – initializes the value of array;")]),e._v(" "),a("li",[a("strong",[e._v("cmdError")]),e._v(" - this command is created when a contract or function terminates with a specified "),a("code",[e._v("error, warning, info")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"stack-operation-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stack-operation-commands"}},[e._v("#")]),e._v(" Stack operation commands")]),e._v(" "),a("blockquote",[a("p",[e._v("Note")])]),e._v(" "),a("blockquote",[a("p",[e._v("In the current version, automatic type conversion is not fully applicable for these commands. For example,")])]),e._v(" "),a("blockquote",[a("p",[a("code",[e._v("string + float | int | decimal => float | int | decimal, float + int | str => float, but int + string => runtime error")]),e._v(".")])]),e._v(" "),a("p",[e._v("The following are commands for direct stack processing. The Value field is not used in these commands.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("cmdNot")]),e._v(" - logical negation. "),a("code",[e._v("(val) => (!ValueToBool(val))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSign")]),e._v(" - change of sign. "),a("code",[e._v("(val) => (-val)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAdd")]),e._v(" - addition. "),a("code",[e._v("(val1)(val2) => (val1 + val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdSub")]),e._v(" - subtraction. "),a("code",[e._v("(val1)(val2) => (val1-val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdMul")]),e._v(" - multiplication. "),a("code",[e._v("(val1)(val2) => (val1 * val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdDiv")]),e._v(" - division. "),a("code",[e._v("(val1)(val2) => (val1 / val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdAnd")]),e._v(" - logical AND. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) && valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdOr")]),e._v(" - logical OR. "),a("code",[e._v("(val1)(val2) => (valueToBool(val1) || valueToBool(val2))")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdEqual")]),e._v(" - equality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 == val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotEq")]),e._v(" - inequality comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 != val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdLess")]),e._v(" - less-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 (val1 >= val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdGreat")]),e._v(" - greater-than comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1> val2)")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("cmdNotGreat")]),e._v(" - less-than-or-equal comparison, bool is returned. "),a("code",[e._v("(val1)(val2) => (val1 <= val2)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"runtime-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runtime-structure"}},[e._v("#")]),e._v(" Runtime structure")]),e._v(" "),a("p",[e._v("The execution of bytecodes will not affect the virtual machine. For example, it allows various functions and contracts to run simultaneously in a single virtual machine. The Runtime structure is used to run functions and contracts, as well as any expressions and bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type RunTime struct {\n stack []interface{}\n blocks []*blockStack\n vars []interface{}\n extend *map[string]interface{}\n vm *VM\n cost int64\n err error\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("stack")]),e._v(" - the stack to execute the bytecode;")]),e._v(" "),a("li",[a("strong",[e._v("blocks")]),e._v(" - block calls stack;")]),e._v(" "),a("li",[a("strong",[e._v("vars")]),e._v(" - stack of variables. Its variable will be added to the stack of variables when the bytecode is called in the block. After exiting the block, the size of the stack of variables will return to the previous value;")]),e._v(" "),a("li",[a("strong",[e._v("extend")]),e._v(" - a pointer to map with values of external variables ("),a("code",[e._v("$name")]),e._v(");")]),e._v(" "),a("li",[a("strong",[e._v("vm")]),e._v(" - a virtual machine pointer;")]),e._v(" "),a("li",[a("strong",[e._v("cost")]),e._v(" - fuel unit of the resulting cost of execution;")]),e._v(" "),a("li",[a("strong",[e._v("err")]),e._v(" - error occurred during execution.")])]),e._v(" "),a("h4",{attrs:{id:"blockstack-structure"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockstack-structure"}},[e._v("#")]),e._v(" blockStack structure")]),e._v(" "),a("p",[e._v("The blockStack structure is used in the Runtime structure.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type blockStack struct {\n Block *Block\n Offset int\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Block")]),e._v(" - a pointer to the block being executed;")]),e._v(" "),a("li",[a("strong",[e._v("Offset")]),e._v(" – the offset of the last command executed in the bytecode of the specified block.")])]),e._v(" "),a("h3",{attrs:{id:"runcode-function"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#runcode-function"}},[e._v("#")]),e._v(" RunCode function")]),e._v(" "),a("p",[e._v("Bytecodes are executed in the "),a("strong",[e._v("RunCode")]),e._v(" function. It contains a loop that performs the corresponding operation for each bytecode command. Before processing a bytecode, the data required must be initialized.")]),e._v(" "),a("p",[e._v("New blocks are added to other blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = append(rt.blocks, &blockStack{block, len(rt.vars)})\n")])])]),a("p",[e._v("Next, get the information of relevant parameters of the tail function. These parameters are contained in the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var namemap map[string][]interface{}\nif block.Type == ObjFunc && block.Info.(*FuncInfo).Names != nil {\n if rt.stack[len(rt.stack)-1] != nil {\n namemap = rt.stack[len(rt.stack)-1].(map[string][]interface{})\n }\n rt.stack = rt.stack[:len(rt.stack)-1]\n}\n")])])]),a("p",[e._v("Then, all variables defined in the current block must be initialized with their initial values.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("start := len(rt.stack)\nvaroff := len(rt.vars)\nfor vkey, vpar := range block.Vars {\n rt.cost--\n var value interface{}\n")])])]),a("p",[e._v("Since variables in the function are also variables, we need to retrieve them from the last element of the stack in the order described by the function itself.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if block.Type == ObjFunc && vkey = len(params.Params)-1 {\n")])])]),a("p",[e._v("If variable parameters passed belongs to a variable number of parameters, then these parameters will be combined into an array of variables.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" off := varoff + params.Offset[len(params.Params)-1]\n rt.vars[off] = append(rt.vars[off].([]interface{}), value)\n } else {\n rt.vars[varoff+params.Offset[i]] = value\n }\n }\n }\n}\n")])])]),a("p",[e._v("After that, all we have to do is delete values passed from the top of the stack as function parameters, thereby moving the stack. We have copied their values into a variable array.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if block.Type == ObjFunc {\n start -= len(block.Info.(*FuncInfo).Params)\n}\n")])])]),a("p",[e._v("When a bytecode command loop finished, we must clear the stack correctly.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("last := rt.blocks[len(rt.blocks)-1]\n")])])]),a("p",[e._v("Delete the current block from the stack of blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("rt.blocks = rt.blocks[:len(rt.blocks)-1]\nif status == statusReturn {\n")])])]),a("p",[e._v("If successfully exited from a function already executed, we will add the return value to the end of the previous stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" if last.Block.Type == ObjFunc {\n for count := len(last.Block.Info.(*FuncInfo).Results); count > 0; count-- {\n rt.stack[start] = rt.stack[len(rt.stack)-count]\n start++\n }\n status = statusNormal\n } else {\n")])])]),a("p",[e._v("As you can see, if we do not execute the function, then we will not restore the stack status and exit the function as is. The reason is that loops and conditional structures that have been executed in the function are also bytecode blocks.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" return\n\n }\n}\n\nrt.stack = rt.stack[:start]\n")])])]),a("h3",{attrs:{id:"other-functions-for-operations-with-vm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#other-functions-for-operations-with-vm"}},[e._v("#")]),e._v(" Other functions for operations with VM")]),e._v(" "),a("p",[e._v("Your may create a virtual machine with the "),a("strong",[e._v("NewVM")]),e._v(" function. Each virtual machine will be added with four functions, such as "),a("strong",[e._v("ExecContract")]),e._v(", "),a("strong",[e._v("MemoryUsage")]),e._v(", "),a("strong",[e._v("CallContract")]),e._v(", and "),a("strong",[e._v("Settings")]),e._v(", through the "),a("strong",[e._v("Extend")]),e._v(" function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for key, item := range ext.Objects {\n fobj := reflect.ValueOf(item).Type()\n")])])]),a("p",[e._v("We traverse all the objects passed and only look at the functions.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" switch fobj.Kind() {\n case reflect.Func:\n")])])]),a("p",[e._v("We fill the "),a("strong",[e._v("ExtFuncInfo")]),e._v(" structure according to the information received about the function, and add its structure to the top level map "),a("strong",[e._v("Objects")]),e._v(" by name.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" data := ExtFuncInfo{key, make([]reflect.Type, fobj.NumIn()), make([]reflect.Type, fobj.NumOut()),\n make([]string, fobj.NumIn()), fobj.IsVariadic(), item}\n for i := 0; i 0 && ((*lexems)[i-1].Type == isComma || (*lexems)[i-1].Type == lexOper) {\n continue main\n }\n for k := len(buffer) - 1; k >= 0; k-- {\n if buffer[k].Cmd == cmdSys {\n continue main\n }\n}\nbreak main\n\n")])])]),a("p",[e._v("In general, the algorithm itself corresponds to an algorithm for converting to inverse Polish notation. With the consideration of the calling of necessary contracts, functions, and indexes, as well as other things not encountered during parsing and options for parsing lexIdent type tokens, then, variables, functions or contracts with this name will be checked. If nothing is found and this is not a function or contract call, then it will indicate an error.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("objInfo, tobj := vm.findObj(lexem.Value.(string), block)\nif objInfo == nil && (!vm.Extern || i> *ind || i >= len(*lexems)-2 || (*lexems)[i+1].Type != isLPar) {\n return fmt.Errorf(`unknown identifier %s`, lexem.Value.(string))\n}\n")])])]),a("p",[e._v("We may encounter such a situation, and the contract call will be described later. In this example, if no functions or variables with the same name are found, then we think it is necessary to call a contract. In this compiled language, there is no difference between contracts and function calls. But we need to call the contract through the "),a("strong",[e._v("ExecContract")]),e._v(" function used in the bytecode.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if objInfo.Type == ObjContract {\n if objInfo.Value != nil {\n objContract = objInfo.Value.(*Block)\n }\n objInfo, tobj = vm.findObj(`ExecContract`, block)\n isContract = true\n}\n")])])]),a("p",[e._v("We record the number of variables so far in "),a("code",[e._v("count")]),e._v(", which will also be written to the stack along with the number of function parameters. In each subsequent detection of parameters, we only need to increase this number by one unit at the last element of the stack.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("count := 0\nif (*lexems)[i+2].Type != isRPar {\n count++\n}\n")])])]),a("p",[e._v("We have a list Used of called parameters for contracts, then we need to mark the case of the contract is called. If the contract is called without parameters, we must add two empty parameters to call "),a("strong",[e._v("ExecContract")]),e._v(" to get at least two parameters.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('if isContract {\n name := StateName((*block)[0].Info.(uint32), lexem.Value.(string))\n for j := len(*block) - 1; j >= 0; j-- {\n topblock := (*block)[j]\n if topblock.Type == ObjContract {\n if topblock.Info.(*ContractInfo).Used == nil {\n topblock.Info.(*ContractInfo).Used = make(map[string]bool)\n }\n topblock.Info.(*ContractInfo).Used[name] = true\n }\n }\n bytecode = append(bytecode, &ByteCode{cmdPush, name})\n if count == 0 {\n count = 2\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n bytecode = append(bytecode, &ByteCode{cmdPush, ""})\n }\n count++\n}\n')])])]),a("p",[e._v("If we see that there is a square bracket next, then we add the "),a("strong",[e._v("cmdIndex")]),e._v(" command to get the value by the index.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("if (*lexems)[i+1].Type == isLBrack {\n if objInfo == nil || objInfo.Type != ObjVar {\n return fmt.Errorf(`unknown variable %s`, lexem.Value.(string))\n }\n buffer = append(buffer, &ByteCode{cmdIndex, 0})\n}\n")])])]),a("p",[e._v("The "),a("strong",[e._v("CompileBlock")]),e._v(" function can generate object trees and expression-independent bytecodes. The compilation process is based on a finite state machine, just like a lexical analyzer, but with the following differences. First, we do not use symbols but tokens; second, we will immediately describe the "),a("em",[e._v("states")]),e._v(" variables in all states and transitions. It represents an array of objects indexed by token type. Each token has a structure of "),a("em",[e._v("compileState")]),e._v(", and a new state is specified in "),a("em",[e._v("NewState")]),e._v(". If it is clear what structure we have resolved, we can specify the function of the handler in the "),a("em",[e._v("Func")]),e._v(" field.")]),e._v(" "),a("p",[e._v("Let us review the main state as an example.")]),e._v(" "),a("p",[e._v("If we encounter a newline or comment, then we will remain in the same state. If we encounter the "),a("strong",[e._v("contract")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateContract")]),e._v(" and start parsing the structure. If we encounter the "),a("strong",[e._v("func")]),e._v(" keyword, then we change the state to "),a("em",[e._v("stateFunc")]),e._v(". If other tokens are received, the function generating error will be called.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateRoot\n lexNewLine: {stateRoot, 0},\n lexKeyword | (keyContract << 8): {stateContract | statePush, 0},\n lexKeyword | (keyFunc << 8): {stateFunc | statePush, 0},\n lexComment: {stateRoot, 0},\n 0: {errUnknownCmd, cfError},\n},\n")])])]),a("p",[e._v("Suppose we encountered the "),a("strong",[e._v("func")]),e._v(" keyword and we have changed the state to "),a("em",[e._v("stateFunc")]),e._v(". Since the function name must follow the "),a("strong",[e._v("func")]),e._v(" keyword, we will keep the same state when changing the function name. For all other tokens, we will generate corresponding errors. If we get the function name in the token identifier, then we go to the "),a("em",[e._v("stateFParams")]),e._v(" state, where we can get the parameters of the function.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{// stateFunc\n lexNewLine: {stateFunc, 0},\n lexIdent: {stateFParams, cfNameBlock},\n 0: {errMustName, cfError},\n},\n")])])]),a("p",[e._v("At the same time as the above operations, we will call the "),a("strong",[e._v("fNameBlock")]),e._v(" function. It should be noted that the Block structure is created with the statePush mark, where we get it from the buffer and fill it with the data we need. The "),a("strong",[e._v("fNameBlock")]),e._v(" function is suitable for contracts and functions (including those nested in them). It fills the "),a("em",[e._v("Info")]),e._v(" field with the corresponding structure and writes itself into the "),a("em",[e._v("Objects")]),e._v(" of the parent block. In this way, we can call the function or contract with the specified name. Similarly, we create corresponding functions for all states and variables. These functions are usually very small and perform some duties when constructing the virtual machine tree.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("func fNameBlock(buf *[]*Block, state int, lexem *Lexem) error {\n var itype int\n prev := (*buf)[len(*buf)-2]\n fblock := (*buf)[len(*buf)-1]\n name := lexem.Value.(string)\n switch state {\n case stateBlock:\n itype = ObjContract\n name = StateName((*buf)[0].Info.(uint32), name)\n fblock.Info = &ContractInfo{ID: uint32(len(prev.Children) - 1), Name: name,\n Owner: (*buf)[0].Owner}\n default:\n itype = ObjFunc\n fblock.Info = &FuncInfo{}\n }\n fblock.Type = itype\n prev.Objects[name] = &ObjInfo{Type: itype, Value: fblock}\n return nil\n}\n")])])]),a("p",[e._v("For the "),a("strong",[e._v("CompileBlock")]),e._v(" function, it just traverses all the tokens and switches states according to the tokens described in states. Almost all additional tokens correspond to additional program codes.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("statePush")]),e._v(" – adds the "),a("strong",[e._v("Block")]),e._v(" object to the object tree;")]),e._v(" "),a("li",[a("strong",[e._v("statePop")]),e._v(" - used when the block ends with a closing brace;")]),e._v(" "),a("li",[a("strong",[e._v("stateStay")]),e._v(" - you need to keep the current mark when changing to a new state;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBlock")]),e._v(" - transition to the "),a("strong",[e._v("stateBlock")]),e._v(" state for processing "),a("em",[e._v("while")]),e._v(" and "),a("em",[e._v("if")]),e._v(". After processing expressions, you need to process blocks within the braces;")]),e._v(" "),a("li",[a("strong",[e._v("stateToBody")]),e._v(" - transition to the "),a("strong",[e._v("stateBody")]),e._v(" state;")]),e._v(" "),a("li",[a("strong",[e._v("stateFork")]),e._v(" - save the marked position. When the expression starts with an identifier or a name with "),a("code",[e._v("$")]),e._v(", we can make function calls or assignments;")]),e._v(" "),a("li",[a("strong",[e._v("stateToFork")]),e._v(" – used to get the token stored in "),a("strong",[e._v("stateFork")]),e._v(", which will be passed to the process function;")]),e._v(" "),a("li",[a("strong",[e._v("stateLabel")]),e._v(" – used to insert "),a("strong",[e._v("cmdLabel")]),e._v(" commands. "),a("em",[e._v("while")]),e._v(" structure requires this flag;")]),e._v(" "),a("li",[a("strong",[e._v("stateMustEval")]),e._v(" – check the availability of conditional expressions at the beginning of "),a("em",[e._v("if")]),e._v(" and "),a("em",[e._v("while")]),e._v(" structures.")])]),e._v(" "),a("p",[e._v("In addition to the "),a("strong",[e._v("CompileBlock")]),e._v(" function, the "),a("strong",[e._v("FlushBlock")]),e._v(" function should also be mentioned. But the problem is that the block tree is constructed independently of existing virtual machines. More precisely, we obtain information about functions and contracts that exist in a virtual machine, but we collect the compiled blocks into a separate tree. Otherwise, if an error occurs during compilation, we must roll back the virtual machine to the previous state. Therefore, we go to the compilation tree separately, but after the compilation is successful, the "),a("strong",[e._v("FlushContract")]),e._v(" function must be called. This function adds the completed block tree to the current virtual machine. The compilation phase is now complete.")]),e._v(" "),a("h2",{attrs:{id:"lexical-analyzer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexical-analyzer"}},[e._v("#")]),e._v(" Lexical analyzer")]),e._v(" "),a("p",[e._v("The lexical analyzer processes incoming strings and forms a sequence of tokens of the following types :")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - system token, for example: "),a("code",[e._v("{}, [], (), ,, .")]),e._v(" etc;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - operation token, for example: "),a("code",[e._v("+, -, /, \\, *")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - number;")]),e._v(" "),a("li",[a("strong",[e._v("lexident")]),e._v(" - identifier;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewline")]),e._v(" - newline character;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comment;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - keyword;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" - type;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" - reference to external variables or functions, for example: "),a("code",[e._v("$myname")]),e._v(".")])]),e._v(" "),a("p",[e._v("In the current version, a conversion table (finite state machine) is initially constructed with the help of the "),a("a",{attrs:{href:"#lextablelextablego"}},[e._v("script/lextable/lextable.go")]),e._v(" file to parse the tokens, which is written to the lex_table.go file. In general, you can get rid of the conversion table initially generated by the file and create a conversion table in the memory ("),a("code",[e._v("init()")]),e._v(") immediately upon startup. The lexical analysis itself occurs in the lexParser function in the "),a("a",{attrs:{href:"#lex-go"}},[e._v("lex.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lextable-lextable-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lextable-lextable-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lextable-lextable-go"}},[e._v("lextable/lextable.go")])]),e._v(" "),a("p",[e._v("Here we define the alphabet to operate and describe how the finite state machine changes from one state to another based on the next received symbol.")]),e._v(" "),a("p",[a("em",[e._v("states")]),e._v(" is a JSON object containing a list of states.")]),e._v(" "),a("p",[e._v("Except for specific symbols, "),a("code",[e._v("d")]),e._v(" stands for all symbols not specified in the state.\n"),a("code",[e._v("n")]),e._v(" stands for 0x0a, "),a("code",[e._v("s")]),e._v(" stands for space, "),a("code",[e._v("q")]),e._v(" stands for backquote, "),a("code",[e._v("Q")]),e._v(" stands for double quote, "),a("code",[e._v("r")]),e._v(" stands for character >= 128, "),a("code",[e._v("a")]),e._v(" stands for AZ and az, and "),a("code",[e._v("1")]),e._v(" stands for 1- 9.")]),e._v(" "),a("p",[e._v("The name of these states are keys, and the possible values are listed in the value object. Then, there is a new state to make transitions for each group. Then there is the name of the token. If we need to return to the initial state, the third parameter is the service token, which indicates how to handle the current symbol.")]),e._v(" "),a("p",[e._v("For example, we have the main state and the incoming characters "),a("code",[e._v("/")]),e._v(", "),a("code",[e._v('"/": ["solidus", "", "push next"]')]),e._v(",")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("push")]),e._v(" - gives the command to remember that it is in a separate stack ;")]),e._v(" "),a("li",[a("strong",[e._v("next")]),e._v(" - goes to the next character, and at the same time we change the status to "),a("strong",[e._v("solidus")]),e._v(". After that, gets the next character and check the status of "),a("strong",[e._v("solidus")]),e._v(".")])]),e._v(" "),a("p",[e._v("If the next character has "),a("code",[e._v("/")]),e._v(" or "),a("code",[e._v("/*")]),e._v(", then we go to the comment "),a("strong",[e._v("comment")]),e._v(" state because they start with "),a("code",[e._v("//")]),e._v(" or "),a("code",[e._v("/*")]),e._v(". Obviously, each comment has a different state afterwards, because they end with a different symbol.")]),e._v(" "),a("p",[e._v("If the next character is not "),a("code",[e._v("/")]),e._v(" and "),a("code",[e._v("*")]),e._v(", then we record everything in the stack as "),a("strong",[e._v("lexOper")]),e._v(" type tags, clear the stack and return to the main state.")]),e._v(" "),a("p",[e._v("The following module converts the state tree into a numeric array and writes it into the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("p",[e._v("In the first loop:")]),e._v(" "),a("p",[e._v("We form an alphabet of valid symbols.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("for ind, ch := range alphabet {\n i := byte(ind)\n")])])]),a("p",[e._v("In addition, in "),a("strong",[e._v("state2int")]),e._v(", we provide each state with its own sequence identifier.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" state2int := map[string]uint{`main`: 0}\n if err := json.Unmarshal([]byte(states), &data); err == nil {\n for key := range data {\n if key != `main` {\n state2int[key] = uint(len(state2int))\n")])])]),a("p",[e._v("When we traverse all states and each set in a state and each symbol in a set, we write a three-byte number [new state identifier (0 = main)] + [token type ( 0-no token)] + [token].\nThe bidimensionality of the "),a("em",[e._v("table")]),e._v(" array is that it is divided into states and 34 input symbols from the "),a("em",[e._v("alphabet")]),e._v(" array, which are arranged in the same order.\nWe are in the "),a("em",[e._v("main")]),e._v(" state on the zero row of the "),a("em",[e._v("table")]),e._v(". Take the first character, find its index in the "),a("em",[e._v("alphabet")]),e._v(" array, and get the value from the column with the given index. Starting from the value received, we receive the token in the low byte. If the parsing is complete, the second byte indicates the type of token received. In the third byte, we receive the index of the next new state.\nAll of these are described in more detail in the "),a("strong",[e._v("lexParser")]),e._v(" function in "),a("em",[e._v("lex.go")]),e._v(".\nIf you want to add some new characters, you need to add them to the "),a("em",[e._v("alphabet")]),e._v(" array and increase the quantity of the "),a("em",[e._v("AlphaSize")]),e._v(" constant. If you want to add a new symbol combination, it should be described in the status, similar to the existing options. After the above operation, run the "),a("em",[e._v("lextable.go")]),e._v(" file to update the "),a("em",[e._v("lex_table.go")]),e._v(" file.")]),e._v(" "),a("h3",{attrs:{id:"lex-go"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lex-go"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"lex-go"}},[e._v("lex.go")])]),e._v(" "),a("p",[e._v("The "),a("strong",[e._v("lexParser")]),e._v(" function directly generates lexical analysis and returns an array of received tags based on incoming strings. Let us analyze the structure of tokens.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("type Lexem struct {\n Type uint32 // Type of the lexem\n Value interface{} // Value of lexem\n Line uint32 // Line of the lexem\n Column uint32 // Position inside the line\n}\n")])])]),a("ul",[a("li",[a("strong",[e._v("Type")]),e._v(" - token type. It has one of the following values: "),a("code",[e._v("lexSys, lexOper, lexNumber, lexIdent, lexString, lexComment, lexKeyword, lexType, lexExtend")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Value")]),e._v(" – token value. The type of value depends on the token type, Let us analyze it in more detail:\n"),a("ul",[a("li",[a("strong",[e._v("lexSys")]),e._v(" - includes brackets, commas, etc. In this case, "),a("code",[e._v("Type = ch << 8 | lexSys")]),e._v(", please refer to the "),a("code",[e._v("isLPar ... isRBrack")]),e._v(" constant, and its value is uint32 bits;")]),e._v(" "),a("li",[a("strong",[e._v("lexOper")]),e._v(" - the value represents an equivalent character sequence in the form of uint32. See the "),a("code",[e._v("isNot ... isOr")]),e._v(" constants;")]),e._v(" "),a("li",[a("strong",[e._v("lexNumber")]),e._v(" - numbers are stored as int64 or float64. If the number has a decimal point, it is float64;")]),e._v(" "),a("li",[a("strong",[e._v("lexIdent")]),e._v(" - identifiers are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexNewLine")]),e._v(" - newline character. Also used to calculate the row and token position;")]),e._v(" "),a("li",[a("strong",[e._v("lexString")]),e._v(" - lines are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexComment")]),e._v(" - comments are stored as string;")]),e._v(" "),a("li",[a("strong",[e._v("lexKeyword")]),e._v(" - for keywords, only the corresponding indexes are stored, see the "),a("code",[e._v("keyContract ... keyTail")]),e._v(" constant. In this case "),a("code",[e._v("Type = KeyID << 8 | lexKeyword")]),e._v(". In addition, it should be noted that the "),a("code",[e._v("true, false, nil")]),e._v(" keywords will be immediately converted to lexNumber type tokens, and the corresponding "),a("code",[e._v("bool")]),e._v(" and "),a("code",[e._v("intreface {}")]),e._v(" types will be used;")]),e._v(" "),a("li",[a("strong",[e._v("lexType")]),e._v(" – this value contains the corresponding "),a("code",[e._v("reflect.Type")]),e._v(" type value;")]),e._v(" "),a("li",[a("strong",[e._v("lexExtend")]),e._v(" – identifiers beginning with a "),a("code",[e._v("$")]),e._v(". These variables and functions are passed from the outside and are therefore assigned to special types of tokens. This value contains the name as a string without a $ at the beginning.")])])]),e._v(" "),a("li",[a("strong",[e._v("Line")]),e._v(" - the line where the token is found;")]),e._v(" "),a("li",[a("strong",[e._v("Column")]),e._v(" - in-line position of the token.")])]),e._v(" "),a("p",[e._v("Let us analyze the "),a("strong",[e._v("lexParser")]),e._v(" function in detail. The "),a("strong",[e._v("todo")]),e._v(" function looks up the symbol index in the alphabet based on the current state and the incoming symbol, and obtains a new state, token identifier (if any), and other tokens from the conversion table. The parsing itself involves calling the "),a("strong",[e._v("todo")]),e._v(" function in turn for each next character and switching to a new state. Once the tag is received, we create the corresponding token in the output criteria and continue the parsing process. It should be noted that during the parsing process, we do not accumulate the token symbols into a separate stack or array, because we only save the offset of the start of the token. After getting the token, we move the offset of the next token to the current parsing position.")]),e._v(" "),a("p",[e._v("All that remains is to check the lexical status tokens used in the parsing:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("lexfPush")]),e._v(" - this token means that we start to accumulate symbols in a new token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfNext")]),e._v(" - the character must be added to the current token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfPop")]),e._v(" - the receipt of the token is complete. Usually, with this flag we have the identifier type of the parsed token;")]),e._v(" "),a("li",[a("strong",[e._v("lexfSkip")]),e._v(' - this token is used to exclude characters from parsing. For example, the control slashes in the string are \\n \\r ". They will be automatically replaced during the lexical analysis stage.')])]),e._v(" "),a("h2",{attrs:{id:"needle-language"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle-language"}},[e._v("#")]),e._v(" Needle language")]),e._v(" "),a("h3",{attrs:{id:"lexemes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lexemes"}},[e._v("#")]),e._v(" Lexemes")]),e._v(" "),a("p",[e._v("The source code of a program must be in UTF-8 encoding.")]),e._v(" "),a("p",[e._v("The following lexical types are processed:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Keywords")]),e._v(" - "),a("code",[e._v("action, break, conditions, continue, contract, data, else, error, false, func, If, info, nil, return, settings, true, var, warning, while")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Number")]),e._v(" - only decimal numbers are accepted. There are two basic types: "),a("strong",[e._v("int")]),e._v(" and "),a("strong",[e._v("float")]),e._v(". If the number has a decimal point, it becomes a float "),a("strong",[e._v("float")]),e._v(". "),a("strong",[e._v("int")]),e._v(" type is equivalent to "),a("strong",[e._v("int64")]),e._v(" in golang, while "),a("strong",[e._v("float")]),e._v(" type is equivalent to "),a("strong",[e._v("float64")]),e._v(" in golang.")]),e._v(" "),a("li",[a("strong",[e._v("String")]),e._v(" - the string can be enclosed in double quotes "),a("code",[e._v('("a string")')]),e._v(" or backquotes "),a("code",[e._v("(\\`a string\\`)")]),e._v(". Both types of strings can contain newline characters. Strings in double quotes can contain double quotes, newline characters, and carriage returns escaped with slashes. For example, "),a("code",[e._v('"This is a \\"first string\\".\\r\\nThis is a second string."')]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Comment")]),e._v(" - there are two types of comments. Single-line comments use two slashes (//). For example, // This is a single-line comment. Multi-line comments use slash and asterisk symbols and can span multiple lines. For example, "),a("code",[e._v("/* This is a multi-line comment */")]),e._v(".")]),e._v(" "),a("li",[a("strong",[e._v("Identifier")]),e._v(" - the names of variables and functions composed of a-z and A-Z letters, UTF-8 symbols, numbers and underscores. The name can start with a letter, underscore, "),a("code",[e._v("@")]),e._v(" or "),a("code",[e._v("$")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" is the name of the variable defined in the "),a("strong",[e._v("data section")]),e._v(". The name starting with "),a("code",[e._v("$")]),e._v(" can also be used to define global variables in the scope of "),a("strong",[e._v("conditions")]),e._v(" and "),a("strong",[e._v("action sections")]),e._v(". Ecosystem contracts can be called using the "),a("code",[e._v("@")]),e._v(" symbol. For example: "),a("code",[e._v("@1NewTable(...)")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"types"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#types"}},[e._v("#")]),e._v(" Types")]),e._v(" "),a("p",[e._v("Corresponding golang types are specified next to theNeedle types.")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("bool")]),e._v(" - bool, "),a("strong",[e._v("false")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("bytes")]),e._v(" - []byte{}, an empty byte array by default;")]),e._v(" "),a("li",[a("strong",[e._v("int")]),e._v(" - int64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("address")]),e._v(" - uint64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("array")]),e._v(" - []interface{}, an empty array by default;")]),e._v(" "),a("li",[a("strong",[e._v("map")]),e._v(" - map[string]interface{}, an empty object array by default;")]),e._v(" "),a("li",[a("strong",[e._v("money")]),e._v(" - decimal. Decimal, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("float")]),e._v(" - float64, "),a("strong",[e._v("0")]),e._v(" by default;")]),e._v(" "),a("li",[a("strong",[e._v("string")]),e._v(" - string, an empty string by default;")]),e._v(" "),a("li",[a("strong",[e._v("file")]),e._v(" - map[string]interface{}, an empty object array by default.")])]),e._v(" "),a("p",[e._v("These types of variables are defined with the "),a("code",[e._v("var")]),e._v(" keyword. For example, "),a("code",[e._v("var var1, var2 int")]),e._v(". When defined in this way, a variable will be assigned with a default value by type.")]),e._v(" "),a("p",[e._v("All variable values are of the interface{} type, and then they are assigned to the required golang types. Therefore, for example, array and map types are golang types []interface{} and map[string]interface{}. Both types of arrays can contain elements of any type.")]),e._v(" "),a("h3",{attrs:{id:"expressions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#expressions"}},[e._v("#")]),e._v(" Expressions")]),e._v(" "),a("p",[e._v("An expression may include arithmetic operations, logical operations, and function calls. All expressions are evaluated from left to right by priority of operators. If having an equal priority, operators are evaluated from left to right.")]),e._v(" "),a("p",[e._v("Priority of operations from high to low:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("Function call and parentheses")]),e._v(" - when a function is called, passed parameters will be calculated from left to right;")]),e._v(" "),a("li",[a("strong",[e._v("Unary Operation")]),e._v(" - logical negation "),a("code",[e._v("!")]),e._v(" and arithmetic sign change "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Multiplication and Division")]),e._v(" - arithmetic multiplication "),a("code",[e._v("*")]),e._v(" and division "),a("code",[e._v("/")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Addition and Subtraction")]),e._v(" - arithmetic addition "),a("code",[e._v("+")]),e._v(" and subtraction "),a("code",[e._v("-")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical comparison")]),e._v(" - "),a("code",[e._v(">=>> >=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical equality and inequality")]),e._v(" - "),a("code",[e._v("== !=")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical AND")]),e._v(" - "),a("code",[e._v("&&")]),e._v(";")]),e._v(" "),a("li",[a("strong",[e._v("Logical OR")]),e._v(" - "),a("code",[e._v("||")]),e._v(".")])]),e._v(" "),a("p",[e._v("When evaluating logical AND and OR, both sides of the expression are evaluated in any case.")]),e._v(" "),a("p",[e._v("Needle has no type checking during compilation. When evaluating operands, an attempt is made to convert the type to a more complex type. The type of complexity order can be as follows: "),a("code",[e._v("string, int, float, money")]),e._v(". Only part of the type conversions is implemented. The string type supports addition operations, and the result will be string concatenation. For example, "),a("code",[e._v("string + string = string, money-int = money, int * float = float")]),e._v(".")]),e._v(" "),a("p",[e._v("For functions, type checking is performed on the "),a("code",[e._v("string")]),e._v(" and "),a("code",[e._v("int")]),e._v(" types during execution.")]),e._v(" "),a("p",[a("strong",[e._v("array")]),e._v(" and "),a("strong",[e._v("map")]),e._v(" types can be addressed by index. For the "),a("strong",[e._v("array")]),e._v(" type, the "),a("strong",[e._v("int")]),e._v(" value must be specified as the index. For the "),a("strong",[e._v("map")]),e._v(" type, a variable or "),a("strong",[e._v("string")]),e._v(" value must be specified. If you assign a value to an "),a("strong",[e._v("array")]),e._v(" element whose index is greater than the current maximum index, an empty element will be added to the array. The initial value of these elements is "),a("strong",[e._v("nil")]),e._v(". For example: .. code:")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('var my array\nmy[5] = 0\nvar mymap map\nmymap["index"] = my[3]\n')])])]),a("p",[e._v("In expressions of conditional logical values (such as "),a("code",[e._v("if, while, &&, ||, !")]),e._v("), the type is automatically converted to a logical value. If the type is not the default value, it is true.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var mymap map\nvar val string\nif mymap && val {\n...\n}\n")])])]),a("h3",{attrs:{id:"scope"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#scope"}},[e._v("#")]),e._v(" Scope")]),e._v(" "),a("p",[e._v("Braces specify a block that can contain local scope variables. By default, the scope of a variable extends to its own blocks and all nested blocks. In a block, you can define a new variable using the name of an existing variable. However, in this case, external variables with the same name become unavailable.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("var a int\na = 3\n{\n var a int\n a = 4\n Println(a) // 4\n}\nPrintln(a) // 3\n")])])]),a("h3",{attrs:{id:"contract-execution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-execution"}},[e._v("#")]),e._v(" Contract execution")]),e._v(" "),a("p",[e._v("When calling a contract, parameters defined in "),a("strong",[e._v("data")]),e._v(" must be passed to it. Before executing a contract, the virtual machine receives these parameters and assigns them to the corresponding variables ($Param). Then, the predefined "),a("strong",[e._v("conditions")]),e._v(" function and "),a("strong",[e._v("action")]),e._v(" function are called.")]),e._v(" "),a("p",[e._v("Errors that occur during contract execution can be divided into two types: form errors and environment errors. Form errors are generated using special commands: "),a("code",[e._v("error, warning, info")]),e._v(" and when the built-in function returns "),a("code",[e._v("err")]),e._v(" not equal to "),a("em",[e._v("nil")]),e._v(".")]),e._v(" "),a("p",[e._v("The Needle language does not handle exceptions. Any error will terminate the execution of contracts. Since a separate stack and structure for saving variable values are created when a contract is executed, the golang garbage collection mechanism will automatically delete these data when a contract is executed.")]),e._v(" "),a("h3",{attrs:{id:"backus-naur-form-bnf"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backus-naur-form-bnf"}},[e._v("#")]),e._v(" "),a("span",{attrs:{id:"backus-naur-form-bnf"}},[e._v("Backus–Naur Form (BNF)")])]),e._v(" "),a("p",[e._v("In computer science, BNF is a notation technique for context-free syntax and is usually used to describe the syntax of the language used in computing.")]),e._v(" "),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("''''''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] ]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("['-'] | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("' | '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'A' |'B' | ... |'Z' |'a' |'b' | ... |'z' | 0x80 | 0x81 | ... | 0xFF\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x20'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x09'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'0x0D 0x0A'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'!' |'\"' |'$' |''' |'(' |')' |'\\*' |'+' |',' |'-' |'.' |'/ '|'<' |'=' |'>' |'[' |'\\\\' |']' |'_' |'|' |'}' | '{' | | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( |'_') { |'_' | }\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | |'!' |'#' | ... |'[' |']' | ...\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("{ |'\\\"' |'\\n' |'\\r'}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'\"' {}'\"' |'\\`' {}'\\`'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'='\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'==' |'!=' |'>' |'<' |'<=' |'>=' |'&&' |'||' |'\\*' |'/' |'+ '|'-'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" | | \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {','}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'(' []')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" [{'.' '(' []')'}]\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {}\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'{''}'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("( | | | | | break | continue | return)\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'if [else ]'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'while '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'contract '{'[] {} [] []'}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'data '{' {} '}''\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" '\"'{}'\"'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'optional | image | file | hidden | text | polymap | map | address | signature:'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'conditions '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'action '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'func '('[{','}]')'[{}] [] '\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v(" {',' } \n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'.''('[{','}]')'\n")])])]),a("ul",[a("li",[e._v("")])]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("'var {','}'\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/9.ae816606.js b/assets/js/9.caae5b5a.js similarity index 99% rename from assets/js/9.ae816606.js rename to assets/js/9.caae5b5a.js index 208ec30..86f5ea0 100644 --- a/assets/js/9.ae816606.js +++ b/assets/js/9.caae5b5a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{388:function(e,t,a){"use strict";a.r(t);var i=a(51),o=Object(i.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"the-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[e._v("#")]),e._v(" The IBAX Network")]),e._v(" "),a("p",[e._v("In this section, we will brief you how to use IBAX.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-ibax-network"}},[e._v("The IBAX Network")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#application-developers"}},[e._v("Application developers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[e._v("ECOLIB members")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("ECOLIB applications and platform applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#underlying-model"}},[e._v("Underlying model")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#implementation"}},[e._v("Implementation")])])])])]),e._v(" "),a("p",[e._v("If you are interested in the development, use or management of applications in IBAX, then you may not need to understand it at all.")]),e._v(" "),a("p",[e._v("In IBAX, the blockchain and the blockchain network are hidden from ECOLIB members, administrators, and application developers. IBAX offers "),a("RouterLink",{attrs:{to:"/reference/api2.html"}},[e._v("RESTful API")]),e._v(" for all user groups, which provide a tamper-proof and distributed access to the "),a("strong",[e._v("global state")]),e._v(" of the blockchain.")],1),e._v(" "),a("h2",{attrs:{id:"application-developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-developers"}},[e._v("#")]),e._v(" Application developers")]),e._v(" "),a("p",[e._v("In technical terms, the "),a("strong",[e._v("global state")]),e._v(" is a set of data, which is implemented via IBAX's database. From the perspective of application developers, an application interacts with the database by querying, inserting and updating tables.")]),e._v(" "),a("p",[e._v("In IBAX, transactions are written into the blockchain by implementing various contracts. These transactions will call contract codes implemented by blockchain network nodes, which will update the global state (database) accordingly.")]),e._v(" "),a("p",[e._v("For application developers, a contract is a function that data will be written to the database when it is implemented. Pages are like scripts and the page code is a set of page "),a("RouterLink",{attrs:{to:"/topics/templates2.html"}},[e._v("template")]),e._v(" functions, some of these functions display page elements, while other data comes from the database. Application developers do not need to understand what are transactions, block generation and consensus algorithms, just use it.")],1),e._v(" "),a("h2",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[e._v("#")]),e._v(" ECOLIB members")]),e._v(" "),a("p",[e._v("Applications written by developers run in an environment called "),a("RouterLink",{attrs:{to:"/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(". An application usually serves a specific purpose and complete various tasks together with several other applications.")],1),e._v(" "),a("p",[e._v("A user must become a member of an ECOLIB if wants to access applications in it, and it can be a member of multiple different ECOLIBs at the same time.")]),e._v(" "),a("p",[e._v("ECOLIB members can view and modify the database from application pages, just like filling out forms, clicking buttons and navigating pages in a common web application.")]),e._v(" "),a("h2",{attrs:{id:"ecolib-applications-and-platform-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("#")]),e._v(" ECOLIB applications and platform applications")]),e._v(" "),a("p",[e._v("Applications may fall into "),a("strong",[e._v("ECOLIB applications")]),e._v(" and "),a("strong",[e._v("platform applications")]),e._v(".")]),e._v(" "),a("p",[e._v("ECOLIB applications")]),e._v(" "),a("p",[e._v("An ECOLIB application implements certain unique functions or business processes of an ECOLIB, but it is only available in that ECOLIB.\nPlatform applications")]),e._v(" "),a("p",[e._v("A platform application is applicable to all ECOLIBs. Any application could be developed as a platform application. IBAX developers would provide platform applications that support the core functions for ECOLIB governance, such as voting, notification, and ECOLIB member role management.")]),e._v(" "),a("h2",{attrs:{id:"underlying-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#underlying-model"}},[e._v("#")]),e._v(" Underlying model")]),e._v(" "),a("p",[e._v("Definition of layers")]),e._v(" "),a("p",[e._v("IBAX consists of several layers:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("User interaction layer")]),e._v(" "),a("p",[e._v("ECOLIB members interact with the application through pages and page elements.")])]),e._v(" "),a("li",[a("p",[e._v("Application layer")]),e._v(" "),a("p",[e._v("Application developers interact with the global state (data tables) through contract codes and page codes.")])]),e._v(" "),a("li",[a("p",[e._v("Global state layer")]),e._v(" "),a("p",[e._v("Update and synchronize the global state (database) based on operations written to the distributed ledger (blockchain)")])]),e._v(" "),a("li",[a("p",[e._v("Blockchain layer")]),e._v(" "),a("p",[e._v("Update the distributed ledger with new blocks. Operations (transactions) saved in new blocks must be performed on the global state.")])]),e._v(" "),a("li",[a("p",[e._v("Node network layer")]),e._v(" "),a("p",[e._v("It implemented the IBAX Network protocol, which distributes, verifies transactions and generates new blocks on the node network. Similarly, new blocks are distributed and verified by the node network.")]),e._v(" "),a("p",[e._v("The distributed ledger of all nodes is kept in sync. If having conflicts in a node, the node will identify which blockchains are considered valid and invalid blockchains will be rolled back accordingly.")])]),e._v(" "),a("li",[a("p",[e._v("Transaction layer")]),e._v(" "),a("p",[e._v("Transactions are the basis for generating blocks and blockchain protocols, and transactions themselves are the results of operations performed at the user interaction layer. Transactions are generated by Weaver.")]),e._v(" "),a("p",[e._v("When a user or developer performs an operation such as clicking a button on a page or implement a contract from the code editor, Weaver will convert this operation into a transaction and send it to the network node connected to it.")])])]),e._v(" "),a("p",[e._v("Therefore, the flow of transactions is as follows:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("A user operation in a user page will become a transaction;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction is contained in a block;")])]),e._v(" "),a("li",[a("p",[e._v("The block is included in the blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("The change of operation will cause the global state of the blockchain to change, and such operation will be applied to the database;")])]),e._v(" "),a("li",[a("p",[e._v("Any database change will be reflected in the application.")])])]),e._v(" "),a("h2",{attrs:{id:"implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),a("p",[e._v("IBAX has two major components, i.e. server "),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),a("OutboundLink")],1),e._v(" and Weaver "),a("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source code"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Weaver:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Providing the user pages;")])]),e._v(" "),a("li",[a("p",[e._v("Providing the IDE for application development;")])]),e._v(" "),a("li",[a("p",[e._v("Storing public keys of user accounts and perform authorization;")])]),e._v(" "),a("li",[a("p",[e._v("Requesting database data from application pages and display application pages to users;")])]),e._v(" "),a("li",[a("p",[e._v("Sending transactions to the server through "),a("RouterLink",{attrs:{to:"/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),a("p",[e._v("In order to automatically create transactions against user operations, Weaver will convert such operations into transactions when application developers implement a contract from the IDE.")])])]),e._v(" "),a("p",[e._v("Server:")]),e._v(" "),a("ul",[a("li",[e._v("Keeping the global state (database) of the node;")]),e._v(" "),a("li",[e._v("Implementation of the blockchain protocol;")]),e._v(" "),a("li",[e._v("Implementation of contract codes in the IBAX "),a("RouterLink",{attrs:{to:"/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of page codes in the "),a("RouterLink",{attrs:{to:"/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of "),a("RouterLink",{attrs:{to:"/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{391:function(e,t,a){"use strict";a.r(t);var i=a(51),o=Object(i.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"the-ibax-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#the-ibax-network"}},[e._v("#")]),e._v(" The IBAX Network")]),e._v(" "),a("p",[e._v("In this section, we will brief you how to use IBAX.")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#the-ibax-network"}},[e._v("The IBAX Network")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#application-developers"}},[e._v("Application developers")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[e._v("ECOLIB members")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("ECOLIB applications and platform applications")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#underlying-model"}},[e._v("Underlying model")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#implementation"}},[e._v("Implementation")])])])])]),e._v(" "),a("p",[e._v("If you are interested in the development, use or management of applications in IBAX, then you may not need to understand it at all.")]),e._v(" "),a("p",[e._v("In IBAX, the blockchain and the blockchain network are hidden from ECOLIB members, administrators, and application developers. IBAX offers "),a("RouterLink",{attrs:{to:"/reference/api2.html"}},[e._v("RESTful API")]),e._v(" for all user groups, which provide a tamper-proof and distributed access to the "),a("strong",[e._v("global state")]),e._v(" of the blockchain.")],1),e._v(" "),a("h2",{attrs:{id:"application-developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-developers"}},[e._v("#")]),e._v(" Application developers")]),e._v(" "),a("p",[e._v("In technical terms, the "),a("strong",[e._v("global state")]),e._v(" is a set of data, which is implemented via IBAX's database. From the perspective of application developers, an application interacts with the database by querying, inserting and updating tables.")]),e._v(" "),a("p",[e._v("In IBAX, transactions are written into the blockchain by implementing various contracts. These transactions will call contract codes implemented by blockchain network nodes, which will update the global state (database) accordingly.")]),e._v(" "),a("p",[e._v("For application developers, a contract is a function that data will be written to the database when it is implemented. Pages are like scripts and the page code is a set of page "),a("RouterLink",{attrs:{to:"/topics/templates2.html"}},[e._v("template")]),e._v(" functions, some of these functions display page elements, while other data comes from the database. Application developers do not need to understand what are transactions, block generation and consensus algorithms, just use it.")],1),e._v(" "),a("h2",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[e._v("#")]),e._v(" ECOLIB members")]),e._v(" "),a("p",[e._v("Applications written by developers run in an environment called "),a("RouterLink",{attrs:{to:"/concepts/thesaurus.html#ecolib"}},[e._v("ECOLIB")]),e._v(". An application usually serves a specific purpose and complete various tasks together with several other applications.")],1),e._v(" "),a("p",[e._v("A user must become a member of an ECOLIB if wants to access applications in it, and it can be a member of multiple different ECOLIBs at the same time.")]),e._v(" "),a("p",[e._v("ECOLIB members can view and modify the database from application pages, just like filling out forms, clicking buttons and navigating pages in a common web application.")]),e._v(" "),a("h2",{attrs:{id:"ecolib-applications-and-platform-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-applications-and-platform-applications"}},[e._v("#")]),e._v(" ECOLIB applications and platform applications")]),e._v(" "),a("p",[e._v("Applications may fall into "),a("strong",[e._v("ECOLIB applications")]),e._v(" and "),a("strong",[e._v("platform applications")]),e._v(".")]),e._v(" "),a("p",[e._v("ECOLIB applications")]),e._v(" "),a("p",[e._v("An ECOLIB application implements certain unique functions or business processes of an ECOLIB, but it is only available in that ECOLIB.\nPlatform applications")]),e._v(" "),a("p",[e._v("A platform application is applicable to all ECOLIBs. Any application could be developed as a platform application. IBAX developers would provide platform applications that support the core functions for ECOLIB governance, such as voting, notification, and ECOLIB member role management.")]),e._v(" "),a("h2",{attrs:{id:"underlying-model"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#underlying-model"}},[e._v("#")]),e._v(" Underlying model")]),e._v(" "),a("p",[e._v("Definition of layers")]),e._v(" "),a("p",[e._v("IBAX consists of several layers:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("User interaction layer")]),e._v(" "),a("p",[e._v("ECOLIB members interact with the application through pages and page elements.")])]),e._v(" "),a("li",[a("p",[e._v("Application layer")]),e._v(" "),a("p",[e._v("Application developers interact with the global state (data tables) through contract codes and page codes.")])]),e._v(" "),a("li",[a("p",[e._v("Global state layer")]),e._v(" "),a("p",[e._v("Update and synchronize the global state (database) based on operations written to the distributed ledger (blockchain)")])]),e._v(" "),a("li",[a("p",[e._v("Blockchain layer")]),e._v(" "),a("p",[e._v("Update the distributed ledger with new blocks. Operations (transactions) saved in new blocks must be performed on the global state.")])]),e._v(" "),a("li",[a("p",[e._v("Node network layer")]),e._v(" "),a("p",[e._v("It implemented the IBAX Network protocol, which distributes, verifies transactions and generates new blocks on the node network. Similarly, new blocks are distributed and verified by the node network.")]),e._v(" "),a("p",[e._v("The distributed ledger of all nodes is kept in sync. If having conflicts in a node, the node will identify which blockchains are considered valid and invalid blockchains will be rolled back accordingly.")])]),e._v(" "),a("li",[a("p",[e._v("Transaction layer")]),e._v(" "),a("p",[e._v("Transactions are the basis for generating blocks and blockchain protocols, and transactions themselves are the results of operations performed at the user interaction layer. Transactions are generated by Weaver.")]),e._v(" "),a("p",[e._v("When a user or developer performs an operation such as clicking a button on a page or implement a contract from the code editor, Weaver will convert this operation into a transaction and send it to the network node connected to it.")])])]),e._v(" "),a("p",[e._v("Therefore, the flow of transactions is as follows:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("A user operation in a user page will become a transaction;")])]),e._v(" "),a("li",[a("p",[e._v("The transaction is contained in a block;")])]),e._v(" "),a("li",[a("p",[e._v("The block is included in the blockchain;")])]),e._v(" "),a("li",[a("p",[e._v("The change of operation will cause the global state of the blockchain to change, and such operation will be applied to the database;")])]),e._v(" "),a("li",[a("p",[e._v("Any database change will be reflected in the application.")])])]),e._v(" "),a("h2",{attrs:{id:"implementation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),a("p",[e._v("IBAX has two major components, i.e. server "),a("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-ibax"),a("OutboundLink")],1),e._v(" and Weaver "),a("a",{attrs:{href:"https://github.com/IBAX-io/weaver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source code"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Weaver:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("Providing the user pages;")])]),e._v(" "),a("li",[a("p",[e._v("Providing the IDE for application development;")])]),e._v(" "),a("li",[a("p",[e._v("Storing public keys of user accounts and perform authorization;")])]),e._v(" "),a("li",[a("p",[e._v("Requesting database data from application pages and display application pages to users;")])]),e._v(" "),a("li",[a("p",[e._v("Sending transactions to the server through "),a("RouterLink",{attrs:{to:"/reference/api2.html"}},[e._v("REST APIs")]),e._v(";")],1),e._v(" "),a("p",[e._v("In order to automatically create transactions against user operations, Weaver will convert such operations into transactions when application developers implement a contract from the IDE.")])])]),e._v(" "),a("p",[e._v("Server:")]),e._v(" "),a("ul",[a("li",[e._v("Keeping the global state (database) of the node;")]),e._v(" "),a("li",[e._v("Implementation of the blockchain protocol;")]),e._v(" "),a("li",[e._v("Implementation of contract codes in the IBAX "),a("RouterLink",{attrs:{to:"/topics/vm.html"}},[e._v("Virtual Machine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of page codes in the "),a("RouterLink",{attrs:{to:"/topics/templates2.html"}},[e._v("Template Engine")]),e._v(";")],1),e._v(" "),a("li",[e._v("Implementation of "),a("RouterLink",{attrs:{to:"/reference/api2.html"}},[e._v("RESTful API")]),e._v(".")],1)])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/90.14e64fc9.js b/assets/js/90.7aed6c12.js similarity index 99% rename from assets/js/90.14e64fc9.js rename to assets/js/90.7aed6c12.js index 948e51b..1b67f63 100644 --- a/assets/js/90.14e64fc9.js +++ b/assets/js/90.7aed6c12.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{470:function(t,e,a){"use strict";a.r(e);var s=a(51),o=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[t._v("#")]),t._v(" FAQ")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#question-1"}},[t._v("1. Please briefly describe IBAX?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-2"}},[t._v("2. Is IBax applicable for Bitcoin, Ethereum or other blockchains?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-3"}},[t._v("3. What are the main differences between IBax and other public blockchain platforms with built-in mechanisms for executing smart contracts?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-4"}},[t._v("4. Do you have your own cryptocurrency?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-5"}},[t._v("5. What is a honor node and who can maintain it?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-6"}},[t._v("6. What is a platform ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-7"}},[t._v("7. Who can create an ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-8"}},[t._v("8. How do users become members of the ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-9"}},[t._v("9. Can one user create multiple ecosystems?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-10"}},[t._v("10. What is a platform application?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-11"}},[t._v("11. What programming language is used to create the application?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-12"}},[t._v("12. What software is used to create applications and interact with users?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-13"}},[t._v("13. Can platform contracts use third-party APIs to access data?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-14"}},[t._v("14. Can the contract stored in the blockchain be changed?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-15"}},[t._v("15. What is smart law?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-16"}},[t._v("16. Can the contract call and execute other contracts?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-17"}},[t._v("17. Does the application run with a master contract?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-18"}},[t._v("18. Can the application be localized for different languages?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-19"}},[t._v("19. Can I create a page without using a template language?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-20"}},[t._v("20. Are the pages stored in the blockchain?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-21"}},[t._v("21. What types of databases can be used for contract operations?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-22"}},[t._v("22. How to manage access to the data in the database table?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-23"}},[t._v("23. Can an application in an ecosystem exchange data with other applications from another ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-24"}},[t._v("24. Should all applications in a new ecosystem be written from scratch?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-25"}},[t._v("25. Are there any fees for the operation of applications?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-26"}},[t._v("26. Who pays for the operation of applications?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-27"}},[t._v("27. How to protect the applications in the ecosystem from attacks due to vulnerabilities?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-28"}},[t._v("28. What new features will be implemented in future plans?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-29"}},[t._v("29. How to prove its operability?")])])]),t._v(" "),a("h3",{attrs:{id:"_1-please-briefly-describe-ibax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-please-briefly-describe-ibax"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-1"}},[t._v("1. Please briefly describe IBAX?")])]),t._v(" "),a("ul",[a("li",[t._v("It is a blockchain platform that aims to build a digital ecosystem based on an integrated application development environment that has a multi-level permission system for managing the access rights to data, interfaces, and smart contracts.")])]),t._v(" "),a("h3",{attrs:{id:"_2-is-ibax-applicable-for-bitcoin-ethereum-or-other-blockchains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-is-ibax-applicable-for-bitcoin-ethereum-or-other-blockchains"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-2"}},[t._v("2. Is IBax applicable for Bitcoin, Ethereum or other blockchains?")])]),t._v(" "),a("ul",[a("li",[t._v("Not applicable. IBax is built on the basis of its own original blockchain.")])]),t._v(" "),a("h3",{attrs:{id:"_3-what-are-the-main-differences-between-ibax-and-other-public-blockchain-platforms-with-built-in-mechanisms-for-executing-smart-contracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-what-are-the-main-differences-between-ibax-and-other-public-blockchain-platforms-with-built-in-mechanisms-for-executing-smart-contracts"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-3"}},[t._v("3. What are the main differences between IBax and other public blockchain platforms with built-in mechanisms for executing smart contracts?")])]),t._v(" "),a("ul",[a("li",[t._v("IBax has unique features that cannot be found in the above-mentioned blockchains:\n"),a("ul",[a("li",[t._v("has an integrated application development environment in a single client software;")]),t._v(" "),a("li",[t._v("the special template language Logicor for page design and the contract language Needle coordinate with each other;")]),t._v(" "),a("li",[t._v("has a multi-level permission system for managing the access rights to data, interfaces and smart contracts, in which permissions can be granted to members, roles and contracts;")]),t._v(" "),a("li",[t._v("the ecosystem, used to create blockchain applications and autonomous software environments for users to interact with them;")]),t._v(" "),a("li",[t._v("the legal system, a set of rules written in smart laws (dedicated smart contracts), regulates the relationship between platform users and defines the process of changing protocol parameters for problem solving.")])])])]),t._v(" "),a("h3",{attrs:{id:"_4-do-you-have-your-own-cryptocurrency"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_4-do-you-have-your-own-cryptocurrency"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-4"}},[t._v("4. Do you have your own cryptocurrency?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, IBax uses its own token, IBXC.")])]),t._v(" "),a("h3",{attrs:{id:"_5-what-is-a-honor-node-and-who-can-maintain-it"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_5-what-is-a-honor-node-and-who-can-maintain-it"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-5"}},[t._v("5. What is a honor node and who can maintain it?")])]),t._v(" "),a("ul",[a("li",[t._v("The honor node is the network node that has the authority to verify transactions and generate new blocks.")]),t._v(" "),a("li",[t._v("Any network node with sufficient processing power and fault tolerance can become a honor node. IBax uses a Proof of Authority (PoA) consensus mechanism. Nodes can become verification nodes based on ecosystem voting, but only ecosystems that are proven by the platform's token owner to have normal operational capabilities can participate in such voting. Using this authorization algorithm, the master node is run by major ecosystems because it is in their best interest to maintain the network operation.")])]),t._v(" "),a("h3",{attrs:{id:"_6-what-is-a-platform-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_6-what-is-a-platform-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-6"}},[t._v("6. What is a platform ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("An ecosystem is actually an autonomous software environment used to create blockchain applications and the operations of users in them.")])]),t._v(" "),a("h3",{attrs:{id:"_7-who-can-create-an-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_7-who-can-create-an-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-7"}},[t._v("7. Who can create an ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("All users of the platform can create new ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_8-how-do-users-become-members-of-the-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_8-how-do-users-become-members-of-the-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-8"}},[t._v("8. How do users become members of the ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("Users may be registered as members of any existing ecosystem. The ecosystem strategy defines different member admission procedures, which publishes key public information of the new ecosystem in a dedicated ecosystem catalog.")])]),t._v(" "),a("h3",{attrs:{id:"_9-can-one-user-create-multiple-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_9-can-one-user-create-multiple-ecosystems"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-9"}},[t._v("9. Can one user create multiple ecosystems?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, each user can create any number of ecosystems and can also become a member of multiple ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_10-what-is-a-platform-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_10-what-is-a-platform-application"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-10"}},[t._v("10. What is a platform application?")])]),t._v(" "),a("ul",[a("li",[t._v("An application is a complete software product that implements a function or service. The application consists of database tables, contracts and pages.")])]),t._v(" "),a("h3",{attrs:{id:"_11-what-programming-language-is-used-to-create-the-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_11-what-programming-language-is-used-to-create-the-application"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-11"}},[t._v("11. What programming language is used to create the application?")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("The contract is written in the Needle language, which is developed by the platform team, For more information, see: "),a("RouterLink",{attrs:{to:"/ja/topics/script.html"}},[t._v("Smart Contract")]),t._v(".")],1)]),t._v(" "),a("li",[a("p",[t._v("The page is written in Logicor language, which is a page template language. For more information, see: "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html"}},[t._v("Template Language")]),t._v(".")],1)])]),t._v(" "),a("h3",{attrs:{id:"_12-what-software-is-used-to-create-applications-and-interact-with-users"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_12-what-software-is-used-to-create-applications-and-interact-with-users"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-12"}},[t._v("12. What software is used to create applications and interact with users?")])]),t._v(" "),a("ul",[a("li",[t._v("The application program is written and executed in Weaver, no other software is required.")])]),t._v(" "),a("h3",{attrs:{id:"_13-can-platform-contracts-use-third-party-apis-to-access-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_13-can-platform-contracts-use-third-party-apis-to-access-data"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-13"}},[t._v("13. Can platform contracts use third-party APIs to access data?")])]),t._v(" "),a("ul",[a("li",[t._v("No, the contract can only directly access the data stored in the blockchain. "),a("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#virtual-private-ecosystem"}},[t._v("CLB")]),t._v(" is used to process external data sources.")],1)]),t._v(" "),a("h3",{attrs:{id:"_14-can-the-contract-stored-in-the-blockchain-be-changed"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_14-can-the-contract-stored-in-the-blockchain-be-changed"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-14"}},[t._v("14. Can the contract stored in the blockchain be changed?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the contract can be changed. The permission to change the contract is specified by its creator, who can grant the permission to refuse to change, or grant permission to make changes with contracts or by members, or configure a complex set of conditions in the smart law.")]),t._v(" "),a("li",[t._v("Weaver provides access to all versions of contracts.")])]),t._v(" "),a("h3",{attrs:{id:"_15-what-is-smart-law"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_15-what-is-smart-law"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-15"}},[t._v("15. What is smart law?")])]),t._v(" "),a("ul",[a("li",[t._v("Smart law is a contract designed to control and restrict the operation of conventional contracts, thereby controlling and restricting the activities of ecosystem members.")]),t._v(" "),a("li",[t._v("A set of smart laws can be regarded as the legal system of an ecosystem.")])]),t._v(" "),a("h3",{attrs:{id:"_16-can-the-contract-call-and-execute-other-contracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_16-can-the-contract-call-and-execute-other-contracts"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-16"}},[t._v("16. Can the contract call and execute other contracts?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the contract can call other contracts by direct addressing and provide parameters for it, or call the contract by link name. For more information, see: "),a("RouterLink",{attrs:{to:"/ja/topics/script.html"}},[t._v("Smart Contract")]),t._v(".")],1)]),t._v(" "),a("h3",{attrs:{id:"_17-does-the-application-run-with-a-master-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_17-does-the-application-run-with-a-master-contract"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-17"}},[t._v("17. Does the application run with a master contract?")])]),t._v(" "),a("ul",[a("li",[t._v("No, the contract is an autonomous program module that performs certain functions. Each contract is configured to receive specified data, then check the correctness of these data, and perform some operations that are recorded in the database as transactions.")])]),t._v(" "),a("h3",{attrs:{id:"_18-can-the-application-be-localized-for-different-languages"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_18-can-the-application-be-localized-for-different-languages"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-18"}},[t._v("18. Can the application be localized for different languages?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, Weaver has a built-in localization support mechanism and can create pages in any language.")])]),t._v(" "),a("h3",{attrs:{id:"_19-can-i-create-a-page-without-using-a-template-language"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_19-can-i-create-a-page-without-using-a-template-language"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-19"}},[t._v("19. Can I create a page without using a template language?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, it can be done using the platform "),a("RouterLink",{attrs:{to:"/ja/reference/api2.html"}},[t._v("RESTful API")]),t._v(" v2.")],1)]),t._v(" "),a("h3",{attrs:{id:"_20-are-the-pages-stored-in-the-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_20-are-the-pages-stored-in-the-blockchain"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-20"}},[t._v("20. Are the pages stored in the blockchain?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the pages and contracts are stored in the blockchain, which prevents them from being forged.")])]),t._v(" "),a("h3",{attrs:{id:"_21-what-types-of-databases-can-be-used-for-contract-operations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_21-what-types-of-databases-can-be-used-for-contract-operations"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-21"}},[t._v("21. What types of databases can be used for contract operations?")])]),t._v(" "),a("ul",[a("li",[t._v("Currently, PostgreSQL is used.")])]),t._v(" "),a("h3",{attrs:{id:"_22-how-to-manage-access-to-the-data-in-the-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_22-how-to-manage-access-to-the-data-in-the-database-table"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-22"}},[t._v("22. How to manage access to the data in the database table?")])]),t._v(" "),a("ul",[a("li",[t._v("You can add new fields, new entries, or change the permissions of the data in columns for ecosystem members, roles, or specified contract configurations. Except for contracts created by performing specific operations.")])]),t._v(" "),a("h3",{attrs:{id:"_23-can-an-application-in-an-ecosystem-exchange-data-with-other-applications-from-another-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_23-can-an-application-in-an-ecosystem-exchange-data-with-other-applications-from-another-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-23"}},[t._v("23. Can an application in an ecosystem exchange data with other applications from another ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, data exchange can be organized through global data tables that apply to all ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-24"}},[t._v("24. Should all applications in a new ecosystem be written from scratch?")])]),t._v(" "),a("ul",[a("li",[t._v("No, every new ecosystem has some applications out of the box:\n"),a("ul",[a("li",[t._v("A mechanism to manage ecosystem members and roles;")]),t._v(" "),a("li",[t._v("Issuing and configuring other tokens;")]),t._v(" "),a("li",[t._v("A voting system;")]),t._v(" "),a("li",[t._v("A notification system;")]),t._v(" "),a("li",[t._v("A messenger between ecosystem members.")])])])]),t._v(" "),a("p",[t._v("These applications can be edited and configured to meet the special needs of any ecosystem.")]),t._v(" "),a("h3",{attrs:{id:"_25-are-there-any-fees-for-the-operation-of-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_25-are-there-any-fees-for-the-operation-of-applications"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-25"}},[t._v("25. Are there any fees for the operation of applications?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the use of the resources of the honor node requires payment in the platform.")])]),t._v(" "),a("h3",{attrs:{id:"_26-who-pays-for-the-operation-of-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_26-who-pays-for-the-operation-of-applications"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-26"}},[t._v("26. Who pays for the operation of applications?")])]),t._v(" "),a("p",[t._v("For corresponding account addresses, there are currently 4 ways to pay for the operation of applications:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("For contract callers, the fee will be paid from the user's account by default when the user calls the contract;")])]),t._v(" "),a("li",[a("p",[t._v("For contract binding parties, the fee will be paid from the binding account specified by the contract creator;")])]),t._v(" "),a("li",[a("p",[t._v("For ecosystem creators, the fee of all applications within an ecosystem will be paid by the ecosystem creator respectively;")])]),t._v(" "),a("li",[a("p",[t._v("Exclusive ecosystem wallet. Each ecosystem has an exclusive account. If the ecosystem creator activated it, the fee of all applications within the ecosystem will be paid from this account.")])])]),t._v(" "),a("p",[t._v("Order of payment precedence: Exclusive ecosystem wallet> Ecosystem creator> Contract binding party> Contract caller.")]),t._v(" "),a("h3",{attrs:{id:"_27-how-to-protect-the-applications-in-the-ecosystem-from-attacks-due-to-vulnerabilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_27-how-to-protect-the-applications-in-the-ecosystem-from-attacks-due-to-vulnerabilities"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-27"}},[t._v("27. How to protect the applications in the ecosystem from attacks due to vulnerabilities?")])]),t._v(" "),a("ul",[a("li",[t._v("The platform team also knows that there is no way to completely avoid errors in the application code, especially considering that the application can be written by any user. This is why we decided to establish a mechanism to eliminate the consequences of exploiting vulnerabilities. The legal system can stop the attack operation of the application and use some transactions to restore it to its original state. The legal system stipulates the permissions to execute such contracts and the voting procedures for granting these permissions.")])]),t._v(" "),a("h3",{attrs:{id:"_28-what-new-features-will-be-implemented-in-future-plans"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_28-what-new-features-will-be-implemented-in-future-plans"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-28"}},[t._v("28. What new features will be implemented in future plans?")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Visual smart contract designer;")])]),t._v(" "),a("li",[a("p",[t._v("Support for hybrid databases (SQL and NoSQL);")])]),t._v(" "),a("li",[a("p",[t._v("Parallel multi-threaded processing of transactions from different ecosystems;")])]),t._v(" "),a("li",[a("p",[t._v("Perform resource-intensive calculations on the client;")])]),t._v(" "),a("li",[a("p",[t._v("Ecosystem hosting and computing power exchange;")])]),t._v(" "),a("li",[a("p",[t._v("Child nodes, only store some blocks on the server;")])]),t._v(" "),a("li",[a("p",[t._v("Semantic references (ontology) are used to unify the operation of data in the platform.")])])]),t._v(" "),a("h3",{attrs:{id:"_29-how-to-prove-its-operability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_29-how-to-prove-its-operability"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-29"}},[t._v("29. How to prove its operability?")])]),t._v(" "),a("ul",[a("li",[t._v("A number of proof of concept projects and cases have been implemented on the IBax Network: a socialized tax collection and electronic invoice generation and circulation system, a medical apparatus and instruments supervision, forgery prevention and tracing system, a financing and supervision system, a voting/poll system, business registration, trade finance tools, assets registration contract management system, etc.")])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{471:function(t,e,a){"use strict";a.r(e);var s=a(51),o=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"faq"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[t._v("#")]),t._v(" FAQ")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#question-1"}},[t._v("1. Please briefly describe IBAX?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-2"}},[t._v("2. Is IBax applicable for Bitcoin, Ethereum or other blockchains?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-3"}},[t._v("3. What are the main differences between IBax and other public blockchain platforms with built-in mechanisms for executing smart contracts?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-4"}},[t._v("4. Do you have your own cryptocurrency?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-5"}},[t._v("5. What is a honor node and who can maintain it?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-6"}},[t._v("6. What is a platform ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-7"}},[t._v("7. Who can create an ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-8"}},[t._v("8. How do users become members of the ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-9"}},[t._v("9. Can one user create multiple ecosystems?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-10"}},[t._v("10. What is a platform application?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-11"}},[t._v("11. What programming language is used to create the application?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-12"}},[t._v("12. What software is used to create applications and interact with users?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-13"}},[t._v("13. Can platform contracts use third-party APIs to access data?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-14"}},[t._v("14. Can the contract stored in the blockchain be changed?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-15"}},[t._v("15. What is smart law?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-16"}},[t._v("16. Can the contract call and execute other contracts?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-17"}},[t._v("17. Does the application run with a master contract?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-18"}},[t._v("18. Can the application be localized for different languages?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-19"}},[t._v("19. Can I create a page without using a template language?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-20"}},[t._v("20. Are the pages stored in the blockchain?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-21"}},[t._v("21. What types of databases can be used for contract operations?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-22"}},[t._v("22. How to manage access to the data in the database table?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-23"}},[t._v("23. Can an application in an ecosystem exchange data with other applications from another ecosystem?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-24"}},[t._v("24. Should all applications in a new ecosystem be written from scratch?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-25"}},[t._v("25. Are there any fees for the operation of applications?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-26"}},[t._v("26. Who pays for the operation of applications?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-27"}},[t._v("27. How to protect the applications in the ecosystem from attacks due to vulnerabilities?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-28"}},[t._v("28. What new features will be implemented in future plans?")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#question-29"}},[t._v("29. How to prove its operability?")])])]),t._v(" "),a("h3",{attrs:{id:"_1-please-briefly-describe-ibax"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-please-briefly-describe-ibax"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-1"}},[t._v("1. Please briefly describe IBAX?")])]),t._v(" "),a("ul",[a("li",[t._v("It is a blockchain platform that aims to build a digital ecosystem based on an integrated application development environment that has a multi-level permission system for managing the access rights to data, interfaces, and smart contracts.")])]),t._v(" "),a("h3",{attrs:{id:"_2-is-ibax-applicable-for-bitcoin-ethereum-or-other-blockchains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-is-ibax-applicable-for-bitcoin-ethereum-or-other-blockchains"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-2"}},[t._v("2. Is IBax applicable for Bitcoin, Ethereum or other blockchains?")])]),t._v(" "),a("ul",[a("li",[t._v("Not applicable. IBax is built on the basis of its own original blockchain.")])]),t._v(" "),a("h3",{attrs:{id:"_3-what-are-the-main-differences-between-ibax-and-other-public-blockchain-platforms-with-built-in-mechanisms-for-executing-smart-contracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-what-are-the-main-differences-between-ibax-and-other-public-blockchain-platforms-with-built-in-mechanisms-for-executing-smart-contracts"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-3"}},[t._v("3. What are the main differences between IBax and other public blockchain platforms with built-in mechanisms for executing smart contracts?")])]),t._v(" "),a("ul",[a("li",[t._v("IBax has unique features that cannot be found in the above-mentioned blockchains:\n"),a("ul",[a("li",[t._v("has an integrated application development environment in a single client software;")]),t._v(" "),a("li",[t._v("the special template language Logicor for page design and the contract language Needle coordinate with each other;")]),t._v(" "),a("li",[t._v("has a multi-level permission system for managing the access rights to data, interfaces and smart contracts, in which permissions can be granted to members, roles and contracts;")]),t._v(" "),a("li",[t._v("the ecosystem, used to create blockchain applications and autonomous software environments for users to interact with them;")]),t._v(" "),a("li",[t._v("the legal system, a set of rules written in smart laws (dedicated smart contracts), regulates the relationship between platform users and defines the process of changing protocol parameters for problem solving.")])])])]),t._v(" "),a("h3",{attrs:{id:"_4-do-you-have-your-own-cryptocurrency"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_4-do-you-have-your-own-cryptocurrency"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-4"}},[t._v("4. Do you have your own cryptocurrency?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, IBax uses its own token, IBXC.")])]),t._v(" "),a("h3",{attrs:{id:"_5-what-is-a-honor-node-and-who-can-maintain-it"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_5-what-is-a-honor-node-and-who-can-maintain-it"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-5"}},[t._v("5. What is a honor node and who can maintain it?")])]),t._v(" "),a("ul",[a("li",[t._v("The honor node is the network node that has the authority to verify transactions and generate new blocks.")]),t._v(" "),a("li",[t._v("Any network node with sufficient processing power and fault tolerance can become a honor node. IBax uses a Proof of Authority (PoA) consensus mechanism. Nodes can become verification nodes based on ecosystem voting, but only ecosystems that are proven by the platform's token owner to have normal operational capabilities can participate in such voting. Using this authorization algorithm, the master node is run by major ecosystems because it is in their best interest to maintain the network operation.")])]),t._v(" "),a("h3",{attrs:{id:"_6-what-is-a-platform-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_6-what-is-a-platform-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-6"}},[t._v("6. What is a platform ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("An ecosystem is actually an autonomous software environment used to create blockchain applications and the operations of users in them.")])]),t._v(" "),a("h3",{attrs:{id:"_7-who-can-create-an-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_7-who-can-create-an-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-7"}},[t._v("7. Who can create an ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("All users of the platform can create new ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_8-how-do-users-become-members-of-the-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_8-how-do-users-become-members-of-the-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-8"}},[t._v("8. How do users become members of the ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("Users may be registered as members of any existing ecosystem. The ecosystem strategy defines different member admission procedures, which publishes key public information of the new ecosystem in a dedicated ecosystem catalog.")])]),t._v(" "),a("h3",{attrs:{id:"_9-can-one-user-create-multiple-ecosystems"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_9-can-one-user-create-multiple-ecosystems"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-9"}},[t._v("9. Can one user create multiple ecosystems?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, each user can create any number of ecosystems and can also become a member of multiple ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_10-what-is-a-platform-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_10-what-is-a-platform-application"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-10"}},[t._v("10. What is a platform application?")])]),t._v(" "),a("ul",[a("li",[t._v("An application is a complete software product that implements a function or service. The application consists of database tables, contracts and pages.")])]),t._v(" "),a("h3",{attrs:{id:"_11-what-programming-language-is-used-to-create-the-application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_11-what-programming-language-is-used-to-create-the-application"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-11"}},[t._v("11. What programming language is used to create the application?")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("The contract is written in the Needle language, which is developed by the platform team, For more information, see: "),a("RouterLink",{attrs:{to:"/ja/topics/script.html"}},[t._v("Smart Contract")]),t._v(".")],1)]),t._v(" "),a("li",[a("p",[t._v("The page is written in Logicor language, which is a page template language. For more information, see: "),a("RouterLink",{attrs:{to:"/ja/topics/templates2.html"}},[t._v("Template Language")]),t._v(".")],1)])]),t._v(" "),a("h3",{attrs:{id:"_12-what-software-is-used-to-create-applications-and-interact-with-users"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_12-what-software-is-used-to-create-applications-and-interact-with-users"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-12"}},[t._v("12. What software is used to create applications and interact with users?")])]),t._v(" "),a("ul",[a("li",[t._v("The application program is written and executed in Weaver, no other software is required.")])]),t._v(" "),a("h3",{attrs:{id:"_13-can-platform-contracts-use-third-party-apis-to-access-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_13-can-platform-contracts-use-third-party-apis-to-access-data"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-13"}},[t._v("13. Can platform contracts use third-party APIs to access data?")])]),t._v(" "),a("ul",[a("li",[t._v("No, the contract can only directly access the data stored in the blockchain. "),a("RouterLink",{attrs:{to:"/ja/concepts/about-the-platform.html#virtual-private-ecosystem"}},[t._v("CLB")]),t._v(" is used to process external data sources.")],1)]),t._v(" "),a("h3",{attrs:{id:"_14-can-the-contract-stored-in-the-blockchain-be-changed"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_14-can-the-contract-stored-in-the-blockchain-be-changed"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-14"}},[t._v("14. Can the contract stored in the blockchain be changed?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the contract can be changed. The permission to change the contract is specified by its creator, who can grant the permission to refuse to change, or grant permission to make changes with contracts or by members, or configure a complex set of conditions in the smart law.")]),t._v(" "),a("li",[t._v("Weaver provides access to all versions of contracts.")])]),t._v(" "),a("h3",{attrs:{id:"_15-what-is-smart-law"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_15-what-is-smart-law"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-15"}},[t._v("15. What is smart law?")])]),t._v(" "),a("ul",[a("li",[t._v("Smart law is a contract designed to control and restrict the operation of conventional contracts, thereby controlling and restricting the activities of ecosystem members.")]),t._v(" "),a("li",[t._v("A set of smart laws can be regarded as the legal system of an ecosystem.")])]),t._v(" "),a("h3",{attrs:{id:"_16-can-the-contract-call-and-execute-other-contracts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_16-can-the-contract-call-and-execute-other-contracts"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-16"}},[t._v("16. Can the contract call and execute other contracts?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the contract can call other contracts by direct addressing and provide parameters for it, or call the contract by link name. For more information, see: "),a("RouterLink",{attrs:{to:"/ja/topics/script.html"}},[t._v("Smart Contract")]),t._v(".")],1)]),t._v(" "),a("h3",{attrs:{id:"_17-does-the-application-run-with-a-master-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_17-does-the-application-run-with-a-master-contract"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-17"}},[t._v("17. Does the application run with a master contract?")])]),t._v(" "),a("ul",[a("li",[t._v("No, the contract is an autonomous program module that performs certain functions. Each contract is configured to receive specified data, then check the correctness of these data, and perform some operations that are recorded in the database as transactions.")])]),t._v(" "),a("h3",{attrs:{id:"_18-can-the-application-be-localized-for-different-languages"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_18-can-the-application-be-localized-for-different-languages"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-18"}},[t._v("18. Can the application be localized for different languages?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, Weaver has a built-in localization support mechanism and can create pages in any language.")])]),t._v(" "),a("h3",{attrs:{id:"_19-can-i-create-a-page-without-using-a-template-language"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_19-can-i-create-a-page-without-using-a-template-language"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-19"}},[t._v("19. Can I create a page without using a template language?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, it can be done using the platform "),a("RouterLink",{attrs:{to:"/ja/reference/api2.html"}},[t._v("RESTful API")]),t._v(" v2.")],1)]),t._v(" "),a("h3",{attrs:{id:"_20-are-the-pages-stored-in-the-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_20-are-the-pages-stored-in-the-blockchain"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-20"}},[t._v("20. Are the pages stored in the blockchain?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the pages and contracts are stored in the blockchain, which prevents them from being forged.")])]),t._v(" "),a("h3",{attrs:{id:"_21-what-types-of-databases-can-be-used-for-contract-operations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_21-what-types-of-databases-can-be-used-for-contract-operations"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-21"}},[t._v("21. What types of databases can be used for contract operations?")])]),t._v(" "),a("ul",[a("li",[t._v("Currently, PostgreSQL is used.")])]),t._v(" "),a("h3",{attrs:{id:"_22-how-to-manage-access-to-the-data-in-the-database-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_22-how-to-manage-access-to-the-data-in-the-database-table"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-22"}},[t._v("22. How to manage access to the data in the database table?")])]),t._v(" "),a("ul",[a("li",[t._v("You can add new fields, new entries, or change the permissions of the data in columns for ecosystem members, roles, or specified contract configurations. Except for contracts created by performing specific operations.")])]),t._v(" "),a("h3",{attrs:{id:"_23-can-an-application-in-an-ecosystem-exchange-data-with-other-applications-from-another-ecosystem"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_23-can-an-application-in-an-ecosystem-exchange-data-with-other-applications-from-another-ecosystem"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-23"}},[t._v("23. Can an application in an ecosystem exchange data with other applications from another ecosystem?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, data exchange can be organized through global data tables that apply to all ecosystems.")])]),t._v(" "),a("h3",{attrs:{id:"_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_24-should-all-applications-in-a-new-ecosystem-be-written-from-scratch"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-24"}},[t._v("24. Should all applications in a new ecosystem be written from scratch?")])]),t._v(" "),a("ul",[a("li",[t._v("No, every new ecosystem has some applications out of the box:\n"),a("ul",[a("li",[t._v("A mechanism to manage ecosystem members and roles;")]),t._v(" "),a("li",[t._v("Issuing and configuring other tokens;")]),t._v(" "),a("li",[t._v("A voting system;")]),t._v(" "),a("li",[t._v("A notification system;")]),t._v(" "),a("li",[t._v("A messenger between ecosystem members.")])])])]),t._v(" "),a("p",[t._v("These applications can be edited and configured to meet the special needs of any ecosystem.")]),t._v(" "),a("h3",{attrs:{id:"_25-are-there-any-fees-for-the-operation-of-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_25-are-there-any-fees-for-the-operation-of-applications"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-25"}},[t._v("25. Are there any fees for the operation of applications?")])]),t._v(" "),a("ul",[a("li",[t._v("Yes, the use of the resources of the honor node requires payment in the platform.")])]),t._v(" "),a("h3",{attrs:{id:"_26-who-pays-for-the-operation-of-applications"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_26-who-pays-for-the-operation-of-applications"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-26"}},[t._v("26. Who pays for the operation of applications?")])]),t._v(" "),a("p",[t._v("For corresponding account addresses, there are currently 4 ways to pay for the operation of applications:")]),t._v(" "),a("ul",[a("li",[a("p",[t._v("For contract callers, the fee will be paid from the user's account by default when the user calls the contract;")])]),t._v(" "),a("li",[a("p",[t._v("For contract binding parties, the fee will be paid from the binding account specified by the contract creator;")])]),t._v(" "),a("li",[a("p",[t._v("For ecosystem creators, the fee of all applications within an ecosystem will be paid by the ecosystem creator respectively;")])]),t._v(" "),a("li",[a("p",[t._v("Exclusive ecosystem wallet. Each ecosystem has an exclusive account. If the ecosystem creator activated it, the fee of all applications within the ecosystem will be paid from this account.")])])]),t._v(" "),a("p",[t._v("Order of payment precedence: Exclusive ecosystem wallet> Ecosystem creator> Contract binding party> Contract caller.")]),t._v(" "),a("h3",{attrs:{id:"_27-how-to-protect-the-applications-in-the-ecosystem-from-attacks-due-to-vulnerabilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_27-how-to-protect-the-applications-in-the-ecosystem-from-attacks-due-to-vulnerabilities"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-27"}},[t._v("27. How to protect the applications in the ecosystem from attacks due to vulnerabilities?")])]),t._v(" "),a("ul",[a("li",[t._v("The platform team also knows that there is no way to completely avoid errors in the application code, especially considering that the application can be written by any user. This is why we decided to establish a mechanism to eliminate the consequences of exploiting vulnerabilities. The legal system can stop the attack operation of the application and use some transactions to restore it to its original state. The legal system stipulates the permissions to execute such contracts and the voting procedures for granting these permissions.")])]),t._v(" "),a("h3",{attrs:{id:"_28-what-new-features-will-be-implemented-in-future-plans"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_28-what-new-features-will-be-implemented-in-future-plans"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-28"}},[t._v("28. What new features will be implemented in future plans?")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Visual smart contract designer;")])]),t._v(" "),a("li",[a("p",[t._v("Support for hybrid databases (SQL and NoSQL);")])]),t._v(" "),a("li",[a("p",[t._v("Parallel multi-threaded processing of transactions from different ecosystems;")])]),t._v(" "),a("li",[a("p",[t._v("Perform resource-intensive calculations on the client;")])]),t._v(" "),a("li",[a("p",[t._v("Ecosystem hosting and computing power exchange;")])]),t._v(" "),a("li",[a("p",[t._v("Child nodes, only store some blocks on the server;")])]),t._v(" "),a("li",[a("p",[t._v("Semantic references (ontology) are used to unify the operation of data in the platform.")])])]),t._v(" "),a("h3",{attrs:{id:"_29-how-to-prove-its-operability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_29-how-to-prove-its-operability"}},[t._v("#")]),t._v(" "),a("span",{attrs:{id:"question-29"}},[t._v("29. How to prove its operability?")])]),t._v(" "),a("ul",[a("li",[t._v("A number of proof of concept projects and cases have been implemented on the IBax Network: a socialized tax collection and electronic invoice generation and circulation system, a medical apparatus and instruments supervision, forgery prevention and tracing system, a financing and supervision system, a voting/poll system, business registration, trade finance tools, assets registration contract management system, etc.")])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/12.7bb4f7bb.js b/assets/js/91.7ca1606c.js similarity index 99% rename from assets/js/12.7bb4f7bb.js rename to assets/js/91.7ca1606c.js index 5c4fcd1..43c3250 100644 --- a/assets/js/12.7bb4f7bb.js +++ b/assets/js/91.7ca1606c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{392:function(t,e,a){"use strict";a.r(e);var r=a(51),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"terms-and-definitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#terms-and-definitions"}},[t._v("#")]),t._v(" Terms and Definitions")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-terms"}},[t._v("Blockchain terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain"}},[t._v("Blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#peer-to-peer-network"}},[t._v("Peer-to-peer network")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#hash"}},[t._v("Hash")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block"}},[t._v("Block")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block-verification"}},[t._v("Block verification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#consensus"}},[t._v("Consensus")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#token"}},[t._v("Token")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#identification"}},[t._v("Identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#unique-identification"}},[t._v("Unique identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-key"}},[t._v("Private key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-key"}},[t._v("Public key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#digital-signature"}},[t._v("Digital signature")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-contract"}},[t._v("Smart contract")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#transaction-fee"}},[t._v("Transaction fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#double-spend"}},[t._v("Double spend")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#encryption"}},[t._v("Encryption")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-blockchain"}},[t._v("Private blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-blockchain"}},[t._v("Public blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#proof-of-authority"}},[t._v("Proof of Authority")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ibax-terms"}},[t._v("IBAX Terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#testnet"}},[t._v("Testnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#mainnet"}},[t._v("Mainnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#gas-fee"}},[t._v("Gas fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#account-address"}},[t._v("Account address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#wallet-address"}},[t._v("Wallet address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#weaver"}},[t._v("Weaver")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[t._v("ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-parameters"}},[t._v("ECOLIB parameters")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[t._v("ECOLIB members")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecolib"}},[t._v("Virtual private ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#decentralized-proof-of-authority"}},[t._v("Decentralized Proof-of-Authority")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#needle"}},[t._v("Needle")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#logicor"}},[t._v("Logicor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#integrated-development-environment-ide"}},[t._v("Integrated Development Environment (IDE)")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page-editor"}},[t._v("Page editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#visual-page-designer"}},[t._v("Visual page designer")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#contract-editor"}},[t._v("Contract editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#multilingual-resources"}},[t._v("Multilingual resources")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-export"}},[t._v("Application export")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-import"}},[t._v("Application import")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-law"}},[t._v("Smart law")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#legal-system"}},[t._v("Legal system")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application"}},[t._v("Application")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page"}},[t._v("Page")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#code-segment"}},[t._v("Code segment")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#access-rights"}},[t._v("Access rights")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[t._v("Honor node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#guardian-node"}},[t._v("Guardian node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#concurrent-transaction-processing"}},[t._v("Concurrent transaction processing")])])])])]),t._v(" "),a("h2",{attrs:{id:"blockchain-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-terms"}},[t._v("#")]),t._v(" Blockchain terms")]),t._v(" "),a("h3",{attrs:{id:"blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain"}},[t._v("#")]),t._v(" Blockchain")]),t._v(" "),a("p",[t._v("Blockchain is an information system that stores data and transmits and processes data within the system to prevent data from being forged or lost while maintaining data reliability; Data protection is achieved by:")]),t._v(" "),a("p",[t._v("1.writing data into a blockchain of a series of encrypted blocks;")]),t._v(" "),a("p",[t._v("2.distributed storage of blockchain copies in peer-to-peer networks;")]),t._v(" "),a("p",[t._v("3.synchronization of blockchains on all nodes using a consensus mechanism;")]),t._v(" "),a("p",[t._v("4.ensuring data reliability when performing data operations using the network with algorithms that store data transmissions and process contracts in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"peer-to-peer-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#peer-to-peer-network"}},[t._v("#")]),t._v(" Peer-to-peer network")]),t._v(" "),a("p",[t._v("A computer network, consisting of equally privileged nodes (without a central server).")]),t._v(" "),a("h3",{attrs:{id:"hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hash"}},[t._v("#")]),t._v(" Hash")]),t._v(" "),a("p",[t._v("Also known as hashing, the binary value of any file or data set length that is mapped to a shorter fixed-length binary value.")]),t._v(" "),a("h3",{attrs:{id:"block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block"}},[t._v("#")]),t._v(" Block")]),t._v(" "),a("p",[t._v("After verifying the format and signature of the transaction, a transaction set is grouped by the honor node into a specific data structure. A block contains a hash pointer as a link to the previous block, which is one of the measures to ensure the security of blockchain encryption.")]),t._v(" "),a("h3",{attrs:{id:"block-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-verification"}},[t._v("#")]),t._v(" Block verification")]),t._v(" "),a("p",[t._v("A procedure to verify the correctness of the block structure, generation time, compatibility with the previous block, transaction signatures, and the correspondence between the transaction and the block data.")]),t._v(" "),a("h3",{attrs:{id:"consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consensus"}},[t._v("#")]),t._v(" Consensus")]),t._v(" "),a("p",[t._v("The verification protocol or algorithm of this type of protocol used by the honor node in the process of adding new blocks to the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Data transmission operations on the blockchain network or records of such transactions in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"token"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#token"}},[t._v("#")]),t._v(" Token")]),t._v(" "),a("p",[t._v("Proof of encrypted digital rights and shares that can be circulated on the blockchain. A set of identifiable digital records stored in a register, including a mechanism for exchanging rights and shares between these records.")]),t._v(" "),a("h3",{attrs:{id:"identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#identification"}},[t._v("#")]),t._v(" Identification")]),t._v(" "),a("p",[t._v("An encryption program used to identify users in the system.")]),t._v(" "),a("h3",{attrs:{id:"unique-identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unique-identification"}},[t._v("#")]),t._v(" Unique identification")]),t._v(" "),a("p",[t._v("The process of linking accounts with users requires legal and organizational efforts or other procedures to achieve biometric identification in order to link user names with actual users.")]),t._v(" "),a("h3",{attrs:{id:"private-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-key"}},[t._v("#")]),t._v(" Private key")]),t._v(" "),a("p",[t._v("A string of characters secretly stored by its owner, used by the owner to access virtual accounts on the internet and sign transactions.")]),t._v(" "),a("h3",{attrs:{id:"public-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-key"}},[t._v("#")]),t._v(" Public key")]),t._v(" "),a("p",[t._v("A string of characters used to check the authenticity of the private key. The public key is uniquely derived from the private key.")]),t._v(" "),a("h3",{attrs:{id:"digital-signature"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#digital-signature"}},[t._v("#")]),t._v(" Digital signature")]),t._v(" "),a("p",[t._v("The attributes of a document or message obtained after encrypted data processing. The digital signature is used to check the integrity of the document (no modification) and authenticity (verification of the identity of the sender).")]),t._v(" "),a("h3",{attrs:{id:"smart-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-contract"}},[t._v("#")]),t._v(" Smart contract")]),t._v(" "),a("p",[t._v("In the program that performs data storage operations in the blockchain, all contracts are stored in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-fee"}},[t._v("#")]),t._v(" Transaction fee")]),t._v(" "),a("p",[t._v("The fee paid to the honor node to execute the transaction.")]),t._v(" "),a("h3",{attrs:{id:"double-spend"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#double-spend"}},[t._v("#")]),t._v(" Double spend")]),t._v(" "),a("p",[t._v("A method of attacking the blockchain network. The result is that a transaction costs the same token twice.")]),t._v(" "),a("p",[t._v("This kind of attack occurs when the blockchain is forked, which can only be executed when the attacker controls more than 50% of the network's verification capability.")]),t._v(" "),a("h3",{attrs:{id:"encryption"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#encryption"}},[t._v("#")]),t._v(" Encryption")]),t._v(" "),a("p",[t._v("A way of digital data conversion, only the party with the corresponding decryption key can read it.")]),t._v(" "),a("h3",{attrs:{id:"private-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-blockchain"}},[t._v("#")]),t._v(" Private blockchain")]),t._v(" "),a("p",[t._v("A blockchain network where all nodes and data access rights are centrally controlled by a single organization (government, company or individual).")]),t._v(" "),a("h3",{attrs:{id:"public-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-blockchain"}},[t._v("#")]),t._v(" Public blockchain")]),t._v(" "),a("p",[t._v("In a blockchain network that is not controlled by any organization, all decisions are made by reaching a consensus among network participants. Everyone can obtain and access the data of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#proof-of-authority"}},[t._v("#")]),t._v(" Proof of Authority")]),t._v(" "),a("p",[t._v("Proof of Authority (PoA), IBAX Network has created a new consensus mechanism that combines distribution, weak centralization, and a certification authority. We call it PoA (Proof of Authority). To ensure continuity for the entire IBAX Network, the consensus covers not only IBAX Public Network, but also ecoLibs created by each user and user group. This creates a truly self-governed, decentralized, fair, transparent, and fraud-proof Decentralized Autonomous Organization (DAO).")]),t._v(" "),a("h2",{attrs:{id:"ibax-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-terms"}},[t._v("#")]),t._v(" IBAX Terms")]),t._v(" "),a("h3",{attrs:{id:"testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testnet"}},[t._v("#")]),t._v(" Testnet")]),t._v(" "),a("p",[t._v("The version of the blockchain network used for testing.")]),t._v(" "),a("h3",{attrs:{id:"mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mainnet"}},[t._v("#")]),t._v(" Mainnet")]),t._v(" "),a("p",[t._v("The main version of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"transaction-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-2"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Call the contract and pass the parameters to the operation command of the contract. The result of the honor node execution is the update of the database.")]),t._v(" "),a("h3",{attrs:{id:"gas-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gas-fee"}},[t._v("#")]),t._v(" Gas fee")]),t._v(" "),a("p",[t._v("A conventional unit used to calculate the cost of performing certain operations on a network of nodes. The fuel exchange rate is determined by a vote on the honor node.")]),t._v(" "),a("h3",{attrs:{id:"account-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#account-address"}},[t._v("#")]),t._v(" Account address")]),t._v(" "),a("p",[t._v("The data records store the token and can be accessed through a pair of keys (private key and public key).")]),t._v(" "),a("h3",{attrs:{id:"wallet-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallet-address"}},[t._v("#")]),t._v(" Wallet address")]),t._v(" "),a("p",[t._v("The character encoding identifier of the user on the node network that is used as the name of the user's virtual account.")]),t._v(" "),a("h3",{attrs:{id:"weaver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#weaver"}},[t._v("#")]),t._v(" Weaver")]),t._v(" "),a("p",[t._v("The software client used to connect to the node network, which provides the desktop and web browser versions.")]),t._v(" "),a("p",[t._v("Weaver integrates the platform development environment, including creating and editing tables, pages, and contracts. Users can build ECOLIBs, create and use applications in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[t._v("#")]),t._v(" ECOLIB")]),t._v(" "),a("p",[t._v("A relatively closed or open software programming environment, including applications and ECOLIB members.")]),t._v(" "),a("p",[t._v("ECOLIB members can issue exclusive tokens belonging to the ECOLIB, use smart contracts to establish interaction rules between members, and set access rights to application elements for members.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-parameters"}},[t._v("#")]),t._v(" ECOLIB parameters")]),t._v(" "),a("p",[t._v("A set of configurable ECOLIB parameters, such as the account of the creator of the ECOLIB and the permissions of changing application elements, can be changed in the parameter table.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[t._v("#")]),t._v(" ECOLIB members")]),t._v(" "),a("p",[t._v("Users who can access specific ECOLIBs and application features.")]),t._v(" "),a("h3",{attrs:{id:"virtual-private-ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecolib"}},[t._v("#")]),t._v(" Virtual private ECOLIB")]),t._v(" "),a("p",[t._v("Virtual private ECOLIB - Cross Ledgers Base (CLB), which has the full set of functions of the standard ECOLIB, but works outside the blockchain. In CLB, you can use and create contracts and template languages, database tables, and use Weaver to create applications. You can call contracts on the blockchain ECOLIB via APIs.")]),t._v(" "),a("h3",{attrs:{id:"decentralized-proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decentralized-proof-of-authority"}},[t._v("#")]),t._v(" Decentralized Proof-of-Authority")]),t._v(" "),a("p",[t._v("Decentralized Proof-of-Authority (DPoA) is a new consensus algorithm that provides high performance and fault tolerance. In DPoA, the right to generate new blocks is granted to nodes that have proven the right to do so, and such nodes must be subject to preliminary verification.")]),t._v(" "),a("h3",{attrs:{id:"needle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle"}},[t._v("#")]),t._v(" Needle")]),t._v(" "),a("p",[t._v("A scripting language used to create smart contracts that can handle data received from user pages and value operations performed in database tables.\nYou can create and edit contracts in Weaver's editor.")]),t._v(" "),a("h3",{attrs:{id:"logicor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#logicor"}},[t._v("#")]),t._v(" Logicor")]),t._v(" "),a("p",[t._v("The template language used to create pages. It can get values from database tables, build user pages, and pass user input data to the "),a("strong",[t._v("data")]),t._v(" section of the contract.")]),t._v(" "),a("h3",{attrs:{id:"integrated-development-environment-ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#integrated-development-environment-ide"}},[t._v("#")]),t._v(" Integrated Development Environment (IDE)")]),t._v(" "),a("p",[t._v("Integrated Development Environment (IDE) is a set of software tools used to create applications.")]),t._v(" "),a("p",[t._v("Weaver's IDE includes a contract editor, page editor, database table management tool, multi-language resources editor, as well as application export and import functions. The IDE complements the visual page designer based on semantic tools.")]),t._v(" "),a("h3",{attrs:{id:"page-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-editor"}},[t._v("#")]),t._v(" Page editor")]),t._v(" "),a("p",[t._v("In Weaver, you can create application pages by directly arranging basic application elements, HTML containers, form fields, buttons and other tools on the screen.")]),t._v(" "),a("h3",{attrs:{id:"visual-page-designer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#visual-page-designer"}},[t._v("#")]),t._v(" Visual page designer")]),t._v(" "),a("p",[t._v('Tools for creating application pages in Weaver, including interface designer and "Logicor" page code generator.')]),t._v(" "),a("h3",{attrs:{id:"contract-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-editor"}},[t._v("#")]),t._v(" Contract editor")]),t._v(" "),a("p",[t._v("A tool for creating contracts using visual pages in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"multilingual-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multilingual-resources"}},[t._v("#")]),t._v(" Multilingual resources")]),t._v(" "),a("p",[t._v("The module of application page localization in Weaver, which associates the label on the application page with the text value of the selected language.")]),t._v(" "),a("h3",{attrs:{id:"application-export"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-export"}},[t._v("#")]),t._v(" Application export")]),t._v(" "),a("p",[t._v("Save the source code of all tables, pages, and contracts of the application as files.")]),t._v(" "),a("h3",{attrs:{id:"application-import"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-import"}},[t._v("#")]),t._v(" Application import")]),t._v(" "),a("p",[t._v("Load all tables, pages, and contracts of an application included in the export file into the ECOLIB.")]),t._v(" "),a("h3",{attrs:{id:"smart-law"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-law"}},[t._v("#")]),t._v(" Smart law")]),t._v(" "),a("p",[t._v("It is a special set of smart contracts that contain regulatory information and used to manage and control the operation and register access rights.")]),t._v(" "),a("h3",{attrs:{id:"legal-system"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#legal-system"}},[t._v("#")]),t._v(" Legal system")]),t._v(" "),a("p",[t._v("A set of rules and mechanisms established in smart law, which can regulate the relationship between ECOLIB users, define procedural rules for changing protocol parameters, and define various challenging solutions.")]),t._v(" "),a("h3",{attrs:{id:"application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application"}},[t._v("#")]),t._v(" Application")]),t._v(" "),a("p",[t._v("Create fully functional software products in Weaver's IDE.")]),t._v(" "),a("p",[t._v("An application is a collection of elements such as database tables, smart contracts, and user pages with configuration access rights.")]),t._v(" "),a("h3",{attrs:{id:"page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page"}},[t._v("#")]),t._v(" Page")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that forms an interactive interface on the screen.")]),t._v(" "),a("h3",{attrs:{id:"code-segment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#code-segment"}},[t._v("#")]),t._v(" Code segment")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that can be reused in application pages.")]),t._v(" "),a("h3",{attrs:{id:"access-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights"}},[t._v("#")]),t._v(" Access rights")]),t._v(" "),a("p",[t._v("Conditions to get access rights for creating and editing tables, contracts and pages.")]),t._v(" "),a("p",[t._v("The access rights to tables can be configured with rights to add rows and columns, and edit the values in columns.")]),t._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[t._v("#")]),t._v(" Honor node")]),t._v(" "),a("p",[t._v("A node in the network node that has the right to generate and verify blocks.")]),t._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[t._v("#")]),t._v(" Guardian node")]),t._v(" "),a("p",[t._v("A node on the network used to store the latest version of the complete blockchain.")]),t._v(" "),a("h3",{attrs:{id:"concurrent-transaction-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#concurrent-transaction-processing"}},[t._v("#")]),t._v(" Concurrent transaction processing")]),t._v(" "),a("p",[t._v("A method to increase transaction processing speed by processing data from different ECOLIBs at the same time.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{470:function(t,e,a){"use strict";a.r(e);var r=a(51),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"terms-and-definitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#terms-and-definitions"}},[t._v("#")]),t._v(" Terms and Definitions")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain-terms"}},[t._v("Blockchain terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockchain"}},[t._v("Blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#peer-to-peer-network"}},[t._v("Peer-to-peer network")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#hash"}},[t._v("Hash")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block"}},[t._v("Block")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#block-verification"}},[t._v("Block verification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#consensus"}},[t._v("Consensus")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#token"}},[t._v("Token")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#identification"}},[t._v("Identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#unique-identification"}},[t._v("Unique identification")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-key"}},[t._v("Private key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-key"}},[t._v("Public key")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#digital-signature"}},[t._v("Digital signature")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-contract"}},[t._v("Smart contract")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#transaction-fee"}},[t._v("Transaction fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#double-spend"}},[t._v("Double spend")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#encryption"}},[t._v("Encryption")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#private-blockchain"}},[t._v("Private blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#public-blockchain"}},[t._v("Public blockchain")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#proof-of-authority"}},[t._v("Proof of Authority")])])])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ibax-terms"}},[t._v("IBAX Terms")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#testnet"}},[t._v("Testnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#mainnet"}},[t._v("Mainnet")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#gas-fee"}},[t._v("Gas fee")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#account-address"}},[t._v("Account address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#wallet-address"}},[t._v("Wallet address")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#weaver"}},[t._v("Weaver")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib"}},[t._v("ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-parameters"}},[t._v("ECOLIB parameters")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#ecolib-members"}},[t._v("ECOLIB members")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#virtual-private-ecolib"}},[t._v("Virtual private ECOLIB")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#decentralized-proof-of-authority"}},[t._v("Decentralized Proof-of-Authority")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#needle"}},[t._v("Needle")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#logicor"}},[t._v("Logicor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#integrated-development-environment-ide"}},[t._v("Integrated Development Environment (IDE)")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page-editor"}},[t._v("Page editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#visual-page-designer"}},[t._v("Visual page designer")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#contract-editor"}},[t._v("Contract editor")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#multilingual-resources"}},[t._v("Multilingual resources")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-export"}},[t._v("Application export")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application-import"}},[t._v("Application import")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#smart-law"}},[t._v("Smart law")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#legal-system"}},[t._v("Legal system")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#application"}},[t._v("Application")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#page"}},[t._v("Page")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#code-segment"}},[t._v("Code segment")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#access-rights"}},[t._v("Access rights")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#honor-node"}},[t._v("Honor node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#guardian-node"}},[t._v("Guardian node")])]),t._v(" "),a("li",[a("a",{attrs:{href:"#concurrent-transaction-processing"}},[t._v("Concurrent transaction processing")])])])])]),t._v(" "),a("h2",{attrs:{id:"blockchain-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-terms"}},[t._v("#")]),t._v(" Blockchain terms")]),t._v(" "),a("h3",{attrs:{id:"blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain"}},[t._v("#")]),t._v(" Blockchain")]),t._v(" "),a("p",[t._v("Blockchain is an information system that stores data and transmits and processes data within the system to prevent data from being forged or lost while maintaining data reliability; Data protection is achieved by:")]),t._v(" "),a("p",[t._v("1.writing data into a blockchain of a series of encrypted blocks;")]),t._v(" "),a("p",[t._v("2.distributed storage of blockchain copies in peer-to-peer networks;")]),t._v(" "),a("p",[t._v("3.synchronization of blockchains on all nodes using a consensus mechanism;")]),t._v(" "),a("p",[t._v("4.ensuring data reliability when performing data operations using the network with algorithms that store data transmissions and process contracts in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"peer-to-peer-network"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#peer-to-peer-network"}},[t._v("#")]),t._v(" Peer-to-peer network")]),t._v(" "),a("p",[t._v("A computer network, consisting of equally privileged nodes (without a central server).")]),t._v(" "),a("h3",{attrs:{id:"hash"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hash"}},[t._v("#")]),t._v(" Hash")]),t._v(" "),a("p",[t._v("Also known as hashing, the binary value of any file or data set length that is mapped to a shorter fixed-length binary value.")]),t._v(" "),a("h3",{attrs:{id:"block"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block"}},[t._v("#")]),t._v(" Block")]),t._v(" "),a("p",[t._v("After verifying the format and signature of the transaction, a transaction set is grouped by the honor node into a specific data structure. A block contains a hash pointer as a link to the previous block, which is one of the measures to ensure the security of blockchain encryption.")]),t._v(" "),a("h3",{attrs:{id:"block-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-verification"}},[t._v("#")]),t._v(" Block verification")]),t._v(" "),a("p",[t._v("A procedure to verify the correctness of the block structure, generation time, compatibility with the previous block, transaction signatures, and the correspondence between the transaction and the block data.")]),t._v(" "),a("h3",{attrs:{id:"consensus"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#consensus"}},[t._v("#")]),t._v(" Consensus")]),t._v(" "),a("p",[t._v("The verification protocol or algorithm of this type of protocol used by the honor node in the process of adding new blocks to the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Data transmission operations on the blockchain network or records of such transactions in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"token"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#token"}},[t._v("#")]),t._v(" Token")]),t._v(" "),a("p",[t._v("Proof of encrypted digital rights and shares that can be circulated on the blockchain. A set of identifiable digital records stored in a register, including a mechanism for exchanging rights and shares between these records.")]),t._v(" "),a("h3",{attrs:{id:"identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#identification"}},[t._v("#")]),t._v(" Identification")]),t._v(" "),a("p",[t._v("An encryption program used to identify users in the system.")]),t._v(" "),a("h3",{attrs:{id:"unique-identification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unique-identification"}},[t._v("#")]),t._v(" Unique identification")]),t._v(" "),a("p",[t._v("The process of linking accounts with users requires legal and organizational efforts or other procedures to achieve biometric identification in order to link user names with actual users.")]),t._v(" "),a("h3",{attrs:{id:"private-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-key"}},[t._v("#")]),t._v(" Private key")]),t._v(" "),a("p",[t._v("A string of characters secretly stored by its owner, used by the owner to access virtual accounts on the internet and sign transactions.")]),t._v(" "),a("h3",{attrs:{id:"public-key"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-key"}},[t._v("#")]),t._v(" Public key")]),t._v(" "),a("p",[t._v("A string of characters used to check the authenticity of the private key. The public key is uniquely derived from the private key.")]),t._v(" "),a("h3",{attrs:{id:"digital-signature"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#digital-signature"}},[t._v("#")]),t._v(" Digital signature")]),t._v(" "),a("p",[t._v("The attributes of a document or message obtained after encrypted data processing. The digital signature is used to check the integrity of the document (no modification) and authenticity (verification of the identity of the sender).")]),t._v(" "),a("h3",{attrs:{id:"smart-contract"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-contract"}},[t._v("#")]),t._v(" Smart contract")]),t._v(" "),a("p",[t._v("In the program that performs data storage operations in the blockchain, all contracts are stored in the blockchain.")]),t._v(" "),a("h3",{attrs:{id:"transaction-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-fee"}},[t._v("#")]),t._v(" Transaction fee")]),t._v(" "),a("p",[t._v("The fee paid to the honor node to execute the transaction.")]),t._v(" "),a("h3",{attrs:{id:"double-spend"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#double-spend"}},[t._v("#")]),t._v(" Double spend")]),t._v(" "),a("p",[t._v("A method of attacking the blockchain network. The result is that a transaction costs the same token twice.")]),t._v(" "),a("p",[t._v("This kind of attack occurs when the blockchain is forked, which can only be executed when the attacker controls more than 50% of the network's verification capability.")]),t._v(" "),a("h3",{attrs:{id:"encryption"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#encryption"}},[t._v("#")]),t._v(" Encryption")]),t._v(" "),a("p",[t._v("A way of digital data conversion, only the party with the corresponding decryption key can read it.")]),t._v(" "),a("h3",{attrs:{id:"private-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#private-blockchain"}},[t._v("#")]),t._v(" Private blockchain")]),t._v(" "),a("p",[t._v("A blockchain network where all nodes and data access rights are centrally controlled by a single organization (government, company or individual).")]),t._v(" "),a("h3",{attrs:{id:"public-blockchain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#public-blockchain"}},[t._v("#")]),t._v(" Public blockchain")]),t._v(" "),a("p",[t._v("In a blockchain network that is not controlled by any organization, all decisions are made by reaching a consensus among network participants. Everyone can obtain and access the data of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#proof-of-authority"}},[t._v("#")]),t._v(" Proof of Authority")]),t._v(" "),a("p",[t._v("Proof of Authority (PoA), IBAX Network has created a new consensus mechanism that combines distribution, weak centralization, and a certification authority. We call it PoA (Proof of Authority). To ensure continuity for the entire IBAX Network, the consensus covers not only IBAX Public Network, but also ecoLibs created by each user and user group. This creates a truly self-governed, decentralized, fair, transparent, and fraud-proof Decentralized Autonomous Organization (DAO).")]),t._v(" "),a("h2",{attrs:{id:"ibax-terms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ibax-terms"}},[t._v("#")]),t._v(" IBAX Terms")]),t._v(" "),a("h3",{attrs:{id:"testnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#testnet"}},[t._v("#")]),t._v(" Testnet")]),t._v(" "),a("p",[t._v("The version of the blockchain network used for testing.")]),t._v(" "),a("h3",{attrs:{id:"mainnet"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mainnet"}},[t._v("#")]),t._v(" Mainnet")]),t._v(" "),a("p",[t._v("The main version of the blockchain network.")]),t._v(" "),a("h3",{attrs:{id:"transaction-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transaction-2"}},[t._v("#")]),t._v(" Transaction")]),t._v(" "),a("p",[t._v("Call the contract and pass the parameters to the operation command of the contract. The result of the honor node execution is the update of the database.")]),t._v(" "),a("h3",{attrs:{id:"gas-fee"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gas-fee"}},[t._v("#")]),t._v(" Gas fee")]),t._v(" "),a("p",[t._v("A conventional unit used to calculate the cost of performing certain operations on a network of nodes. The fuel exchange rate is determined by a vote on the honor node.")]),t._v(" "),a("h3",{attrs:{id:"account-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#account-address"}},[t._v("#")]),t._v(" Account address")]),t._v(" "),a("p",[t._v("The data records store the token and can be accessed through a pair of keys (private key and public key).")]),t._v(" "),a("h3",{attrs:{id:"wallet-address"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#wallet-address"}},[t._v("#")]),t._v(" Wallet address")]),t._v(" "),a("p",[t._v("The character encoding identifier of the user on the node network that is used as the name of the user's virtual account.")]),t._v(" "),a("h3",{attrs:{id:"weaver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#weaver"}},[t._v("#")]),t._v(" Weaver")]),t._v(" "),a("p",[t._v("The software client used to connect to the node network, which provides the desktop and web browser versions.")]),t._v(" "),a("p",[t._v("Weaver integrates the platform development environment, including creating and editing tables, pages, and contracts. Users can build ECOLIBs, create and use applications in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib"}},[t._v("#")]),t._v(" ECOLIB")]),t._v(" "),a("p",[t._v("A relatively closed or open software programming environment, including applications and ECOLIB members.")]),t._v(" "),a("p",[t._v("ECOLIB members can issue exclusive tokens belonging to the ECOLIB, use smart contracts to establish interaction rules between members, and set access rights to application elements for members.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-parameters"}},[t._v("#")]),t._v(" ECOLIB parameters")]),t._v(" "),a("p",[t._v("A set of configurable ECOLIB parameters, such as the account of the creator of the ECOLIB and the permissions of changing application elements, can be changed in the parameter table.")]),t._v(" "),a("h3",{attrs:{id:"ecolib-members"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecolib-members"}},[t._v("#")]),t._v(" ECOLIB members")]),t._v(" "),a("p",[t._v("Users who can access specific ECOLIBs and application features.")]),t._v(" "),a("h3",{attrs:{id:"virtual-private-ecolib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#virtual-private-ecolib"}},[t._v("#")]),t._v(" Virtual private ECOLIB")]),t._v(" "),a("p",[t._v("Virtual private ECOLIB - Cross Ledgers Base (CLB), which has the full set of functions of the standard ECOLIB, but works outside the blockchain. In CLB, you can use and create contracts and template languages, database tables, and use Weaver to create applications. You can call contracts on the blockchain ECOLIB via APIs.")]),t._v(" "),a("h3",{attrs:{id:"decentralized-proof-of-authority"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#decentralized-proof-of-authority"}},[t._v("#")]),t._v(" Decentralized Proof-of-Authority")]),t._v(" "),a("p",[t._v("Decentralized Proof-of-Authority (DPoA) is a new consensus algorithm that provides high performance and fault tolerance. In DPoA, the right to generate new blocks is granted to nodes that have proven the right to do so, and such nodes must be subject to preliminary verification.")]),t._v(" "),a("h3",{attrs:{id:"needle"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#needle"}},[t._v("#")]),t._v(" Needle")]),t._v(" "),a("p",[t._v("A scripting language used to create smart contracts that can handle data received from user pages and value operations performed in database tables.\nYou can create and edit contracts in Weaver's editor.")]),t._v(" "),a("h3",{attrs:{id:"logicor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#logicor"}},[t._v("#")]),t._v(" Logicor")]),t._v(" "),a("p",[t._v("The template language used to create pages. It can get values from database tables, build user pages, and pass user input data to the "),a("strong",[t._v("data")]),t._v(" section of the contract.")]),t._v(" "),a("h3",{attrs:{id:"integrated-development-environment-ide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#integrated-development-environment-ide"}},[t._v("#")]),t._v(" Integrated Development Environment (IDE)")]),t._v(" "),a("p",[t._v("Integrated Development Environment (IDE) is a set of software tools used to create applications.")]),t._v(" "),a("p",[t._v("Weaver's IDE includes a contract editor, page editor, database table management tool, multi-language resources editor, as well as application export and import functions. The IDE complements the visual page designer based on semantic tools.")]),t._v(" "),a("h3",{attrs:{id:"page-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page-editor"}},[t._v("#")]),t._v(" Page editor")]),t._v(" "),a("p",[t._v("In Weaver, you can create application pages by directly arranging basic application elements, HTML containers, form fields, buttons and other tools on the screen.")]),t._v(" "),a("h3",{attrs:{id:"visual-page-designer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#visual-page-designer"}},[t._v("#")]),t._v(" Visual page designer")]),t._v(" "),a("p",[t._v('Tools for creating application pages in Weaver, including interface designer and "Logicor" page code generator.')]),t._v(" "),a("h3",{attrs:{id:"contract-editor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contract-editor"}},[t._v("#")]),t._v(" Contract editor")]),t._v(" "),a("p",[t._v("A tool for creating contracts using visual pages in Weaver.")]),t._v(" "),a("h3",{attrs:{id:"multilingual-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multilingual-resources"}},[t._v("#")]),t._v(" Multilingual resources")]),t._v(" "),a("p",[t._v("The module of application page localization in Weaver, which associates the label on the application page with the text value of the selected language.")]),t._v(" "),a("h3",{attrs:{id:"application-export"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-export"}},[t._v("#")]),t._v(" Application export")]),t._v(" "),a("p",[t._v("Save the source code of all tables, pages, and contracts of the application as files.")]),t._v(" "),a("h3",{attrs:{id:"application-import"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application-import"}},[t._v("#")]),t._v(" Application import")]),t._v(" "),a("p",[t._v("Load all tables, pages, and contracts of an application included in the export file into the ECOLIB.")]),t._v(" "),a("h3",{attrs:{id:"smart-law"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#smart-law"}},[t._v("#")]),t._v(" Smart law")]),t._v(" "),a("p",[t._v("It is a special set of smart contracts that contain regulatory information and used to manage and control the operation and register access rights.")]),t._v(" "),a("h3",{attrs:{id:"legal-system"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#legal-system"}},[t._v("#")]),t._v(" Legal system")]),t._v(" "),a("p",[t._v("A set of rules and mechanisms established in smart law, which can regulate the relationship between ECOLIB users, define procedural rules for changing protocol parameters, and define various challenging solutions.")]),t._v(" "),a("h3",{attrs:{id:"application"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#application"}},[t._v("#")]),t._v(" Application")]),t._v(" "),a("p",[t._v("Create fully functional software products in Weaver's IDE.")]),t._v(" "),a("p",[t._v("An application is a collection of elements such as database tables, smart contracts, and user pages with configuration access rights.")]),t._v(" "),a("h3",{attrs:{id:"page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page"}},[t._v("#")]),t._v(" Page")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that forms an interactive interface on the screen.")]),t._v(" "),a("h3",{attrs:{id:"code-segment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#code-segment"}},[t._v("#")]),t._v(" Code segment")]),t._v(" "),a("p",[t._v("The program code written in the Logicor template language that can be reused in application pages.")]),t._v(" "),a("h3",{attrs:{id:"access-rights"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#access-rights"}},[t._v("#")]),t._v(" Access rights")]),t._v(" "),a("p",[t._v("Conditions to get access rights for creating and editing tables, contracts and pages.")]),t._v(" "),a("p",[t._v("The access rights to tables can be configured with rights to add rows and columns, and edit the values in columns.")]),t._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[t._v("#")]),t._v(" Honor node")]),t._v(" "),a("p",[t._v("A node in the network node that has the right to generate and verify blocks.")]),t._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[t._v("#")]),t._v(" Guardian node")]),t._v(" "),a("p",[t._v("A node on the network used to store the latest version of the complete blockchain.")]),t._v(" "),a("h3",{attrs:{id:"concurrent-transaction-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#concurrent-transaction-processing"}},[t._v("#")]),t._v(" Concurrent transaction processing")]),t._v(" "),a("p",[t._v("A method to increase transaction processing speed by processing data from different ECOLIBs at the same time.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/96.7d2e294a.js b/assets/js/96.7d2e294a.js new file mode 100644 index 0000000..f495f51 --- /dev/null +++ b/assets/js/96.7d2e294a.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{477:function(t,a,e){"use strict";e.r(a);var n=e(51),_=Object(n.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"json-rpc-アプリケーション-プログラミング-インターフェイス"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-アプリケーション-プログラミング-インターフェイス"}},[t._v("#")]),t._v(" JSON-RPC アプリケーション プログラミング インターフェイス")]),t._v(" "),e("p",[t._v("ソフトウェア アプリケーションが IBAX ブロックチェーンと対話するには (ブロック データを取得したり、トランザクションをネットワークに送信したり)、ソフトウェア アプリケーションは IBAX ネットワーク ノードに接続されている必要があります。")]),t._v(" "),e("p",[t._v("元の REST API インターフェイスの汎用性と拡張性により、インターフェイスとクライアントの数がますます増え、ますます複雑になります。 私たちは、特定のノードやクライアントの実装に関係なく、すべてのクライアントが同じ仕様セットを使用できるようにするためのインターフェイスの統合の重要性を認識しています。")]),t._v(" "),e("p",[t._v("JSON-RPC は、ステートレスで軽量なリモート プロシージャ コール (RPC) プロトコルです。 これは、多数のデータ構造とその処理ルールを定義します。 これらの概念は、インターフェイス、ハイパーテキスト転送プロトコル、または多くの異なるメッセージング環境を介して同じプロセスで使用できるため、トランスポートに依存しません。 データ形式として JSON (RFC 4627) を使用します。")]),t._v(" "),e("p",[t._v("JSON-RPC は、ほとんどの REST API インターフェイスと互換性があり、元の REST API インターフェイスを保持しており、REST API インターフェイスを使用するクライアントは、インターフェイスの一部である JSON-RPC インターフェイスに簡単に転送できます。")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/ja/reference/api2.html#data-id-data-hash"}},[t._v("/data/{id}/data/{hash}")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/ja/reference/api2.html#data-table-id-column-hash"}},[t._v("/data/{table}/id/{column}/{hash}")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/ja/reference/api2.html#avatar-ecosystem-member"}},[t._v("avatar/{ecosystem}/{member}")])],1)]),t._v(" "),e("p",[t._v("REST API インターフェイスを通じて利用できます。")]),t._v(" "),e("h2",{attrs:{id:"client-sideの実装"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#client-sideの実装"}},[t._v("#")]),t._v(" Client-sideの実装")]),t._v(" "),e("p",[t._v("SON-RPC 仕様を実装する場合、各クライアントは異なるプログラミング言語を使用できます。\n"),e("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax-sdk",target:"_blank",rel:"noopener noreferrer"}},[t._v("GO-SDK"),e("OutboundLink")],1)]),t._v(" "),e("h2",{attrs:{id:"curlの例"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#curlの例"}},[t._v("#")]),t._v(" Curlの例")]),t._v(" "),e("p",[t._v("以下に、IBAX ノードに対してcurlリクエストを行うことによるJSON RPC APIの使用例を示します。 各例には、特定のエンドポイント、そのパラメーター、戻り値の型、およびその使用方法の実例の説明が含まれています。")]),t._v(" "),e("p",[t._v('Curl リクエストは、コンテンツ タイプに関連するエラー メッセージを返す場合があります。 これは、 --data オプションによってコンテンツ タイプが application/x-www-form-urlencoded に設定されるためです。 リクエストにこの問題がある場合は、呼び出しの先頭に -H "Content-Type: application/json" を配置して、ヘッダーを手動で設定します。 これらの例には、curl の最後のパラメータである必要がある URL/インターネット プロトコルとポートの組み合わせも含まれていません (例: 127.0.0.1:7079)。この追加データを含む完全なcurl リクエストは次の形式になります。')]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","params":[],"id":1}\' http://127.0.0.1:7079\t\n')])])]),e("h2",{attrs:{id:"契約"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#契約"}},[t._v("#")]),t._v(" 契約")]),t._v(" "),e("h3",{attrs:{id:"hex"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hex"}},[t._v("#")]),t._v(" Hex")]),t._v(" "),e("p",[e("strong",[t._v("16進数コード")])]),t._v(" "),e("p",[t._v("バイト配列、ハッシュ、およびバイトコード配列をエンコードする場合: エンコードは 16 進数で、1 バイトあたり 2 桁の 16 進数になります。")]),t._v(" "),e("h3",{attrs:{id:"リクエストの種類"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#リクエストの種類"}},[t._v("#")]),t._v(" リクエストの種類")]),t._v(" "),e("p",[e("strong",[t._v("Uniformの使用")])]),t._v(" "),e("ul",[e("li",[t._v("Content-Type: application/json")])]),t._v(" "),e("h3",{attrs:{id:"特殊マーカー"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#特殊マーカー"}},[t._v("#")]),t._v(" 特殊マーカー")]),t._v(" "),e("h4",{attrs:{id:"omitempty"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[t._v("#")]),t._v(" Omitempty")]),t._v(" "),e("p",[t._v("このフィールドはオプションのパラメータです。")]),t._v(" "),e("p",[t._v("行に複数の "),e("code",[t._v("Omitempty")]),t._v(" フィールドがある場合、\n特定のフィールドの値のみを渡したい場合は、不要なフィールドを null(フィールドタイプの null 値)に設定する必要があります。例:")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" id")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" Name")]),t._v(" "),e("li",[e("strong",[t._v("column")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" Filter column names")])]),t._v(" "),e("p",[t._v("名前の値のみが渡される場合、リクエストパラメータは以下のように渡されます\n"),e("code",[t._v('"params":[0, "testname"]')]),t._v(" - "),e("em",[t._v("Number")]),t._v(" null 値は 0")]),t._v(" "),e("p",[t._v("カラムの値のみが渡される場合、リクエストパラメータは以下のように渡されます\n"),e("code",[t._v('"params":[0,"", "title,page"]')]),t._v(" - "),e("em",[t._v("String")]),t._v(" 空の値は")]),t._v(" "),e("h4",{attrs:{id:"authorization"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#authorization"}},[t._v("#")]),t._v(" Authorization")]),t._v(" "),e("p",[t._v("認証ヘッダー、リクエストヘッダーにAuthorizationを追加します。例:")]),t._v(" "),e("p",[e("strong",[t._v("name")]),t._v(" : Authorization\n"),e("strong",[t._v("value")]),t._v(" : Bearer +"),e("a",{attrs:{href:"#ibax-login"}},[t._v("ログイントークン")])]),t._v(" "),e("p",[t._v("例:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","params":["@1TokensSend"],"id":1}\' http://127.0.0.1:7079\n\n')])])]),e("h4",{attrs:{id:"accountorkeyid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#accountorkeyid"}},[t._v("#")]),t._v(" AccountOrKeyId")]),t._v(" "),e("p",[t._v("アカウントアドレスのパラメータでは、2つの形式のアドレスを使用できます。例えば")]),t._v(" "),e("ol",[e("li",[e("ul",[e("li",[e("em",[t._v("String")]),t._v(" - アカウントアドレス "),e("code",[t._v('"XXXX-XXXX-XXXX-XXXX-XXXX"')]),t._v(" またはアカウントID "),e("code",[t._v('"64842...538120"')])])])]),t._v(" "),e("li",[e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" - アドレスオブジェクト")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アカウントID、例: "),e("code",[t._v('{"key_id":-64842 38120}')])]),t._v(" "),e("li",[e("strong",[t._v("account")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレス、例: "),e("code",[t._v('{"account": "1196-... - -... -3496"}')])])]),t._v(" "),e("p",[e("strong",[t._v("アカウントIDが存在する場合、アカウントアドレスとアカウントIDの両方がある場合はアカウントIDが優先されます")]),t._v("。")])])]),t._v(" "),e("h4",{attrs:{id:"blockorhash"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blockorhash"}},[t._v("#")]),t._v(" BlockOrHash")]),t._v(" "),e("p",[t._v("ブロックの高さまたはブロックのハッシュ、例:")]),t._v(" "),e("ol",[e("li",[e("ul",[e("li",[e("em",[t._v("String")]),t._v(" - ブロックの高さ "),e("code",[t._v('"100"')]),t._v(" または ブロックのハッシュ "),e("code",[t._v('"4663aa47...a60753c18d9ba9cb4"')])])])]),t._v(" "),e("li",[e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" - ブロック情報オブジェクト")]),t._v(" "),e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ、例: "),e("code",[t._v('{"id":2}')])]),t._v(" "),e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックのハッシュ、例: "),e("code",[t._v('{"hash": "d36b8996c c616d3043a0d02a0f59"}')])])]),t._v(" "),e("p",[e("strong",[t._v("ブロックの高さとブロックのハッシュはどちらか一方を選択できます")]),t._v("。")])])]),t._v(" "),e("h3",{attrs:{id:"バッチリクエスト"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#バッチリクエスト"}},[t._v("#")]),t._v(" バッチリクエスト")]),t._v(" "),e("p",[t._v("この機能は、特に大量の大部分が独立したデータオブジェクトを取得する場合にネットワークのレイテンシを低減するために使用できます。")]),t._v(" "),e("p",[t._v("以下は、最高ブロックとトランザクションの総数を取得する例です:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'[{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]},{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":2,"params":[]}]\' http://127.0.0.1:7079\n\n //Response\n [\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149100\n },\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": 797\n }\n ]\n')])])]),e("h3",{attrs:{id:"エラーレスポンスの処理"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#エラーレスポンスの処理"}},[t._v("#")]),t._v(" エラーレスポンスの処理")]),t._v(" "),e("p",[t._v("リクエストが正常に実行された場合、ステータスコード "),e("code",[t._v("200")]),t._v(" が返されます。")]),t._v(" "),e("p",[t._v("エラーが発生した場合、以下のフィールドを持つJSONオブジェクトが返されます:")]),t._v(" "),e("ul",[e("li",[t._v("jsonrpc\nエラー識別子。")]),t._v(" "),e("li",[t._v("id\nエラーテキストメッセージ。")]),t._v(" "),e("li",[t._v("error\n"),e("ul",[e("li",[t._v("code\nレスポンスステータスコード")]),t._v(" "),e("li",[t._v("message\nレスポンスステータスの説明")])])])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "jsonrpc": "2.0",\n "id": 1,\n "error": {\n "code": -32014,\n "message": "Unauthorized"\n }\n}\n')])])]),e("h2",{attrs:{id:"json-rpc-ネームスペース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-ネームスペース"}},[t._v("#")]),t._v(" JSON-RPC ネームスペース")]),t._v(" "),e("h3",{attrs:{id:"ibax-ネームスペース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ネームスペース"}},[t._v("#")]),t._v(" ibax ネームスペース")]),t._v(" "),e("h4",{attrs:{id:"認証インターフェース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#認証インターフェース"}},[t._v("#")]),t._v(" 認証インターフェース")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-getuid"}},[t._v("ibax.getuid")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-login"}},[t._v("ibax.login")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getauthstatus"}},[t._v("ibax.getAuthStatus")])])]),t._v(" "),e("h4",{attrs:{id:"server-sideのコマンドインターフェイス"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#server-sideのコマンドインターフェイス"}},[t._v("#")]),t._v(" server-sideのコマンドインターフェイス")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-getversion"}},[t._v("ibax.getVersion")])])]),t._v(" "),e("h4",{attrs:{id:"データリクエスト機能インターフェース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#データリクエスト機能インターフェース"}},[t._v("#")]),t._v(" データリクエスト機能インターフェース")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-getbalance"}},[t._v("ibax.getBalance")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getblockstxinfo"}},[t._v("ibax.getBlocksTxInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-detailedblocks"}},[t._v("ibax.detailedBlocks")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getkeyinfo"}},[t._v("ibax.getKeyInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-detailedblock"}},[t._v("ibax.detailedBlock")])])]),t._v(" "),e("h4",{attrs:{id:"メトリクスの取得インターフェイス"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#メトリクスの取得インターフェイス"}},[t._v("#")]),t._v(" メトリクスの取得インターフェイス")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-maxblockid"}},[t._v("ibax.maxBlockId")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getkeyscount"}},[t._v("ibax.getKeysCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-gettxcount"}},[t._v("ibax.getTxCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-gettransactioncount"}},[t._v("ibax.getTransactionCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getblockscountbynode"}},[t._v("ibax.getBlocksCountByNode")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-honornodescount"}},[t._v("ibax.honorNodesCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getecosystemcount"}},[t._v("ibax.getEcosystemCount")])])]),t._v(" "),e("h4",{attrs:{id:"エコシステムインターフェース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#エコシステムインターフェース"}},[t._v("#")]),t._v(" エコシステムインターフェース")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-ecosysteminfo"}},[t._v("ibax.ecosystemInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-appparams"}},[t._v("ibax.appParams")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getecosystemparams"}},[t._v("ibax.getEcosystemParams")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-gettablecount"}},[t._v("ibax.getTableCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-gettable"}},[t._v("ibax.getTable")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getlist"}},[t._v("ibax.getList")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getsections"}},[t._v("ibax.getSections")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getrow"}},[t._v("ibax.getRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-systemparams"}},[t._v("ibax.systemParams")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-history"}},[t._v("ibax.history")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getpagerow"}},[t._v("ibax.getPageRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getmenurow"}},[t._v("ibax.getMenuRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getsnippetrow"}},[t._v("ibax.getSnippetRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getappcontent"}},[t._v("ibax.getAppContent")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getmember"}},[t._v("ibax.getMember")])])]),t._v(" "),e("h4",{attrs:{id:"スマートコントラクト機能インターフェース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#スマートコントラクト機能インターフェース"}},[t._v("#")]),t._v(" スマートコントラクト機能インターフェース")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-getcontracts"}},[t._v("ibax.getContracts")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-sendtx"}},[t._v("ibax.sendTx")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-txstatus"}},[t._v("ibax.txStatus")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-txinfo"}},[t._v("ibax.txInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-txinfomultiple"}},[t._v("ibax.txInfoMultiple")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getpagevalidatorscount"}},[t._v("ibax.getPageValidatorsCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getpage"}},[t._v("ibax.getPage")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getmenu"}},[t._v("ibax.getMenu")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getsource"}},[t._v("ibax.getSource")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getpagehash"}},[t._v("ibax.getPageHash")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getcontent"}},[t._v("ibax.getContent")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getblockinfo"}},[t._v("ibax.getBlockInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getconfig"}},[t._v("ibax.getConfig")])])]),t._v(" "),e("h3",{attrs:{id:"ネット名前空間"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ネット名前空間"}},[t._v("#")]),t._v(" ネット名前空間")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#net-getnetwork"}},[t._v("net.getNetwork")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#net-status"}},[t._v("net.status")])])]),t._v(" "),e("h3",{attrs:{id:"rpc名前空間"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rpc名前空間"}},[t._v("#")]),t._v(" rpc名前空間")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#rpc-modules"}},[t._v("rpc.modules")])])]),t._v(" "),e("h3",{attrs:{id:"admin名前空間"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#admin名前空間"}},[t._v("#")]),t._v(" admin名前空間")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#admin-startjsonrpc"}},[t._v("admin.startJsonRpc")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#admin-stopjsonrpc"}},[t._v("admin.stopJsonRpc")])])]),t._v(" "),e("h3",{attrs:{id:"debug名前空間"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#debug名前空間"}},[t._v("#")]),t._v(" debug名前空間")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#debug-getnodebanstat"}},[t._v("debug.getNodeBanStat")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#debug-getmemstat"}},[t._v("debug.getMemStat")])])]),t._v(" "),e("h2",{attrs:{id:"json-rpc-インターフェースメソッド"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-インターフェースメソッド"}},[t._v("#")]),t._v(" JSON-RPC インターフェースメソッド")]),t._v(" "),e("h3",{attrs:{id:"ibax-getuid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getuid"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getUid")])]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")]),t._v(" "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")])]),t._v(" "),e("p",[e("a",{attrs:{href:"#ibax-login"}},[e("strong",[t._v("login")])]),t._v("を呼び出す際に、"),e("a",{attrs:{href:"#authorization"}},[e("strong",[t._v("Authorization")])]),t._v("に渡す必要がある一時的なJWTトークンを生成します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("uid")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 署名の数値。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("token")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ログイン時に渡される一時トークン(一時トークンの寿命は5秒)。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("network_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ネットワークの識別子。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("cryptoer")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 楕円曲線アルゴリズム。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("hasher")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ハッシュアルゴリズム。")])])]),t._v(" "),e("p",[t._v("認証が必要ない場合(リクエストに"),e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")]),t._v("が含まれている場合)、以")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("expire")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 有効期限。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステムID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレス。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ウォレットアドレス "),e("code",[t._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("network_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ネットワークの識別子。")])])]),t._v(" "),e("h4",{attrs:{id:"例"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response1\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "uid": "5823391950439015186",\n "token": "ey....",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response2\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "expire": "7h59m49.5361126s",\n "ecosystem_id": "1",\n "key_id": "6667782293976713160",\n "address": "0666-7782-2939-7671-3160",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-login"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-login"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.login")])]),t._v(" "),e("p",[t._v("ユーザー認証。"),e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("p",[t._v("最初に"),e("a",{attrs:{href:"#ibax-getuid"}},[e("strong",[t._v("ibax.getUid")])]),t._v("コマンドを呼び出して、一意の値を受信し、署名する必要があります。getuidの一時的なJWTトークンは、リクエストヘッダーに渡す必要があります。リクエストが成功した場合、レスポンスで受信したトークンは"),e("a",{attrs:{href:"#authorization"}},[e("strong",[t._v("Authorization")])]),t._v("に含まれます。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-2"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - 認証呼び出しオブジェクト")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("ecosystem_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコシステムID。指定されていない場合、最初のエコシステムIDにデフォルト設定されます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("expire")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - JWTトークンのライフサイクル(秒単位)、デフォルトは28800、8時間です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("public_key")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - 16進数のアカウント公開鍵。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" -")]),t._v(" "),e("blockquote",[e("p",[t._v("アカウントアドレス「XXXX-...-XXXX」。")]),t._v(" "),e("p",[t._v("公開鍵がすでにブロックチェーンに保存されている場合、このパラメーターを使用します。"),e("em",[t._v("pubkey")]),t._v("パラメーターとは一緒に使用できません。")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("signature")]),t._v(" - "),e("em",[t._v("String")]),t._v(" -\ngetuidで受信したuidに対して、秘密鍵を使用して署名します。")]),t._v(" "),e("p",[t._v("署名データの内容:LOGIN+{$network_id}+uid")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("role_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ロールID、デフォルトロール0")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-2"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - 認証オブジェクト")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("token")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - JWTトークン。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ecosystem_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステムID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレスID")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("account")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ウォレットアドレス「XXXX-XXXXXX-XXXX-XXXX-XXXX」。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("notify_key")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 通知ID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("isnode")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - アカウントアドレスがノードのオーナーであるかどうか。値:"),e("code",[t._v("true,false")]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("isowner")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - アカウントアドレスがこのエコシステムの作成者であるかどうか。値:"),e("code",[t._v("true,false")]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("clb")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - ログインしたエコシステムがCLBであるかどうか。値:"),e("code",[t._v("true,false")]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("timestamp")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 現在のタイムスタンプ")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("roles")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - ロールのリスト。ロールがない場合、このフィールドはnilです。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("role_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ロールID")]),t._v(" "),e("li",[e("strong",[t._v("role_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ロール名")])])])]),t._v(" "),e("h4",{attrs:{id:"例-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-2"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.login","params":[{"ecosystem_id":1,"public_key":"04....","signature","46...","role_id":0}],"id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "token": "ey...",\n "ecosystem_id": "1",\n "key_id": "6660819716178795186",\n "account": "0666-xxxx-xxxx-xxxx-5186",\n "notify_key": "ey....",\n "isnode": false,\n "isowner": false,\n "clb": false,\n "timestamp": "1678336163",\n "roles": nil //[{"role_id": 1, "role_name": "Developer"},{"role_id": 2, "role_name": "DevelopGovernancerer"}]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getauthstatus"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getauthstatus"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getAuthStatus")])]),t._v(" "),e("p",[t._v("ユーザー認証ステータス\n"),e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-3"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-3"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - 認証ステータスオブジェクト")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("active")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - 現在のユーザー認証ステータス。値:"),e("code",[t._v("true,false")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("exp")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" トークン有効期限の切り捨てタイムスタンプ")])])]),t._v(" "),e("h4",{attrs:{id:"例-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-3"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getAuthStatus","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "active": true,\n "exp": 1678354136\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getversion"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getversion"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getVersion")])]),t._v(" "),e("p",[t._v("現在のサーバーバージョンを返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-4"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-4"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("vesion")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - バージョン番号("),e("code",[t._v("big Version")]),t._v(" + "),e("code",[t._v("branch name")]),t._v(" + "),e("code",[t._v("git commit")]),t._v(" + "),e("code",[t._v("time")]),t._v(" + "),e("code",[t._v("node status")]),t._v(")")])]),t._v(" "),e("h4",{attrs:{id:"例-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-4"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getVersion","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "1.3.0 branch.main commit.b57d4194 time.2023-03-08-09:30:29(UTC) node server status is running"\n }\n')])])]),e("h3",{attrs:{id:"ibax-getbalance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getbalance"}},[t._v("#")]),t._v(" ibax.getBalance")]),t._v(" "),e("p",[t._v("アカウントアドレスの残高を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-5"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[t._v("key_idまたはaccount - "),e("a",{attrs:{href:"#accountorkeyid"}},[e("em",[t._v("AccountOrKeyId")])]),t._v(" - アカウントアドレス `XXXX- XXXX-XXXX-XXXX-XXXX` またはアカウントID")])]),t._v(" "),e("li",[e("p",[t._v("ecosystem_id - "),e("em",[t._v("Number")]),t._v(" - エコシステムID "),e("a",{attrs:{href:"#*omitempty*"}},[t._v("Omitempty")]),t._v(" デフォルト1")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-5"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - 残高オブジェクトを取得する")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("amount")]),t._v(" - "),e("strong",[t._v("String")]),t._v(" - 契約アカウント残高の最小単位。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("total")]),t._v(" - "),e("strong",[t._v("String")]),t._v(" - 最小単位のアカウントの総残高(amount+utxo)。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("utxo")]),t._v(" - "),e("strong",[t._v("String")]),t._v(" - 最小単位のUTXOアカウント残高。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("digits")]),t._v(" - "),e("strong",[t._v("Number")]),t._v(" - 精度")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("token_symbol")]),t._v(" - "),e("strong",[t._v("String")]),t._v(" - トークンシンボル")])])]),t._v(" "),e("h4",{attrs:{id:"例-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-5"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["648...8120"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["1196-...-...-...-3496",1]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":[{"key_id":{$key_id}},1]}\' http://127.0.0.1:7079 //keyId or account\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "amount": "9915319240441612",\n "digits": 12,\n "total": "9915319240441612",\n "utxo": "0",\n "token_symbol": "IBXC"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getblockstxinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockstxinfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getBlocksTxInfo")])]),t._v(" "),e("p",[t._v("ブロック内のトランザクションに関する追加情報が含まれたリストを返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-6"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - クエリする開始ブロック高")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック数、デフォルトは25、最大リクエスト数は100")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-6"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - ブロック情報オブジェクトを取得する")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロック高")])]),t._v(" "),e("li",[e("p",[t._v("各トランザクションの追加情報を含むブロック内のトランザクションのリスト:")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - トランザクションのハッシュ。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("contract_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの名前。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - コントラクトパラメーター。"),e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")]),t._v("を使用して、コントラクトフィールドをクエリできます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" -\n最初のブロックの場合、トランザクションに署名した最初のブロックのアカウントアドレスです。")]),t._v(" "),e("p",[t._v("他のすべてのブロックの場合、トランザクションに署名したアカウントのアドレスです。")])])])])]),t._v(" "),e("h4",{attrs:{id:"例-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-6"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksTxInfo","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": [ //block_id\n {\n "hash": "uXSaSrMWlbHpNlu049J5BDypC6MzBQ0/5VEfGQf+5aQ=",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160\n }\n ],\n "2": [ //block_id\n {\n "hash": "r8U9IKjtZ5Be5D4ak3zxLlDwn36CTdfIAsVvQhx7P3w=",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-detailedblocks"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblocks"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.detailedBlocks")])]),t._v(" "),e("p",[t._v("R各ブロック内のトランザクションに関する詳細情報を含むリストを返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-7"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - クエリの開始ブロック高")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック数。デフォルトは 25 ですが、最大要求数は 100 です。")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-7"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - ブロックの詳細情報オブジェクト")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロック高\n"),e("ul",[e("li",[e("strong",[t._v("header")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - ブロックヘッダー。ブロックヘッダーには、次のフィールドが含まれます。\n"),e("ul",[e("li",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ。")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック生成タイムスタンプ。")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックに署名したアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックを生成したノードの栄誉ノードリスト内の位置。")]),t._v(" "),e("li",[e("strong",[t._v("version")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック構造バージョン。")])])]),t._v(" "),e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックのハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックを生成したノードの栄誉ノードリスト内の位置。")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックに署名したアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック生成タイムスタンプ。")]),t._v(" "),e("li",[e("strong",[t._v("tx_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック内のトランザクション数。")]),t._v(" "),e("li",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのサイズ。")]),t._v(" "),e("li",[e("strong",[t._v("rollback_hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックのロールバックハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("merkle_root")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - このブロックトランザクションのマークルツリー。")]),t._v(" "),e("li",[e("strong",[t._v("bin_data")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックヘッダー、ブロック内のすべてのトランザクション、前のブロックハッシュ、およびブロックを生成したノードの秘密鍵のシリアル化。")]),t._v(" "),e("li",[e("strong",[t._v("transactions")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - トランザクションリスト。ブロック内の各トランザクションに関する追加情報が含まれます。\n"),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - トランザクションのハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("contract_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの名前。")]),t._v(" "),e("li",[e("strong",[t._v("params")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - コントラクトパラメーター。"),e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")]),t._v("を使用して、コントラクトフィールドをクエリできます。")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションに署名したアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクション生成タイムスタンプ(単位:ミリ秒)。")]),t._v(" "),e("li",[e("strong",[t._v("type")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションのタイプ。")]),t._v(" "),e("li",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのサイズ。")])])])])])]),t._v(" "),e("h4",{attrs:{id:"例-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-7"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlocks","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": { //block id\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f73497ede8f22d678bc4be6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "36373332663064383331353264316333653639346431656436383734373634363463616363616564636632353232646335633736643066623737343931366363",\n "bin_data": "Cp4BCAEQppm...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n },\n "2": { //block id\n "header": {\n "block_id": 2,\n "time": 1676536235,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "dd13a30661d35e01df82027a6e6607eb47ee00765d69767dbb99e151676c2c96",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676536235,\n "tx_count": 1,\n "size": "1.53KiB",\n "rollbacks_hash": "9041312d69e6bcd37c91a2bfa066abaeb53b8398708937a618a89960bfadab3d",\n "merkle_root": "65366537383931353662613230356565396466353061316538656538643636323332316636616265623764633539616166346635343030383135386538643130",\n "bin_data": "Cp4BCAIQq9O...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "afc53d20a8ed67905ee43e1a937cf12e50f09f7e824dd7c802c56f421c7b3f7c",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160,\n "time": 1676536233945,\n "type": 3,\n "size": "390.00B"\n }\n ]\n }\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getkeyinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyinfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getKeyInfo")])]),t._v(" "),e("p",[t._v("指定されたアドレスに登録されている役割を持つエコシステムのリストを返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-8"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("account")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレス")])]),t._v(" "),e("h4",{attrs:{id:"戻り値-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-8"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - アドレスエコリストオブジェクトを指定します。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("account")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレス")]),t._v(" "),e("li",[e("strong",[t._v("ecosystems")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - エコリスト\n"),e("ul",[e("li",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステム ID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステム名")]),t._v(" "),e("li",[e("strong",[t._v("digits")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - 精度")]),t._v(" "),e("li",[e("strong",[t._v("roles")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 役割のリスト。\n"),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 役割 ID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - キャラ")])])])])])]),t._v(" "),e("h4",{attrs:{id:"例-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-8"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeyInfo","id":1,"params":["0666-XXXX-XXXX-XXXX-5186"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "account": "0666-XXXX-XXXX-XXXX-5186",\n "ecosystems": [\n {\n "ecosystem": "1",\n "name": "platform ecosystem",\n "digits": 12,\n "roles": [\n {\n "id": "1",\n "name": "Developer"\n },\n {\n "id": "2",\n "name": "Governancer"\n }\n ]\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-detailedblock"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblock"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.detailedBlock")])]),t._v(" "),e("p",[t._v("ブロック内のトランザクションに関する詳細な情報のリストを返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-9"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Block or Hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#blockorhash"}},[t._v("BlockOrHash")])]),t._v(" - ブロックの高さまたはブロックハッシュ")])]),t._v(" "),e("h4",{attrs:{id:"戻り値-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-9"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - ブロックの詳細オブジェクトを取得します。")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("header")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - ブロックヘッダー。以下のフィールドが含まれます。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの生成タイムスタンプ")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックに署名したアカウントのアドレス")]),t._v(" "),e("li",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックを生成したノードのHonorノードリスト内の位置")]),t._v(" "),e("li",[e("strong",[t._v("version")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック構造のバージョン")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックのハッシュ")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックを生成したノードのHonorノードリスト内の位置")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックに署名したアカウントのアドレス")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの生成タイムスタンプ")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("tx_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック内のトランザクション数")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのサイズ")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("rollback_hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックのロールバックハッシュ")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("merkle_root")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - このブロックのトランザクションのマークルツリー")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("bin_data")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックヘッダー、ブロック内のすべてのトランザクション、前のブロックハッシュ、およびブロックを生成したノードの秘密鍵のシリアル化")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("transactions")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - トランザクション。ブロック内のトランザクションのリストと各トランザクションに関する追加情報。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - トランザクションのハッシュ")]),t._v(" "),e("li",[e("strong",[t._v("contract_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクト名")]),t._v(" "),e("li",[e("strong",[t._v("params")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - コントラクトパラメータ。コントラクトのフィールドは、"),e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")]),t._v("を介してクエリできます。")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションに署名したアカウントのアドレス")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションの生成タイムスタンプ(単位:ms)")]),t._v(" "),e("li",[e("strong",[t._v("type")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションのタイプ")]),t._v(" "),e("li",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのサイズ")])])])]),t._v(" "),e("h4",{attrs:{id:"例-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-9"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["1"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91"]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":[{"id":1}]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "3637333266306438333135...623737343931366363",\n "bin_data": "Cp4BCAEQppm2nwYgyI/8gLSVrsRcMkAFGTK6nxD86hfhgQX0dWzO8aYZExDN9UPm8sKkqeUbwrNliYuCJHvvdX+txINnM7+gDqtMF/1K43kc0gYC0u8uOiANfVG0wUusv0XYEvc0l+3o8i1ni8S+bmhIGT87cmKskUIgBEhSsqZwreVAfnj7KGPFHen8uWVCoHGG/jrtpruKEW1IA1ABYAESRDogQBBdW8EBBcF/1yuTqPczaeLubu5NRxS3v3vzwvFW5gFCIARIUrKmcK3lQH54+yhjxR3p/LllQqBxhv467aa7ihFtGkA2NzMyZjBkODMxNTJkMWMzZTY5NGQxZWQ2ODc0NzY0NjRjYWNjYWVkY2YyNTIyZGM1Yzc2ZDBmYjc3NDkxNmNjKugCeJxibFvmk5+enlp0YK1LUkhRYl5xYnJJZn7egSUuiSWJ7Uu9Uys9XS7HdOxY7SDPfmJJSGZu6mUGBgaG5Lc9y1YGlCblZCZ7p1YecejvOPzyp63tWeYpWS+nxBTv3biTOUTqg7vfgedPuXdbnjsmYX49a9mXA025NT4TbjQ65bQwbloQcjbQRG3ZudjjUxuL1/rlp6QimTfLcZNH0o/bie/SfiskTNm1tPrfmrrlbdfMklamXHR53XpxwSODSb1hX3Kvyb1fU+awbZVG8yaXmGqtO3wR8jPsP6y7vTW4JL/AL7WkPL8o2zm1qMSpNC8lJ/XAkpDU4hKwBxgYGBg3BhRlliWWpDrl5CdnJ2ckZuadh0oxrAT5tLgkMbfgMgMDY1v42yy2ZSEVHonFGUcUdpbM8tosNnXjS7PoLY8vVbLYrORebMzKa/80UF6S/d/TJcsDEitz8hNTjvwaueEHCAAA//+pZRGv",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-maxblockid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-maxblockid"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.maxBlockId")])]),t._v(" "),e("p",[t._v("Get the highest block ID on the current node")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-10"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-10"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Block Id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - 現在のノード上の最高ブロック")])]),t._v(" "),e("h4",{attrs:{id:"例-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-10"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 774\n }\n')])])]),e("h3",{attrs:{id:"ibax-getkeyscount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyscount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getKeysCount")])]),t._v(" "),e("p",[t._v("現在のノード上のアドレスの総数を取得する")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-11"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-11"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - Total number of addresses")])]),t._v(" "),e("h4",{attrs:{id:"例-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-11"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeysCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 11\n }\n')])])]),e("h3",{attrs:{id:"ibax-gettxcount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettxcount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getTxCount")])]),t._v(" "),e("p",[t._v("現在のノード上のトランザクションの総数を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-12"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-12"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - Total number of transactions")])]),t._v(" "),e("h4",{attrs:{id:"例-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-12"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149068\n }\n')])])]),e("h3",{attrs:{id:"ibax-gettransactioncount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettransactioncount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getTransactionCount")])]),t._v(" "),e("p",[t._v("ブロックトランザクションの数を取得する")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-13"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("block or hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#blockorhash"}},[t._v("BlockOrHash")])]),t._v(" - ブロック高さまたはブロックハッシュ")])]),t._v(" "),e("h4",{attrs:{id:"戻り値-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-13"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの総数")])]),t._v(" "),e("h4",{attrs:{id:"例-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-13"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTransactionCount","id":1,"params":["efc386f7573269610a34af9cc722f775cca8183ccaa0ed7a96db61ef0bde6d1c"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 337\n }\n')])])]),e("h3",{attrs:{id:"ibax-getblockscountbynode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockscountbynode"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getBlocksCountByNode")])]),t._v(" "),e("p",[t._v("Gノードロケーションパッキングブロックの数を取得する")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-14"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("nodePosition")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ノードサブスクリプト")]),t._v(" "),e("li",[e("strong",[t._v("consensusMode")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - コンセンサスモード。パラメーター (1: Creator Managementモード、2: DAO Governanceモード)")])]),t._v(" "),e("h4",{attrs:{id:"戻り値-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-14"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - ノードサブスクリプトのパッキング数オブジェクトを取得します。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("total_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの総数")]),t._v(" "),e("li",[e("strong",[t._v("partial_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ノードサブスクリプトのパッキングブロック数")])]),t._v(" "),e("h4",{attrs:{id:"例-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-14"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksCountByNode","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "total_count": 774,\n "partial_count": 774\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-honornodescount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-honornodescount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.honorNodesCount")])]),t._v(" "),e("p",[t._v("名誉ノード数を取得する")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-15"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-15"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ノードの数")])]),t._v(" "),e("h4",{attrs:{id:"例-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-15"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.honorNodesCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 1\n }\n')])])]),e("h3",{attrs:{id:"ibax-getecosystemcount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemcount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getEcosystemCount")])]),t._v(" "),e("p",[t._v("エコシステムの獲得数を取得する")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-16"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-16"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコロジー番号")])]),t._v(" "),e("h4",{attrs:{id:"例-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-16"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 2\n }\n')])])]),e("h3",{attrs:{id:"ibax-ecosysteminfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ecosysteminfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.ecosystemInfo")])]),t._v(" "),e("p",[t._v("エコロジー情報にアクセスする")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-17"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("ecosystem id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコロジーID")])]),t._v(" "),e("h4",{attrs:{id:"戻り値-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-17"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコロジー名")]),t._v(" "),e("li",[e("strong",[t._v("digits")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - 精度")]),t._v(" "),e("li",[e("strong",[t._v("token_symbol")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トークンシンボル")]),t._v(" "),e("li",[e("strong",[t._v("token_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トークンの名称")]),t._v(" "),e("li",[e("strong",[t._v("total_amount")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 発行量(初回発行、発行していない場合は "),e("code",[t._v('"0"')]),t._v(")")]),t._v(" "),e("li",[e("strong",[t._v("is_withdraw")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - 破棄可能性 "),e("code",[t._v("true:破棄可能 false:破棄不可能")])]),t._v(" "),e("li",[e("strong",[t._v("withdraw")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 破棄量(破棄不可能な場合、または破棄されていない場合は "),e("code",[t._v('"0"')]),t._v(")")]),t._v(" "),e("li",[e("strong",[t._v("is_emission")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - 増発可能性 "),e("code",[t._v("true:増発可能 false:増発不可能")])]),t._v(" "),e("li",[e("strong",[t._v("emission")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 増発量(増発不可能な場合、または増発がない場合は "),e("code",[t._v('"0"')]),t._v(")")]),t._v(" "),e("li",[e("strong",[t._v("introduction")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコの紹介")]),t._v(" "),e("li",[e("strong",[t._v("logo")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコロゴのID(バイナリテーブルIDに対応)、RESTFUL APIで利用可能")]),t._v(" "),e("li",[e("strong",[t._v("creator")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコ作成者")])]),t._v(" "),e("h4",{attrs:{id:"例-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-17"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.ecosystemInfo","id":1,"params":[1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "id": 5,\n "name": "test name",\n "digits": 6,\n "token_symbol": "test",\n "token_name": "test Coin",\n "total_amount": "10000",\n "is_withdraw": true,\n "withdraw": "100000000000900000",\n "is_emission": true,\n "emission": "100000000001000000",\n "introduction": "this is a test introduction",\n "logo": 6,\n "creator": "0666-0819-7161-7879-5186"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-appparams"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-appparams"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.appParams")])]),t._v(" "),e("p",[t._v("現在のエコシステムまたは指定されたエコシステムのアプリケーションパラメータのリストを返します")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-18"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("appid")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アプリケーションID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - エコシステムID;")]),t._v(" "),e("p",[t._v("指定されていない場合、または0の場合、現在のエコシステムのパラメータが返されます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("names")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - アプリケーションパラメータ名をフィルタリングします。")]),t._v(" "),e("p",[t._v("カンマで区切られた名前のリスト、例:"),e("code",[t._v("name1,name2")]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" オフセット、デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" エントリ数、デフォルトは100、最大100。")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-18"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Array")]),t._v(" - アプリケーションパラメータのリスト")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("app_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アプリケーションID")]),t._v(" "),e("li",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - 配列の各要素には、次のパラメータが含まれます。\n"),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータID、ユニーク。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータ名。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータ値。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータを変更するための権限。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-18"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.appParams","id":1,"params":[1,1,"role_developer,role_governancer"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "app_id": 1,\n "list": [\n {\n "id": "4",\n "name": "role_developer",\n "value": "1",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n },\n {\n "id": "5",\n "name": "role_governancer",\n "value": "2",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getecosystemparams"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemparams"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getEcosystemParams")])]),t._v(" "),e("p",[t._v("エコシステムパラメータのリストを取得する")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-19"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - エコシステムID")]),t._v(" "),e("p",[t._v("もし0またはそのようなパラメータがない場合、デフォルト: 現在のecid。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("names")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - フィルタパラメータの名前。")]),t._v(" "),e("p",[t._v("カンマで区切られた名前のリスト、例:"),e("code",[t._v("name1,name2")]),t._v("。")]),t._v(" "),e("p",[t._v("フィルタパラメータがある場合、"),e("em",[t._v("offset")]),t._v("と"),e("em",[t._v("limit")]),t._v("パラメータは無効です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" オフセット、デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" エントリ数、デフォルトは100、最大100。")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-19"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には、次のパラメータが含まれます。\n"),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータのID、ユニーク。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータの名前。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータの値。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータを変更するための権限。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-19"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemParams","id":1,"params":[0,"changing_app_params,changing_language"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "9",\n "name": "changing_app_params",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n },\n {\n "id": "4",\n "name": "changing_language",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-gettablecount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettablecount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getTableCount")])]),t._v(" "),e("p",[t._v("現在のエコシステムに関するデータテーブルのリストを返します。")]),t._v(" "),e("p",[t._v("Offset and number of entries can be set")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-20"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - [Omitempty] オフセット。デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - [Omitempty] エントリの数。デフォルトは100で、最大は100です。")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-20"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - 現在のエコロジカルデータテーブルの総シート数。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には次のパラメーターが含まれています:")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - プレフィックスなしのデータテーブルの名前。")]),t._v(" "),e("li",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブル内のエントリ数。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-20"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTableCount","id":1,"params":[0,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 32,\n "list": [\n {\n "name": "app_params",\n "count": "41"\n },\n {\n "name": "applications",\n "count": "7"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-gettable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettable"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getTable")])]),t._v(" "),e("p",[t._v("R現在のエコシステムのリクエストデータテーブルに関する情報を返します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-21"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("tableName")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブル名")])]),t._v(" "),e("h4",{attrs:{id:"返り値"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブルの名前。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("insert")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリを追加する権限。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("new_column")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 新しいフィールドを追加する権限。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("update")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリの権限を変更する権限。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("app_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アプリケーションID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 権限を変更するための条件。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("columns")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - データテーブルフィールドに関連する情報の配列:")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - フィールドの名前。")]),t._v(" "),e("li",[e("strong",[t._v("type")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - フィールドのデータ型。")]),t._v(" "),e("li",[e("strong",[t._v("perm")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - このフィールドの値を変更する権限。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-21"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTable","id":1,"params":["app_params"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "name": "app_params",\n "insert": "ContractConditions(\\"DeveloperCondition\\")",\n "new_column": "ContractConditions(\\"@1MainCondition\\")",\n "update": "ContractAccess(\\"@1EditAppParam\\")",\n "conditions": "ContractConditions(\\"@1MainCondition\\")",\n "app_id": "1",\n "columns": [\n {\n "name": "value",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "app_id",\n "type": "number",\n "perm": "ContractAccess(\\"@1ItemChangeAppId\\")"\n },\n {\n "name": "ecosystem",\n "type": "number",\n "perm": "false"\n },\n {\n "name": "conditions",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "permissions",\n "type": "json",\n "perm": "ContractConditions(\\"@1MainCondition\\")"\n },\n {\n "name": "name",\n "type": "varchar",\n "perm": "false"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getlist"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getlist"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getList")])]),t._v(" "),e("p",[t._v("指定されたデータテーブルのエントリを返します。")]),t._v(" "),e("p",[t._v("返される列を指定することができます。")]),t._v(" "),e("p",[t._v("オフセットとエントリの数を設定することができます。")]),t._v(" "),e("p",[t._v("クエリ条件を設定することができます。")]),t._v(" "),e("p",[t._v("タイプが "),e("em",[t._v("BYTEA")]),t._v("(バイト配列、ハッシュ、バイトコード配列)のデータテーブルのヘックスエンコーディング")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-22"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - データテーブルオブジェクトを取得します。")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブルの名前。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - [Omitempty] エントリの数。デフォルトは25です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - [Omitempty] オフセット。デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("order")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - [Omitempty] ソート方法。デフォルトはid ASCです。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("columns")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - [Omitempty] 要求された列のコンマ区切りのリスト。指定されていない場合はすべての列が返されます。")]),t._v(" "),e("p",[t._v("id列は常に返されます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("where")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - [Omitempty] クエリ条件")]),t._v(" "),e("p",[t._v("例:id > 2 かつ name = john をクエリしたい場合は、"),e("code",[t._v('where:{"id":{"$gt":2}, "name":{"$eq": "john"}}')]),t._v(" を使用します。")]),t._v(" "),e("p",[t._v("詳細については、"),e("RouterLink",{attrs:{to:"/ja/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" のwhere構文を参照してください。")],1)])]),t._v(" "),e("h4",{attrs:{id:"返り値-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-2"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリの総数。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には次のパラメーターが含まれています:")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("...")]),t._v(" - データテーブルの他の列。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-22"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getList","id":1,"params":[{"name":"@1history","where":{"$and": [{"id":{"$gt": 2}}, {"id":{"$lt": 5}}]}}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "amount": "1000000000000000000",\n "block_id": "4",\n "comment": "UTXO",\n "created_at": "1676538080433",\n "ecosystem": "1",\n "id": "3",\n "recipient_balance": "1000000000000000000",\n "recipient_id": "666...160",\n "sender_balance": "1000000000000000000",\n "sender_id": "666...3160",\n "status": "0",\n "txhash": "2ac156c0ce55c10fd485cb9d59f50e3f9b269fb9bb69571d3c2eeae033d6c6cc",\n "type": "24",\n "value_detail": "NULL"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getsections"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsections"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getSections")])]),t._v(" "),e("p",[t._v("現在のエコシステムのタブに戻ります。\nテーブルエントリのリストで、オフセットとエントリ数を設定できます。")]),t._v(" "),e("p",[t._v("もし "),e("em",[t._v("role_access")]),t._v(" フィールドがロールのリストを含み、現在のロールが含まれていない場合、レコードは返されません。"),e("em",[t._v("title")]),t._v(" フィールドのデータは、リクエストヘッダーの "),e("em",[t._v("Accept-Language")]),t._v(" 言語リソースによって置き換えられます。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-23"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" - アクションリクエストオブジェクトを取得します。\n"),e("ul",[e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - エントリの数。デフォルトは25です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - オフセット。デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("lang")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - このフィールドは、マルチリンガルリソースコードまたはローカライゼーションを指定します。例:"),e("em",[t._v("en, zh")]),t._v("。指定されたマルチリンガルリソースが見つからない場合、例えば "),e("em",[t._v("en-US")]),t._v(" の場合は、マルチリンガルリソースグループで検索します。"),e("strong",[t._v("デフォルト")]),t._v(": "),e("strong",[t._v("en")]),t._v("。")])])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-3"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - タブエントリの総数。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には、セクションテーブルのすべての列に関する情報が含まれています。")])])]),t._v(" "),e("h4",{attrs:{id:"例-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-23"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSections","id":1,"params":[{"offset":0,"limit":2}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "ecosystem": "1",\n "id": "1",\n "page": "default_page",\n "roles_access": "[]",\n "status": "2",\n "title": "Home",\n "urlname": "home"\n },\n {\n "ecosystem": "1",\n "id": "2",\n "page": "developer_index",\n "roles_access": "[]",\n "status": "1",\n "title": "Developer",\n "urlname": "developer"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getrow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getrow"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getRow")])]),t._v(" "),e("p",[t._v("現在のエコシステムの指定されたデータテーブルのエントリを返します。返される列を指定することができます。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-24"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("tableName")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブルの名前。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリのID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("columns")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")])]),t._v(" "),e("p",[t._v("要求された列のコンマ区切りのリスト。指定されていない場合、すべての列が返されます。")]),t._v(" "),e("p",[t._v('フィルタリングしない場合は、空白 "" を指定できます。')]),t._v(" "),e("p",[t._v("id列は常に返されます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("whereColumn")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - 検索する列名(Number型の列のみ検索可能)")])])]),t._v(" "),e("h4",{attrs:{id:"返り値-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-4"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - 列の値を受け取るオブジェクト\n"),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("...")]),t._v(" - 要求された列のシーケンス。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-24"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getRow","id":1,"params":["@1history",4,"id,sender_id,recipient_id,amount,ecosystem,created_at","id"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "value": {\n "amount": "680388766240",\n "created_at": "1677222830899",\n "ecosystem": "1",\n "id": "296",\n "recipient_id": "6667782293976713160",\n "sender_id": "6660819716178795186"\n }\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-systemparams"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-systemparams"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.systemParams")])]),t._v(" "),e("p",[t._v("プラットフォームパラメータのリストを返します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-25"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("names")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - カンマで区切られたリクエストパラメータのリスト。")]),t._v(" "),e("p",[t._v("例:"),e("code",[t._v('names="name1,name2"')]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - オフセット。デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - エントリの数。デフォルトは100で、最大は100です。")])])]),t._v(" "),e("h4",{attrs:{id:"返り値-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-5"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には次のパラメーターが含まれています:\n"),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ユニークなID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターの名前。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターの値。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターを変更する権限。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-25"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.systemParams","id":1,"params":["gap_between_blocks,honor_nodes"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "4",\n "name": "gap_between_blocks",\n "value": "2",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n },\n {\n "id": "6",\n "name": "honor_nodes",\n "value": "",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-history"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-history"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.history")])]),t._v(" "),e("p",[t._v("現在のエコシステムの指定されたデータテーブルのエントリの変更レコードを返します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-26"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブルの名前。")]),t._v(" "),e("li",[e("strong",[t._v("tableId")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリのID。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-6"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には、要求されたエントリの変更レコードが含まれています。")])]),t._v(" "),e("h4",{attrs:{id:"例-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-26"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.history","id":1,"params":["contracts",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "conditions": "ContractConditions(\\"MainCondition\\")",\n "ecosystem": "1",\n "value": "// This contract is used to set \\"developer\\" rights....."\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getpagerow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagerow"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getPageRow")])]),t._v(" "),e("p",[t._v("エコシステムページデータテーブルのフィールドで、現在のエントリを取得します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-27"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - テーブル内のエントリの名前を指定します。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-7"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリの名前。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コンテンツ。")]),t._v(" "),e("li",[e("strong",[t._v("menu")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ディレクトリ。")]),t._v(" "),e("li",[e("strong",[t._v("nodesCount")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ページが検証するノードの数。")]),t._v(" "),e("li",[e("strong",[t._v("app_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アプリケーションID。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターを変更する権限。")])]),t._v(" "),e("h4",{attrs:{id:"例-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-27"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPageRow","id":1,"params":["default_page"]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5,\n "name": "default_page",\n "value": "If(#account_id# == #guest_account#){\\n Include(@1apps_description)\\n}.Else{\\n Include(@1profile)\\n}",\n "menu": "default_menu",\n "nodesCount": 1,\n "app_id": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getmenurow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenurow"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getMenuRow")])]),t._v(" "),e("p",[t._v("エコシステムメニューデータテーブルのフィールドで、現在のエントリを取得します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-28"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - テーブル内のエントリの名前を指定します。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-8"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリの名前。")]),t._v(" "),e("li",[e("strong",[t._v("title")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - タイトル。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コンテンツ。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターを変更する権限。")])]),t._v(" "),e("h4",{attrs:{id:"例-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-28"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenuRow","id":1,"params":["default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 2,\n "name": "default_menu",\n "title": "default",\n "value": "\\nMenuItem.....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getsnippetrow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsnippetrow"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getSnippetRow")])]),t._v(" "),e("p",[t._v("エコシステムスニペットデータテーブルのフィールドから、現在のエントリを取得します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-29"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - テーブル内のエントリの名前を指定します。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-9"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリの名前。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コンテンツ。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターを変更する権限。")])]),t._v(" "),e("h4",{attrs:{id:"例-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-29"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSnippetRow","id":1,"params":["welcome"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 12,\n "name": "welcome",\n "value": "Div(content-wrapper)....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getappcontent"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getappcontent"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getAppContent")])]),t._v(" "),e("p",[t._v("アプリケーションに関連する情報(ページ、スニペット、メニューなど)を取得します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-30"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アプリケーションID")])]),t._v(" "),e("h4",{attrs:{id:"返り値-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-10"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("snippets")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - コードスニペット情報の配列")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コードスニペット名")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("pages")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - ページ情報の配列")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ページ名")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("contracts")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - コントラクト情報の配列")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクト名")])])])]),t._v(" "),e("h4",{attrs:{id:"例-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-30"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "snippets": [ //if not app snippets is null array,example:[]\n {\n "id": 2,\n "name": "developer_link"\n },\n {\n "id": 3,\n "name": "export_info"\n }\n ],\n "pages": [ //if not app pages is null array,example:[]\n {\n "id": 6,\n "name": "menus_list"\n },\n {\n "id": 7,\n "name": "params_edit"\n }\n ],\n "contracts": [ //if not app contracts is null array,example:[]\n {\n "id": 2,\n "name": "MainCondition"\n },\n {\n "id": 33,\n "name": "NodeOwnerCondition"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getmember"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmember"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getMember")])]),t._v(" "),e("p",[t._v("メンバー情報を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-31"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("account")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - メンバー情報")]),t._v(" "),e("li",[e("strong",[t._v("ecosystemId")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコシステムID")])]),t._v(" "),e("h4",{attrs:{id:"返り値-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-11"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - メンバーID")]),t._v(" "),e("li",[e("strong",[t._v("member_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 名前")]),t._v(" "),e("li",[e("strong",[t._v("image_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アバターのID")]),t._v(" "),e("li",[e("strong",[t._v("member_info")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 自己紹介")])]),t._v(" "),e("h4",{attrs:{id:"例-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-31"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}}" -d \'{"jsonrpc":"2.0","method":"ibax.getMember","id":1,"params":["1497-2036-4953-3607-1121",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 14,\n "member_name": "som",\n "image_id": 5, \n "member_info": "{\\"information\\": \\"Everything will be okay in the end. If it\'s not okay, it\'s not the end.\\"}"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getcontracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontracts"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getContracts")])]),t._v(" "),e("p",[t._v("現在のエコシステムのコントラクトのリストを取得します。オフセットとエントリ数を設定することができます。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-32"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" オフセット。デフォルトは0です。")]),t._v(" "),e("li",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" エントリ数。デフォルトは25です。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-12"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリの総数。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には、次のパラメータが含まれます:")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトID。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの名前。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの内容。")]),t._v(" "),e("li",[e("strong",[t._v("wallet_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトがバインドされているアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトにバインドされたウォレットのアドレス "),e("code",[t._v("XXXX-...-XXXX")]),t._v("。")]),t._v(" "),e("li",[e("strong",[t._v("ecosystem_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトが所属するエコシステムのID。")]),t._v(" "),e("li",[e("strong",[t._v("app_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトが所属するアプリケーションのID。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの権限を変更します。")]),t._v(" "),e("li",[e("strong",[t._v("token_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの支払いに使用されるパスのエコシステムID。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-32"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContracts","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 293,\n "list": [\n {\n "address": "0000-0000-0000-0000-0000",\n "app_id": "1",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "ecosystem_id": "1",\n "id": "1",\n "name": "DeveloperCondition",\n "token_id": "1",\n "value": "// This contract is used to ...",\n "wallet_id": "0"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getcontractinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontractinfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getContractInfo")])]),t._v(" "),e("p",[t._v("指定されたコントラクトの情報を返します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-33"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("contractName")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの名前。形式は "),e("code",[t._v("@ecosystem_id%%contractName%")]),t._v(" です。例:@1contractName(指定されたエコシステムID1のcontractNameコントラクト)またはcontractName(現在のエコシステムのcontractNameコントラクト)。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-13"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - VM内のコントラクトID。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステムIDを含むコントラクト名 "),e("code",[t._v("@1MainCondition")]),t._v("。")]),t._v(" "),e("li",[e("strong",[t._v("state")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - コントラクトが所属するエコシステムのID。")]),t._v(" "),e("li",[e("strong",[t._v("walletid")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトがバインドされているアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("tokenid")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの支払いに使用されるパスのエコシステムID。")]),t._v(" "),e("li",[e("strong",[t._v("address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトにバインドされたウォレットのアドレス "),e("code",[t._v("XXXX-...-XXXX")]),t._v("。")]),t._v(" "),e("li",[e("strong",[t._v("tableid")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトが配置されている"),e("em",[t._v("contracts")]),t._v("テーブルのエントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("fields")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - コントラクトの"),e("strong",[t._v("data")]),t._v("セクションの各パラメータの構造情報が含まれる配列:\n"),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータの名前。")]),t._v(" "),e("li",[e("strong",[t._v("type")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータの型。")]),t._v(" "),e("li",[e("strong",[t._v("optional")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - パラメータのオプション。"),e("code",[t._v("true")]),t._v(" はオプションパラメータを意味し、"),e("code",[t._v("false")]),t._v(" は必須パラメータを意味します。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-33"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","id":1,"params":["@1TokensSend"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5098,\n "state": 1,\n "tableid": "98",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Amount",\n "type": "money",\n "optional": false\n },\n {\n "name": "Recipient",\n "type": "string",\n "optional": true\n },\n {\n "name": "iName",\n "type": "string",\n "optional": true\n },\n {\n "name": "Comment",\n "type": "string",\n "optional": true\n },\n {\n "name": "Ecosystem",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1TokensSend"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-sendtx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-sendtx"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.sendTx")])]),t._v(" "),e("p",[t._v("パラメーターでトランザクションを受け取り、それらをトランザクションキューに追加し、リクエストが正常に実行された場合はトランザクションのハッシュを返します。このハッシュはブロック内の対応するトランザクションを指し示し、エラーレスポンスの場合にはエラーテキストメッセージに含まれます。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-34"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" - トランザクションデータオブジェクト\n"),e("ul",[e("li",[e("strong",[t._v("tx_key")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの内容です。このパラメーターは任意の名前を指定でき、複数のトランザクションを受け取ることができます。")])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-14"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hashes")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - トランザクションハッシュの配列:\n"),e("ul",[e("li",[e("strong",[t._v("tx1")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクション1のハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("txN")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションNのハッシュ。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-34"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.sendTx","id":1,"params":[{"tx1":...,"txN":...}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hashes":[\n {"hash1":"hash1"},\n {"hashN":"hashN"}\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-txstatus"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txstatus"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.txStatus")])]),t._v(" "),e("p",[t._v("指定されたトランザクションハッシュのブロックIDとエラーメッセージを取得します。ブロックIDとエラーテキストメッセージの返り値がnullの場合、トランザクションはまだブロックに含まれていません。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-35"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hashes")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションハッシュ。"),e("code",[t._v(",")]),t._v("で区切って指定します。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-15"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - トランザクションハッシュ\n"),e("ul",[e("li",[e("p",[e("strong",[t._v("blockid")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションが正常に実行された場合、ブロックIDが返されます。")]),t._v(" "),e("p",[t._v("トランザクションの実行が失敗した場合、"),e("em",[t._v("blockid")]),t._v(" は "),e("code",[t._v("0")]),t._v(" となり、トランザクションの実行エラーがペナルティにより処理された場合は、対応するブロックIDが返されます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("result")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの結果を "),e("strong",[t._v("$result")]),t._v(" 変数で返します。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("errmsg")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" トランザクションの実行に失敗した場合、エラーテキストメッセージが返されます。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("type")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エラーのタイプ")]),t._v(" "),e("li",[e("strong",[t._v("error")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エラーメッセージ")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("penalty")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションの実行が失敗した場合、(0: ペナルティなし、1: ペナルティあり)")])])])])]),t._v(" "),e("h4",{attrs:{id:"例-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-35"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.txStatus","id":1,"params":["cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9,4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": "793",\n "result": "",\n "penalty": 0\n },\n "cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9": {\n "blockid": "793",\n "errmsg": {\n "type": "warning",\n "error": "platform ecosystem can not be burning Tokens"\n },\n "result": "",\n "penalty": 1\n }\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-txinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.txInfo")])]),t._v(" "),e("p",[t._v("指定されたハッシュに関するトランザクションの情報を返します。ブロックIDと確認数を含みます。オプションのパラメータが指定された場合、コントラクト名と関連するパラメータも返すことができます。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-36"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("contractinfo")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - コントラクトの詳細パラメータ識別子。このトランザクションに関連するコントラクトの詳細を取得します。デフォルトは "),e("code",[t._v("false")]),t._v(" です。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-16"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("blockid")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションが含まれるブロックのID。\n値が "),e("code",[t._v("0")]),t._v(" の場合、このハッシュに対するトランザクションは見つかりません。\nトランザクションが現在のノードで発生した場合、"),e("a",{attrs:{href:"#ibax-txstatus"}},[t._v("ibax.txStatus")]),t._v(" を通じて取得できます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("confirm")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - このブロック "),e("em",[t._v("blockid")]),t._v(" のノードの確認数。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("data")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - "),e("code",[t._v("contractinfo=true")]),t._v(" が指定された場合、コントラクトの詳細情報が返されます。指定されていない場合は null が返されます。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ")]),t._v(" "),e("li",[e("strong",[t._v("block_hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのハッシュ")]),t._v(" "),e("li",[e("strong",[t._v("address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの作成アドレス")]),t._v(" "),e("li",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの送信エコシステムID")]),t._v(" "),e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのハッシュ")]),t._v(" "),e("li",[e("strong",[t._v("expedite")]),t._v(" - "),e("em",[t._v("String")]),t._v(' - 速達料金、利用できない場合は ""')]),t._v(" "),e("li",[e("strong",[t._v("contract_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクト名")]),t._v(" "),e("li",[e("strong",[t._v("params")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - コントラクトのパラメータ、"),e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")]),t._v(" を介してコントラクトフィールドをクエリできます")]),t._v(" "),e("li",[e("strong",[t._v("created_at")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションの作成日時")]),t._v(" "),e("li",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのサイズ、単位: B;KiB;MiB;GiB;TiB")]),t._v(" "),e("li",[e("strong",[t._v("status")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ステータス (0: 成功 1: ペナルティ)")])])])]),t._v(" "),e("h4",{attrs:{id:"例-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-36"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.txInfo","id":1,"params":["020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "blockid": "796",\n "confirm": 0,\n "data": {\n "block_id": 796,\n "block_hash": "bccbc3cf47b49bee5fb7321810884db49b73f5114b0a6fcd234dd3fdf9c22ef4",\n "address": "0666-7782-2939-7671-3160",\n "ecosystem": 2,\n "hash": "020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "1000000000000",\n "Recipient": "0666-7782-2939-7671-3160"\n },\n "created_at": 1678774455841,\n "size": "213.00B",\n "status": 1\n }\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-txinfomultiple"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfomultiple"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.txInfoMultiple")])]),t._v(" "),e("p",[t._v("指定されたハッシュリストに関するトランザクションに関する情報を返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-37"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("hashes")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - トランザクションのハッシュのリスト。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("contractinfo")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - コントラクトの詳細パラメータ識別子。このトランザクションに関連するコントラクトの詳細を取得します。デフォルトは "),e("code",[t._v("false")]),t._v(" です。")])])]),t._v(" "),e("h4",{attrs:{id:"返り値-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-17"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("results")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - トランザクションのハッシュをキー、トランザクションの詳細を値とするデータ辞書。\n"),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのハッシュ。\n"),e("ul",[e("li",[e("strong",[t._v("blockid")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションが含まれるブロックのID。値が "),e("code",[t._v("0")]),t._v(" の場合、そのハッシュに対するトランザクションは見つかりません。")]),t._v(" "),e("li",[e("strong",[t._v("confirm")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - このブロック "),e("em",[t._v("blockid")]),t._v(" の確認数。")]),t._v(" "),e("li",[e("strong",[t._v("data")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - "),e("code",[t._v("contentinfo=true")]),t._v(" が指定された場合、このパラメータにはコントラクトの詳細が返されます。指定されていない場合は null です。\n"),e("ul",[e("li",[e("strong",[t._v("block_id")]),t._v("- "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ")]),t._v(" "),e("li",[e("strong",[t._v("block_hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのハッシュ")]),t._v(" "),e("li",[e("strong",[t._v("address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの作成アドレス")]),t._v(" "),e("li",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの送信エコシステムID")]),t._v(" "),e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのハッシュ")]),t._v(" "),e("li",[e("strong",[t._v("expedite")]),t._v(" - "),e("em",[t._v("String")]),t._v(' - 速達料金、利用できない場合は ""')]),t._v(" "),e("li",[e("strong",[t._v("contract_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクト名")]),t._v(" "),e("li",[e("strong",[t._v("params")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - コントラクトのパラメータ、"),e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")]),t._v(" を介してコントラクトフィールドをクエリできます")]),t._v(" "),e("li",[e("strong",[t._v("created_at")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションの作成日時")]),t._v(" "),e("li",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのサイズ、単位: B;KiB;MiB;GiB;TiB")]),t._v(" "),e("li",[e("strong",[t._v("status")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ステータス (0:成功 1:ペナルティ)")])])])])])])])]),t._v(" "),e("h4",{attrs:{id:"例-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-37"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":[["1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284","4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"],true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "results": {\n "1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284": {\n "blockid": 0,\n "confirm": 0,\n "data": null\n },\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": 793,\n "confirm": 0,\n "data": {\n "block_id": 793,\n "block_hash": "ef3b2f2e18662e0b8bba136a209e30c5aae76d9a82e0b21209786f62fe5676e4",\n "address": "0666-0819-7161-7879-5186",\n "ecosystem": 1,\n "hash": "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "200",\n "Comment": "Hello Dear",\n "Recipient": "1196-2490-5275-7101-3496"\n },\n "created_at": 1678765099072,\n "size": "297.00B",\n "status": 0\n }\n }\n }\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getpagevalidatorscount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagevalidatorscount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getPageValidatorsCount")])]),t._v(" "),e("p",[t._v("指定されたページに対して検証する必要があるノードの数を返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-38"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ページ名。"),e("code",[t._v("@ecosystem_id%%%page_name%")]),t._v(" の形式で指定します。例: @1params_list (エコロジー1のページ名 params_list) や params_list (現在のエコロジーのページ名 params_list)。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-18"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("validate_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ページに対して検証する必要があるノードの数を指定します。")])]),t._v(" "),e("h4",{attrs:{id:"例-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-38"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "validate_count": 1\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getpage"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpage"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getPage")])]),t._v(" "),e("p",[t._v("指定されたページ名のコードJSONオブジェクトのツリーを取得します。このツリーはテンプレートエンジンによる処理の結果です。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-39"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ページ名。"),e("code",[t._v("@ecosystem_id%%page_name%")]),t._v(" の形式で指定します。例: "),e("code",[t._v("@1main_page")]),t._v("。")]),t._v(" "),e("p",[t._v("エコシステムIDが指定されていない場合、現在のエコロジーのページを検索します。例: "),e("code",[t._v("main_page")])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-19"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("menu")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ページが所属するメニューの名前です。")]),t._v(" "),e("li",[e("strong",[t._v("menutree")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - ページのメニューのJSONオブジェクトツリーです。")]),t._v(" "),e("li",[e("strong",[t._v("tree")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - ページのJSONオブジェクトツリーです。")])]),t._v(" "),e("h4",{attrs:{id:"例-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-39"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPage","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "menu": "developer_menu",\n "menutree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ],\n "tree": [\n {\n ....\n }\n ...\n ],\n "nodesCount": 1\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getmenu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenu"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getMenu")])]),t._v(" "),e("p",[t._v("指定されたメニュー名のコードJSONオブジェクトツリーを取得します。このメニューはテンプレートエンジンによる処理の結果です。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-40"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" -\n"),e("blockquote",[e("p",[t._v("メニュー名は "),e("code",[t._v("@ecosystem_id%%%menu_name%")]),t._v(" の形式で指定します。例: "),e("code",[t._v("@1main_menu")]),t._v("。\nエコシステムIDを指定しない場合は、デフォルトで現在のエコロジーのメニューが見つかります。例: "),e("code",[t._v("main_menu")])])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-20"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("title")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - メニューのタイトル。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("tree")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - メニューのJSONオブジェクトツリー。")])])]),t._v(" "),e("h4",{attrs:{id:"例-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-40"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenu","id":1,"params":["@1default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "title": "default",\n "tree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getsource"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsource"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getSource")])]),t._v(" "),e("p",[t._v("指定されたページ名のコード化されたJSONオブジェクトツリーを返します。いかなる関数も実行せず、データを受信しません。返されるJSONオブジェクトツリーは、ページのテンプレートに対応し、ビジュアルページデザイナーで使用することができます。ページが見つからない場合は、404エラーが返されます。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-41"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" -\nページ名は "),e("code",[t._v("@ecosystem_id%%%page_name%")]),t._v(" の形式で指定します。例: "),e("code",[t._v("@1main_page")]),t._v("。\nエコシステムIDを持たない場合は、デフォルトで現在のエコロジーのページが見つかります。例: "),e("code",[t._v("main_page")])])]),t._v(" "),e("h4",{attrs:{id:"返り値-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-21"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("tree")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - ページのJSONオブジェクトツリー。")])]),t._v(" "),e("h4",{attrs:{id:"例-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-41"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSource","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": [\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1applications"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"name\\": \\"System\\"}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "setvar",\n "attr": {\n "name": "role_developer_id",\n "value": "AppParam(Ecosystem: #ecosystem_id#, App: #application_id#, Name: role_developer)"\n }\n },\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1roles_participants"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"$and\\": [{\\"role->id\\": {\\"$in\\": [#role_developer_id#]}}, {\\"role->id\\": \\"#role_id#\\"}], \\"member->account\\": \\"#account_id#\\", \\"deleted\\": 0}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "if",\n "attr": {\n "condition": "#developer_access_id#>0"\n },\n "children": [\n {\n "tag": "setvar",\n "attr": {\n "name": "this_page",\n "value": "@1params_list"\n }\n }\n\t\t\t\t\t\t...\n ],\n "tail": [\n {\n "tag": "else",\n "children": [\n {\n "tag": "settitle",\n "attr": {\n "title": "$@1ecosystem_parameters$"\n }\n }\n\t\t\t\t\t\t\t\t...\n ]\n }\n ]\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getpagehash"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagehash"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getPageHash")])]),t._v(" "),e("p",[t._v("指定されたページ名のSHA256ハッシュを返します。ページが見つからない場合は404エラーが返されます。")]),t._v(" "),e("p",[t._v("他のノードにリクエストを行う際に正しいハッシュを受け取るためには、"),e("em",[t._v("ecosystem,key_id,role_id")]),t._v(" パラメーターも渡す必要があります。他のエコシステムからページを受け取るには、ページ名の前にエコシステムIDを付ける必要があります。例:"),e("code",[t._v("@2mypage")]),t._v("。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-42"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-42"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステムIDを含むページの名前。形式は "),e("code",[t._v("@ecosystem_id%%%page_name%")]),t._v(" です。例: "),e("code",[t._v("@1main_page")]),t._v("。エコシステムIDを指定することもできます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" エコシステムID。")])]),t._v(" "),e("li",[e("p",[e("em",[t._v("Object")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" 指定されたページオブジェクトを取得する場合")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("role_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ロールID。")])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-22"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" -\n"),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 16進数のハッシュ値。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-42"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-42"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageHash","id":1,"params":["@1params_list",0,{"role_id":"1","key_id":"-6484253546138538120"}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "fc5ed3b5e879dd5521dfb792e815019bd8411851e850e75a3590d71e950a0465"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getcontent"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontent"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getContent")])]),t._v(" "),e("p",[t._v("オプションのパラメーター "),e("strong",[t._v("source")]),t._v(" が "),e("code",[t._v("true")]),t._v(" と指定されている場合、"),e("strong",[t._v("template")]),t._v(" パラメーターのページコードからJSONオブジェクトの数を返します。このJSONオブジェクトツリーは、関数を実行せずにデータを受信しないものです。このJSONオブジェクトツリーは、ビジュアルページデザイナーで使用することができます。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-43"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-43"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("template")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ページコード。")]),t._v(" "),e("li",[e("strong",[t._v("source")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - "),e("code",[t._v("true")]),t._v(" と指定されている場合、JSONオブジェクトツリーは関数を実行せずにデータを受信しません。")])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-23"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("tree")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - JSONオブジェクトツリー。")])]),t._v(" "),e("h4",{attrs:{id:"例-43"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-43"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getContent","id":1,"params":[{"template","..."source":true}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": {\n "type":"......", \n "children": [\n {...},\n {...}\n ]\n }\n }\n }\n \n')])])]),e("h3",{attrs:{id:"ibax-getblockinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockinfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getBlockInfo")])]),t._v(" "),e("p",[t._v("指定されたブロックIDに関する情報を返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-44"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-44"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-24"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのハッシュ値。")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックに署名したアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの生成タイムスタンプ。")]),t._v(" "),e("li",[e("strong",[t._v("tx_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック内のトランザクションの総数。")]),t._v(" "),e("li",[e("strong",[t._v("rollbacks_hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのロールバックハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックのエンドポイントリスト内での位置。")]),t._v(" "),e("li",[e("strong",[t._v("consensus_mode")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - コンセンサスモード(1: クリエーターマネージメントモード、2: DAOガバナンスモード)。")])]),t._v(" "),e("h4",{attrs:{id:"例-44"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-44"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlockInfo","id":1,"params":[12]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "Hl+/VvYFFu4iq4zLrRDGHBhm7DM7llEAfEJyaX2Q3is=",\n "key_id": 6667782293976713160,\n "time": 1677134955,\n "tx_count": 1,\n "rollbacks_hash": "o37QAighKMb8WqbEHAqCQb5bOfMvOqV0WoTaN631q74=",\n "node_position": 0,\n "consensus_mode": 1\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getconfig"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getconfig"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getConfig")])]),t._v(" "),e("p",[t._v("centrifugoのホストアドレスとポートを取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-45"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-45"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("option")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 設定項目")]),t._v(" "),e("ol",[e("li",[t._v('"centrifugo" - メッセージングサービス')])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-25"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("centrifugo")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" centrifugoのホストアドレスとポート。結果の形式は "),e("code",[t._v("http://address:port")]),t._v(" となります。例: "),e("code",[t._v("http://127.0.0.1:8100")]),t._v("。")])]),t._v(" "),e("h4",{attrs:{id:"例-45"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-45"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getConfig","id":1,"params":["centrifugo"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "centrifugo":"http://127.0.0.1:8100"\n }\n }\n')])])]),e("h3",{attrs:{id:"net-getnetwork"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#net-getnetwork"}},[t._v("#")]),t._v(" "),e("strong",[t._v("net.getNetwork")])]),t._v(" "),e("p",[t._v("ノードの情報を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-46"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-46"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-26"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("network_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ネットワークの識別子。")]),t._v(" "),e("li",[e("strong",[t._v("centrifugo_url")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - centrifugoメッセージサービスのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("test")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - テストチェーンであるかどうか。")]),t._v(" "),e("li",[e("strong",[t._v("private")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - チェーンがプライベートであるかどうか。")]),t._v(" "),e("li",[e("strong",[t._v("honor_nodes")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - honorノードのリスト。\n"),e("ul",[e("li",[e("strong",[t._v("tcp_address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - TCPアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("api_address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - APIアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("public_key")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ノードの公開鍵。")]),t._v(" "),e("li",[e("strong",[t._v("unban_time")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アンバンの時間。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-46"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-46"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.getNetwork","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "network_id": "1",\n "centrifugo_url": "127.0.0.1",\n "test": false,\n "private": false,\n "honor_nodes": [\n {\n "tcp_address": "127.0.0.1:7078",\n "api_address": "http://127.0.0.1:7078",\n "public_key": "049a41b24862f8db61ee66fb206094baa57bfeac7ea786d63662a964d144eb85d1a0e230928d56f46dd61eefac7640b6aa2883b2445c7b2adc0e581f983ff0aedb",\n "unban_time": "-62135596800"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"net-status"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#net-status"}},[t._v("#")]),t._v(" "),e("strong",[t._v("net.status")])]),t._v(" "),e("p",[t._v("現在のノードのステータスを取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-47"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-47"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-27"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("status")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ノードのステータス\n"),e("ul",[e("li",[t._v('"node server status is running" - ノードが稼働中です')]),t._v(" "),e("li",[t._v('"node server is updating" - ノードが更新中です')]),t._v(" "),e("li",[t._v('"node server is stopped" - ノードが停止中です')])])])]),t._v(" "),e("h4",{attrs:{id:"例-47"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-47"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.status","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "node server status is running"\n }\n')])])]),e("h3",{attrs:{id:"rpc-modules"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rpc-modules"}},[t._v("#")]),t._v(" "),e("strong",[t._v("rpc.modules")])]),t._v(" "),e("p",[t._v("現在登録されているJSON-RPCインターフェースを取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-48"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-48"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-28"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("Array")]),t._v(" - JSON-RPCインターフェースの配列")])]),t._v(" "),e("h4",{attrs:{id:"例-48"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-48"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"rpc.modules","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n "net.getNetwork",\n "ibax.getAppContent",\n "ibax.honorNodesCount",\n "ibax.maxBlockId",\n "ibax.detailedBlock",\n "ibax.getConfig",\n "ibax.getTableCount",\n "ibax.getMenu"\n ]\n }\n')])])]),e("h3",{attrs:{id:"admin-startjsonrpc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#admin-startjsonrpc"}},[t._v("#")]),t._v(" "),e("strong",[t._v("admin.startJsonRpc")])]),t._v(" "),e("p",[t._v("JSON-RPCの名前空間サービスの切り替えに使用できます。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-49"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-49"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[e("strong",[t._v("methods")]),t._v(" - "),e("em",[t._v("String")]),t._v(' - JSON-RPCモジュール、デフォルト値: "ibax,net"')]),t._v(" "),e("h4",{attrs:{id:"返り値-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-29"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("bool")]),t._v(" - 実行のステータス")])]),t._v(" "),e("h4",{attrs:{id:"例-49"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-49"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.startJsonRpc","id":1,"params":["ibax,net,admin"]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),e("h3",{attrs:{id:"admin-stopjsonrpc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#admin-stopjsonrpc"}},[t._v("#")]),t._v(" "),e("strong",[t._v("admin.stopJsonRpc")])]),t._v(" "),e("p",[t._v("JSON-RPCサービスを閉じることができます。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-50"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-50"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-30"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("bool")]),t._v(" - 実行のステータス")])]),t._v(" "),e("h4",{attrs:{id:"例-50"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-50"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.stopJsonRpc","id":1,"params":[]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),e("h3",{attrs:{id:"debug-getnodebanstat"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#debug-getnodebanstat"}},[t._v("#")]),t._v(" "),e("strong",[t._v("debug.getNodeBanStat")])]),t._v(" "),e("p",[t._v("ノードの無効化状態を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-51"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-51"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-31"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("p",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ノードの添字\n"),e("strong",[t._v("status")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - 無効化の状態。"),e("code",[t._v("true")]),t._v("は無効化されていることを示し、"),e("code",[t._v("false")]),t._v("は無効化されていないことを示します。")]),t._v(" "),e("h4",{attrs:{id:"例-51"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-51"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getNodeBanStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n {\n "node_position": 0,\n "status": true\n }\n ]\n }\n')])])]),e("h3",{attrs:{id:"debug-getmemstat"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#debug-getmemstat"}},[t._v("#")]),t._v(" "),e("strong",[t._v("debug.getMemStat")])]),t._v(" "),e("p",[t._v("現在のノードのメモリ使用状況を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-52"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-52"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-32"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("alloc")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - リクエストされたバイト数およびまだ使用中のバイト数")]),t._v(" "),e("li",[e("strong",[t._v("sys")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - システムから取得されたバイト数")])]),t._v(" "),e("h4",{attrs:{id:"例-52"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-52"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getMemStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "alloc": 11537432,\n "sys": 35329248\n }\n }\n')])])])])}),[],!1,null,null,null);a.default=_.exports}}]); \ No newline at end of file diff --git a/assets/js/96.e8b2265d.js b/assets/js/96.e8b2265d.js deleted file mode 100644 index 39f8fe1..0000000 --- a/assets/js/96.e8b2265d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{476:function(t,a,e){"use strict";e.r(a);var n=e(51),_=Object(n.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"json-rpc-アプリケーション-プログラミング-インターフェイス"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-アプリケーション-プログラミング-インターフェイス"}},[t._v("#")]),t._v(" JSON-RPC アプリケーション プログラミング インターフェイス")]),t._v(" "),e("p",[t._v("ソフトウェア アプリケーションが IBAX ブロックチェーンと対話するには (ブロック データを取得したり、トランザクションをネットワークに送信したり)、ソフトウェア アプリケーションは IBAX ネットワーク ノードに接続されている必要があります。")]),t._v(" "),e("p",[t._v("元の REST API インターフェイスの汎用性と拡張性により、インターフェイスとクライアントの数がますます増え、ますます複雑になります。 私たちは、特定のノードやクライアントの実装に関係なく、すべてのクライアントが同じ仕様セットを使用できるようにするためのインターフェイスの統合の重要性を認識しています。")]),t._v(" "),e("p",[t._v("JSON-RPC は、ステートレスで軽量なリモート プロシージャ コール (RPC) プロトコルです。 これは、多数のデータ構造とその処理ルールを定義します。 これらの概念は、インターフェイス、ハイパーテキスト転送プロトコル、または多くの異なるメッセージング環境を介して同じプロセスで使用できるため、トランスポートに依存しません。 データ形式として JSON (RFC 4627) を使用します。")]),t._v(" "),e("p",[t._v("JSON-RPC は、ほとんどの REST API インターフェイスと互換性があり、元の REST API インターフェイスを保持しており、REST API インターフェイスを使用するクライアントは、インターフェイスの一部である JSON-RPC インターフェイスに簡単に転送できます。")]),t._v(" "),e("ul",[e("li",[e("RouterLink",{attrs:{to:"/ja/reference/api2.html#data-id-data-hash"}},[t._v("/data/{id}/data/{hash}")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/ja/reference/api2.html#data-table-id-column-hash"}},[t._v("/data/{table}/id/{column}/{hash}")])],1),t._v(" "),e("li",[e("RouterLink",{attrs:{to:"/ja/reference/api2.html#avatar-ecosystem-member"}},[t._v("avatar/{ecosystem}/{member}")])],1)]),t._v(" "),e("p",[t._v("REST API インターフェイスを通じて利用できます。")]),t._v(" "),e("h2",{attrs:{id:"client-sideの実装"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#client-sideの実装"}},[t._v("#")]),t._v(" Client-sideの実装")]),t._v(" "),e("p",[t._v("SON-RPC 仕様を実装する場合、各クライアントは異なるプログラミング言語を使用できます。\n"),e("a",{attrs:{href:"https://github.com/IBAX-io/go-ibax-sdk",target:"_blank",rel:"noopener noreferrer"}},[t._v("GO-SDK"),e("OutboundLink")],1)]),t._v(" "),e("h2",{attrs:{id:"curlの例"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#curlの例"}},[t._v("#")]),t._v(" Curlの例")]),t._v(" "),e("p",[t._v("以下に、IBAX ノードに対してcurlリクエストを行うことによるJSON RPC APIの使用例を示します。 各例には、特定のエンドポイント、そのパラメーター、戻り値の型、およびその使用方法の実例の説明が含まれています。")]),t._v(" "),e("p",[t._v('Curl リクエストは、コンテンツ タイプに関連するエラー メッセージを返す場合があります。 これは、 --data オプションによってコンテンツ タイプが application/x-www-form-urlencoded に設定されるためです。 リクエストにこの問題がある場合は、呼び出しの先頭に -H "Content-Type: application/json" を配置して、ヘッダーを手動で設定します。 これらの例には、curl の最後のパラメータである必要がある URL/インターネット プロトコルとポートの組み合わせも含まれていません (例: 127.0.0.1:7079)。この追加データを含む完全なcurl リクエストは次の形式になります。')]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","params":[],"id":1}\' http://127.0.0.1:7079\t\n')])])]),e("h2",{attrs:{id:"契約"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#契約"}},[t._v("#")]),t._v(" 契約")]),t._v(" "),e("h3",{attrs:{id:"hex"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hex"}},[t._v("#")]),t._v(" Hex")]),t._v(" "),e("p",[e("strong",[t._v("16進数コード")])]),t._v(" "),e("p",[t._v("バイト配列、ハッシュ、およびバイトコード配列をエンコードする場合: エンコードは 16 進数で、1 バイトあたり 2 桁の 16 進数になります。")]),t._v(" "),e("h3",{attrs:{id:"リクエストの種類"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#リクエストの種類"}},[t._v("#")]),t._v(" リクエストの種類")]),t._v(" "),e("p",[e("strong",[t._v("Uniformの使用")])]),t._v(" "),e("ul",[e("li",[t._v("Content-Type: application/json")])]),t._v(" "),e("h3",{attrs:{id:"特殊マーカー"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#特殊マーカー"}},[t._v("#")]),t._v(" 特殊マーカー")]),t._v(" "),e("h4",{attrs:{id:"omitempty"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#omitempty"}},[t._v("#")]),t._v(" Omitempty")]),t._v(" "),e("p",[t._v("このフィールドはオプションのパラメータです。")]),t._v(" "),e("p",[t._v("行に複数の "),e("code",[t._v("Omitempty")]),t._v(" フィールドがある場合、\n特定のフィールドの値のみを渡したい場合は、不要なフィールドを null(フィールドタイプの null 値)に設定する必要があります。例:")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" id")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" Name")]),t._v(" "),e("li",[e("strong",[t._v("column")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" Filter column names")])]),t._v(" "),e("p",[t._v("名前の値のみが渡される場合、リクエストパラメータは以下のように渡されます\n"),e("code",[t._v('"params":[0, "testname"]')]),t._v(" - "),e("em",[t._v("Number")]),t._v(" null 値は 0")]),t._v(" "),e("p",[t._v("カラムの値のみが渡される場合、リクエストパラメータは以下のように渡されます\n"),e("code",[t._v('"params":[0,"", "title,page"]')]),t._v(" - "),e("em",[t._v("String")]),t._v(" 空の値は")]),t._v(" "),e("h4",{attrs:{id:"認証"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#認証"}},[t._v("#")]),t._v(" 認証")]),t._v(" "),e("p",[t._v("認証ヘッダー、リクエストヘッダーにAuthorizationを追加します。例:")]),t._v(" "),e("p",[e("strong",[t._v("name")]),t._v(" : Authorization\n"),e("strong",[t._v("value")]),t._v(" : Bearer +"),e("a",{attrs:{href:"#ibax-login"}},[t._v("ログイントークン")])]),t._v(" "),e("p",[t._v("例:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","params":["@1TokensSend"],"id":1}\' http://127.0.0.1:7079\n\n')])])]),e("h4",{attrs:{id:"accountorkeyid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#accountorkeyid"}},[t._v("#")]),t._v(" AccountOrKeyId")]),t._v(" "),e("p",[t._v("アカウントアドレスのパラメータでは、2つの形式のアドレスを使用できます。例えば")]),t._v(" "),e("ol",[e("li",[e("ul",[e("li",[e("em",[t._v("String")]),t._v(" - アカウントアドレス "),e("code",[t._v('"XXXX-XXXX-XXXX-XXXX-XXXX"')]),t._v(" またはアカウントID "),e("code",[t._v('"64842...538120"')])])])]),t._v(" "),e("li",[e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" - アドレスオブジェクト")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アカウントID、例: "),e("code",[t._v('{"key_id":-64842 38120}')])]),t._v(" "),e("li",[e("strong",[t._v("account")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレス、例: "),e("code",[t._v('{"account": "1196-... - -... -3496"}')])])]),t._v(" "),e("p",[e("strong",[t._v("アカウントIDが存在する場合、アカウントアドレスとアカウントIDの両方がある場合はアカウントIDが優先されます")]),t._v("。")])])]),t._v(" "),e("h4",{attrs:{id:"blockorhash"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#blockorhash"}},[t._v("#")]),t._v(" BlockOrHash")]),t._v(" "),e("p",[t._v("ブロックの高さまたはブロックのハッシュ、例:")]),t._v(" "),e("ol",[e("li",[e("ul",[e("li",[e("em",[t._v("String")]),t._v(" - ブロックの高さ "),e("code",[t._v('"100"')]),t._v(" または ブロックのハッシュ "),e("code",[t._v('"4663aa47...a60753c18d9ba9cb4"')])])])]),t._v(" "),e("li",[e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" - ブロック情報オブジェクト")]),t._v(" "),e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ、例: "),e("code",[t._v('{"id":2}')])]),t._v(" "),e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックのハッシュ、例: "),e("code",[t._v('{"hash": "d36b8996c c616d3043a0d02a0f59"}')])])]),t._v(" "),e("p",[e("strong",[t._v("ブロックの高さとブロックのハッシュはどちらか一方を選択できます")]),t._v("。")])])]),t._v(" "),e("h3",{attrs:{id:"バッチリクエスト"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#バッチリクエスト"}},[t._v("#")]),t._v(" バッチリクエスト")]),t._v(" "),e("p",[t._v("この機能は、特に大量の大部分が独立したデータオブジェクトを取得する場合にネットワークのレイテンシを低減するために使用できます。")]),t._v(" "),e("p",[t._v("以下は、最高ブロックとトランザクションの総数を取得する例です:")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'[{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]},{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":2,"params":[]}]\' http://127.0.0.1:7079\n\n //Response\n [\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149100\n },\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": 797\n }\n ]\n')])])]),e("h3",{attrs:{id:"エラーレスポンスの処理"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#エラーレスポンスの処理"}},[t._v("#")]),t._v(" エラーレスポンスの処理")]),t._v(" "),e("p",[t._v("リクエストが正常に実行された場合、ステータスコード "),e("code",[t._v("200")]),t._v(" が返されます。")]),t._v(" "),e("p",[t._v("エラーが発生した場合、以下のフィールドを持つJSONオブジェクトが返されます:")]),t._v(" "),e("ul",[e("li",[t._v("jsonrpc\nエラー識別子。")]),t._v(" "),e("li",[t._v("id\nエラーテキストメッセージ。")]),t._v(" "),e("li",[t._v("error\n"),e("ul",[e("li",[t._v("code\nレスポンスステータスコード")]),t._v(" "),e("li",[t._v("message\nレスポンスステータスの説明")])])])]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{\n "jsonrpc": "2.0",\n "id": 1,\n "error": {\n "code": -32014,\n "message": "Unauthorized"\n }\n}\n')])])]),e("h2",{attrs:{id:"json-rpc-ネームスペース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-ネームスペース"}},[t._v("#")]),t._v(" JSON-RPC ネームスペース")]),t._v(" "),e("h3",{attrs:{id:"ibax-ネームスペース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ネームスペース"}},[t._v("#")]),t._v(" ibax ネームスペース")]),t._v(" "),e("h4",{attrs:{id:"認証インターフェース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#認証インターフェース"}},[t._v("#")]),t._v(" 認証インターフェース")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-getuid"}},[t._v("ibax.getuid")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-login"}},[t._v("ibax.login")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getauthstatus"}},[t._v("ibax.getAuthStatus")])])]),t._v(" "),e("h4",{attrs:{id:"server-sideのコマンドインターフェイス"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#server-sideのコマンドインターフェイス"}},[t._v("#")]),t._v(" server-sideのコマンドインターフェイス")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-getversion"}},[t._v("ibax.getVersion")])])]),t._v(" "),e("h4",{attrs:{id:"データリクエスト機能インターフェース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#データリクエスト機能インターフェース"}},[t._v("#")]),t._v(" データリクエスト機能インターフェース")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-getbalance"}},[t._v("ibax.getBalance")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getblockstxinfo"}},[t._v("ibax.getBlocksTxInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-detailedblocks"}},[t._v("ibax.detailedBlocks")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getkeyinfo"}},[t._v("ibax.getKeyInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-detailedblock"}},[t._v("ibax.detailedBlock")])])]),t._v(" "),e("h4",{attrs:{id:"メトリクスの取得インターフェイス"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#メトリクスの取得インターフェイス"}},[t._v("#")]),t._v(" メトリクスの取得インターフェイス")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-maxblockid"}},[t._v("ibax.maxBlockId")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getkeyscount"}},[t._v("ibax.getKeysCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-gettxcount"}},[t._v("ibax.getTxCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-gettransactioncount"}},[t._v("ibax.getTransactionCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getblockscountbynode"}},[t._v("ibax.getBlocksCountByNode")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-honornodescount"}},[t._v("ibax.honorNodesCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getecosystemcount"}},[t._v("ibax.getEcosystemCount")])])]),t._v(" "),e("h4",{attrs:{id:"エコシステムインターフェース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#エコシステムインターフェース"}},[t._v("#")]),t._v(" エコシステムインターフェース")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-ecosysteminfo"}},[t._v("ibax.ecosystemInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-appparams"}},[t._v("ibax.appParams")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getecosystemparams"}},[t._v("ibax.getEcosystemParams")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-gettablecount"}},[t._v("ibax.getTableCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-gettable"}},[t._v("ibax.getTable")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getlist"}},[t._v("ibax.getList")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getsections"}},[t._v("ibax.getSections")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getrow"}},[t._v("ibax.getRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-systemparams"}},[t._v("ibax.systemParams")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-history"}},[t._v("ibax.history")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getpagerow"}},[t._v("ibax.getPageRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getmenurow"}},[t._v("ibax.getMenuRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getsnippetrow"}},[t._v("ibax.getSnippetRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getappcontent"}},[t._v("ibax.getAppContent")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getmember"}},[t._v("ibax.getMember")])])]),t._v(" "),e("h4",{attrs:{id:"スマートコントラクト機能インターフェース"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#スマートコントラクト機能インターフェース"}},[t._v("#")]),t._v(" スマートコントラクト機能インターフェース")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#ibax-getcontracts"}},[t._v("ibax.getContracts")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-sendtx"}},[t._v("ibax.sendTx")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-txstatus"}},[t._v("ibax.txStatus")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-txinfo"}},[t._v("ibax.txInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-txinfomultiple"}},[t._v("ibax.txInfoMultiple")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getpagevalidatorscount"}},[t._v("ibax.getPageValidatorsCount")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getpage"}},[t._v("ibax.getPage")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getmenu"}},[t._v("ibax.getMenu")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getsource"}},[t._v("ibax.getSource")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getpagehash"}},[t._v("ibax.getPageHash")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getcontent"}},[t._v("ibax.getContent")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getblockinfo"}},[t._v("ibax.getBlockInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ibax-getconfig"}},[t._v("ibax.getConfig")])])]),t._v(" "),e("h3",{attrs:{id:"ネット名前空間"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ネット名前空間"}},[t._v("#")]),t._v(" ネット名前空間")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#net-getnetwork"}},[t._v("net.getNetwork")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#net-status"}},[t._v("net.status")])])]),t._v(" "),e("h3",{attrs:{id:"rpc名前空間"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rpc名前空間"}},[t._v("#")]),t._v(" rpc名前空間")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#rpc-modules"}},[t._v("rpc.modules")])])]),t._v(" "),e("h3",{attrs:{id:"admin名前空間"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#admin名前空間"}},[t._v("#")]),t._v(" admin名前空間")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#admin-startjsonrpc"}},[t._v("admin.startJsonRpc")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#admin-stopjsonrpc"}},[t._v("admin.stopJsonRpc")])])]),t._v(" "),e("h3",{attrs:{id:"debug名前空間"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#debug名前空間"}},[t._v("#")]),t._v(" debug名前空間")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#debug-getnodebanstat"}},[t._v("debug.getNodeBanStat")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#debug-getmemstat"}},[t._v("debug.getMemStat")])])]),t._v(" "),e("h2",{attrs:{id:"json-rpc-インターフェースメソッド"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#json-rpc-インターフェースメソッド"}},[t._v("#")]),t._v(" JSON-RPC インターフェースメソッド")]),t._v(" "),e("h3",{attrs:{id:"ibax-getuid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getuid"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getUid")])]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")]),t._v(" "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")])]),t._v(" "),e("p",[e("a",{attrs:{href:"#ibax-login"}},[e("strong",[t._v("login")])]),t._v("を呼び出す際に、"),e("a",{attrs:{href:"#authorization"}},[e("strong",[t._v("Authorization")])]),t._v("に渡す必要がある一時的なJWTトークンを生成します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("uid")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 署名の数値。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("token")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ログイン時に渡される一時トークン(一時トークンの寿命は5秒)。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("network_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ネットワークの識別子。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("cryptoer")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 楕円曲線アルゴリズム。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("hasher")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ハッシュアルゴリズム。")])])]),t._v(" "),e("p",[t._v("認証が必要ない場合(リクエストに"),e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")]),t._v("が含まれている場合)、以")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("expire")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 有効期限。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステムID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレス。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ウォレットアドレス "),e("code",[t._v("XXXX-XXXXXX-XXXX-XXXX-XXXX")]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("network_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ネットワークの識別子。")])])]),t._v(" "),e("h4",{attrs:{id:"例"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response1\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "uid": "5823391950439015186",\n "token": "ey....",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ey...." -d \'{"jsonrpc":"2.0","method":"ibax.getUid","params":[],"id":1}\' http://127.0.0.1:7079\n\n //Response2\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "expire": "7h59m49.5361126s",\n "ecosystem_id": "1",\n "key_id": "6667782293976713160",\n "address": "0666-7782-2939-7671-3160",\n "network_id": "1",\n "cryptoer": "ECC_Secp256k1",\n "hasher": "KECCAK256"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-login"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-login"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.login")])]),t._v(" "),e("p",[t._v("ユーザー認証。"),e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("p",[t._v("最初に"),e("a",{attrs:{href:"#ibax-getuid"}},[e("strong",[t._v("ibax.getUid")])]),t._v("コマンドを呼び出して、一意の値を受信し、署名する必要があります。getuidの一時的なJWTトークンは、リクエストヘッダーに渡す必要があります。リクエストが成功した場合、レスポンスで受信したトークンは"),e("a",{attrs:{href:"#authorization"}},[e("strong",[t._v("Authorization")])]),t._v("に含まれます。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-2"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - 認証呼び出しオブジェクト")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("ecosystem_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコシステムID。指定されていない場合、最初のエコシステムIDにデフォルト設定されます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("expire")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - JWTトークンのライフサイクル(秒単位)、デフォルトは28800、8時間です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("public_key")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - 16進数のアカウント公開鍵。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" -")]),t._v(" "),e("blockquote",[e("p",[t._v("アカウントアドレス「XXXX-...-XXXX」。")]),t._v(" "),e("p",[t._v("公開鍵がすでにブロックチェーンに保存されている場合、このパラメーターを使用します。"),e("em",[t._v("pubkey")]),t._v("パラメーターとは一緒に使用できません。")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("signature")]),t._v(" - "),e("em",[t._v("String")]),t._v(" -\ngetuidで受信したuidに対して、秘密鍵を使用して署名します。")]),t._v(" "),e("p",[t._v("署名データの内容:LOGIN+{$network_id}+uid")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("role_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ロールID、デフォルトロール0")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-2"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - 認証オブジェクト")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("token")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - JWTトークン。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ecosystem_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステムID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレスID")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("account")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ウォレットアドレス「XXXX-XXXXXX-XXXX-XXXX-XXXX」。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("notify_key")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 通知ID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("isnode")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - アカウントアドレスがノードのオーナーであるかどうか。値:"),e("code",[t._v("true,false")]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("isowner")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - アカウントアドレスがこのエコシステムの作成者であるかどうか。値:"),e("code",[t._v("true,false")]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("clb")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - ログインしたエコシステムがCLBであるかどうか。値:"),e("code",[t._v("true,false")]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("timestamp")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 現在のタイムスタンプ")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("roles")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - ロールのリスト。ロールがない場合、このフィールドはnilです。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("role_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ロールID")]),t._v(" "),e("li",[e("strong",[t._v("role_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ロール名")])])])]),t._v(" "),e("h4",{attrs:{id:"例-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-2"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.login","params":[{"ecosystem_id":1,"public_key":"04....","signature","46...","role_id":0}],"id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "token": "ey...",\n "ecosystem_id": "1",\n "key_id": "6660819716178795186",\n "account": "0666-xxxx-xxxx-xxxx-5186",\n "notify_key": "ey....",\n "isnode": false,\n "isowner": false,\n "clb": false,\n "timestamp": "1678336163",\n "roles": nil //[{"role_id": 1, "role_name": "Developer"},{"role_id": 2, "role_name": "DevelopGovernancerer"}]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getauthstatus"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getauthstatus"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getAuthStatus")])]),t._v(" "),e("p",[t._v("ユーザー認証ステータス\n"),e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-3"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-3"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - 認証ステータスオブジェクト")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("active")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - 現在のユーザー認証ステータス。値:"),e("code",[t._v("true,false")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("exp")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" トークン有効期限の切り捨てタイムスタンプ")])])]),t._v(" "),e("h4",{attrs:{id:"例-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-3"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getAuthStatus","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "active": true,\n "exp": 1678354136\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getversion"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getversion"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getVersion")])]),t._v(" "),e("p",[t._v("現在のサーバーバージョンを返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-4"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-4"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("vesion")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - バージョン番号("),e("code",[t._v("big Version")]),t._v(" + "),e("code",[t._v("branch name")]),t._v(" + "),e("code",[t._v("git commit")]),t._v(" + "),e("code",[t._v("time")]),t._v(" + "),e("code",[t._v("node status")]),t._v(")")])]),t._v(" "),e("h4",{attrs:{id:"例-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-4"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getVersion","id":1}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "1.3.0 branch.main commit.b57d4194 time.2023-03-08-09:30:29(UTC) node server status is running"\n }\n')])])]),e("h3",{attrs:{id:"ibax-getbalance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getbalance"}},[t._v("#")]),t._v(" ibax.getBalance")]),t._v(" "),e("p",[t._v("アカウントアドレスの残高を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-5"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[t._v("key_idまたはaccount - "),e("a",{attrs:{href:"#accountorkeyid"}},[e("em",[t._v("AccountOrKeyId")])]),t._v(" - アカウントアドレス `XXXX- XXXX-XXXX-XXXX-XXXX` またはアカウントID")])]),t._v(" "),e("li",[e("p",[t._v("ecosystem_id - "),e("em",[t._v("Number")]),t._v(" - エコシステムID "),e("a",{attrs:{href:"#*omitempty*"}},[t._v("Omitempty")]),t._v(" デフォルト1")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-5"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - 残高オブジェクトを取得する")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("amount")]),t._v(" - "),e("strong",[t._v("String")]),t._v(" - 契約アカウント残高の最小単位。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("total")]),t._v(" - "),e("strong",[t._v("String")]),t._v(" - 最小単位のアカウントの総残高(amount+utxo)。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("utxo")]),t._v(" - "),e("strong",[t._v("String")]),t._v(" - 最小単位のUTXOアカウント残高。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("digits")]),t._v(" - "),e("strong",[t._v("Number")]),t._v(" - 精度")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("token_symbol")]),t._v(" - "),e("strong",[t._v("String")]),t._v(" - トークンシンボル")])])]),t._v(" "),e("h4",{attrs:{id:"例-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-5"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["648...8120"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":["1196-...-...-...-3496",1]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBalance","id":1,"params":[{"key_id":{$key_id}},1]}\' http://127.0.0.1:7079 //keyId or account\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "amount": "9915319240441612",\n "digits": 12,\n "total": "9915319240441612",\n "utxo": "0",\n "token_symbol": "IBXC"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getblockstxinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockstxinfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getBlocksTxInfo")])]),t._v(" "),e("p",[t._v("ブロック内のトランザクションに関する追加情報が含まれたリストを返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-6"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - クエリする開始ブロック高")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック数、デフォルトは25、最大リクエスト数は100")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-6"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - ブロック情報オブジェクトを取得する")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロック高")])]),t._v(" "),e("li",[e("p",[t._v("各トランザクションの追加情報を含むブロック内のトランザクションのリスト:")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - トランザクションのハッシュ。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("contract_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの名前。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - コントラクトパラメーター。"),e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")]),t._v("を使用して、コントラクトフィールドをクエリできます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" -\n最初のブロックの場合、トランザクションに署名した最初のブロックのアカウントアドレスです。")]),t._v(" "),e("p",[t._v("他のすべてのブロックの場合、トランザクションに署名したアカウントのアドレスです。")])])])])]),t._v(" "),e("h4",{attrs:{id:"例-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-6"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksTxInfo","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": [ //block_id\n {\n "hash": "uXSaSrMWlbHpNlu049J5BDypC6MzBQ0/5VEfGQf+5aQ=",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160\n }\n ],\n "2": [ //block_id\n {\n "hash": "r8U9IKjtZ5Be5D4ak3zxLlDwn36CTdfIAsVvQhx7P3w=",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-detailedblocks"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblocks"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.detailedBlocks")])]),t._v(" "),e("p",[t._v("R各ブロック内のトランザクションに関する詳細情報を含むリストを返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-7"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - クエリの開始ブロック高")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック数。デフォルトは 25 ですが、最大要求数は 100 です。")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-7"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - ブロックの詳細情報オブジェクト")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロック高\n"),e("ul",[e("li",[e("strong",[t._v("header")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - ブロックヘッダー。ブロックヘッダーには、次のフィールドが含まれます。\n"),e("ul",[e("li",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ。")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック生成タイムスタンプ。")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックに署名したアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックを生成したノードの栄誉ノードリスト内の位置。")]),t._v(" "),e("li",[e("strong",[t._v("version")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック構造バージョン。")])])]),t._v(" "),e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックのハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックを生成したノードの栄誉ノードリスト内の位置。")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックに署名したアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック生成タイムスタンプ。")]),t._v(" "),e("li",[e("strong",[t._v("tx_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック内のトランザクション数。")]),t._v(" "),e("li",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのサイズ。")]),t._v(" "),e("li",[e("strong",[t._v("rollback_hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックのロールバックハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("merkle_root")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - このブロックトランザクションのマークルツリー。")]),t._v(" "),e("li",[e("strong",[t._v("bin_data")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックヘッダー、ブロック内のすべてのトランザクション、前のブロックハッシュ、およびブロックを生成したノードの秘密鍵のシリアル化。")]),t._v(" "),e("li",[e("strong",[t._v("transactions")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - トランザクションリスト。ブロック内の各トランザクションに関する追加情報が含まれます。\n"),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - トランザクションのハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("contract_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの名前。")]),t._v(" "),e("li",[e("strong",[t._v("params")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - コントラクトパラメーター。"),e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")]),t._v("を使用して、コントラクトフィールドをクエリできます。")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションに署名したアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクション生成タイムスタンプ(単位:ミリ秒)。")]),t._v(" "),e("li",[e("strong",[t._v("type")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションのタイプ。")]),t._v(" "),e("li",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのサイズ。")])])])])])]),t._v(" "),e("h4",{attrs:{id:"例-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-7"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlocks","id":1,"params":[1,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "1": { //block id\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f73497ede8f22d678bc4be6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "36373332663064383331353264316333653639346431656436383734373634363463616363616564636632353232646335633736643066623737343931366363",\n "bin_data": "Cp4BCAEQppm...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n },\n "2": { //block id\n "header": {\n "block_id": 2,\n "time": 1676536235,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "dd13a30661d35e01df82027a6e6607eb47ee00765d69767dbb99e151676c2c96",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676536235,\n "tx_count": 1,\n "size": "1.53KiB",\n "rollbacks_hash": "9041312d69e6bcd37c91a2bfa066abaeb53b8398708937a618a89960bfadab3d",\n "merkle_root": "65366537383931353662613230356565396466353061316538656538643636323332316636616265623764633539616166346635343030383135386538643130",\n "bin_data": "Cp4BCAIQq9O...",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "afc53d20a8ed67905ee43e1a937cf12e50f09f7e824dd7c802c56f421c7b3f7c",\n "contract_name": "@1NewUser",\n "params": {\n "Ecosystem": 1,\n "NewPubkey": "d11ea197fe23152562c6f54c46335d9093f245ab5d22b13ff3e0e2132dc9ff38da77aa093945280c4cf5ad9e889c074dfd9080099982d8b2d4d100315e1cebc7"\n },\n "key_id": 6667782293976713160,\n "time": 1676536233945,\n "type": 3,\n "size": "390.00B"\n }\n ]\n }\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getkeyinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyinfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getKeyInfo")])]),t._v(" "),e("p",[t._v("指定されたアドレスに登録されている役割を持つエコシステムのリストを返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-8"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("account")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレス")])]),t._v(" "),e("h4",{attrs:{id:"戻り値-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-8"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - アドレスエコリストオブジェクトを指定します。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("account")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレス")]),t._v(" "),e("li",[e("strong",[t._v("ecosystems")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - エコリスト\n"),e("ul",[e("li",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステム ID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステム名")]),t._v(" "),e("li",[e("strong",[t._v("digits")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - 精度")]),t._v(" "),e("li",[e("strong",[t._v("roles")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 役割のリスト。\n"),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 役割 ID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - キャラ")])])])])])]),t._v(" "),e("h4",{attrs:{id:"例-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-8"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeyInfo","id":1,"params":["0666-XXXX-XXXX-XXXX-5186"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "account": "0666-XXXX-XXXX-XXXX-5186",\n "ecosystems": [\n {\n "ecosystem": "1",\n "name": "platform ecosystem",\n "digits": 12,\n "roles": [\n {\n "id": "1",\n "name": "Developer"\n },\n {\n "id": "2",\n "name": "Governancer"\n }\n ]\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-detailedblock"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-detailedblock"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.detailedBlock")])]),t._v(" "),e("p",[t._v("ブロック内のトランザクションに関する詳細な情報のリストを返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-9"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Block or Hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#blockorhash"}},[t._v("BlockOrHash")])]),t._v(" - ブロックの高さまたはブロックハッシュ")])]),t._v(" "),e("h4",{attrs:{id:"戻り値-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-9"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - ブロックの詳細オブジェクトを取得します。")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("header")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - ブロックヘッダー。以下のフィールドが含まれます。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの生成タイムスタンプ")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックに署名したアカウントのアドレス")]),t._v(" "),e("li",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックを生成したノードのHonorノードリスト内の位置")]),t._v(" "),e("li",[e("strong",[t._v("version")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック構造のバージョン")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックのハッシュ")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックを生成したノードのHonorノードリスト内の位置")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックに署名したアカウントのアドレス")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの生成タイムスタンプ")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("tx_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック内のトランザクション数")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのサイズ")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("rollback_hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックのロールバックハッシュ")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("merkle_root")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - このブロックのトランザクションのマークルツリー")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("bin_data")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - ブロックヘッダー、ブロック内のすべてのトランザクション、前のブロックハッシュ、およびブロックを生成したノードの秘密鍵のシリアル化")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("transactions")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - トランザクション。ブロック内のトランザクションのリストと各トランザクションに関する追加情報。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#hex"}},[t._v("Hex")]),t._v(" String")]),t._v(" - トランザクションのハッシュ")]),t._v(" "),e("li",[e("strong",[t._v("contract_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクト名")]),t._v(" "),e("li",[e("strong",[t._v("params")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - コントラクトパラメータ。コントラクトのフィールドは、"),e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")]),t._v("を介してクエリできます。")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションに署名したアカウントのアドレス")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションの生成タイムスタンプ(単位:ms)")]),t._v(" "),e("li",[e("strong",[t._v("type")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションのタイプ")]),t._v(" "),e("li",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのサイズ")])])])]),t._v(" "),e("h4",{attrs:{id:"例-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-9"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request1\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["1"]}\' http://127.0.0.1:7079\n\n //Request2\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":["0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91"]}\' http://127.0.0.1:7079\n\n //Request3\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.detailedBlock","id":1,"params":[{"id":1}]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "header": {\n "block_id": 1,\n "time": 1676512422,\n "key_id": 6667782293976713160,\n "node_position": 0,\n "version": 3\n },\n "hash": "0d7d51b4c14bacbf45d812f7349...e6e6848193f3b7262ac91",\n "node_position": 0,\n "key_id": 6667782293976713160,\n "time": 1676512422,\n "tx_count": 1,\n "size": "660.00B",\n "rollbacks_hash": "1a829923f2c9b1e259fdfb42cc1bc255e144dbfb352af7e072d0b9d61a94df15",\n "merkle_root": "3637333266306438333135...623737343931366363",\n "bin_data": "Cp4BCAEQppm2nwYgyI/8gLSVrsRcMkAFGTK6nxD86hfhgQX0dWzO8aYZExDN9UPm8sKkqeUbwrNliYuCJHvvdX+txINnM7+gDqtMF/1K43kc0gYC0u8uOiANfVG0wUusv0XYEvc0l+3o8i1ni8S+bmhIGT87cmKskUIgBEhSsqZwreVAfnj7KGPFHen8uWVCoHGG/jrtpruKEW1IA1ABYAESRDogQBBdW8EBBcF/1yuTqPczaeLubu5NRxS3v3vzwvFW5gFCIARIUrKmcK3lQH54+yhjxR3p/LllQqBxhv467aa7ihFtGkA2NzMyZjBkODMxNTJkMWMzZTY5NGQxZWQ2ODc0NzY0NjRjYWNjYWVkY2YyNTIyZGM1Yzc2ZDBmYjc3NDkxNmNjKugCeJxibFvmk5+enlp0YK1LUkhRYl5xYnJJZn7egSUuiSWJ7Uu9Uys9XS7HdOxY7SDPfmJJSGZu6mUGBgaG5Lc9y1YGlCblZCZ7p1YecejvOPzyp63tWeYpWS+nxBTv3biTOUTqg7vfgedPuXdbnjsmYX49a9mXA025NT4TbjQ65bQwbloQcjbQRG3ZudjjUxuL1/rlp6QimTfLcZNH0o/bie/SfiskTNm1tPrfmrrlbdfMklamXHR53XpxwSODSb1hX3Kvyb1fU+awbZVG8yaXmGqtO3wR8jPsP6y7vTW4JL/AL7WkPL8o2zm1qMSpNC8lJ/XAkpDU4hKwBxgYGBg3BhRlliWWpDrl5CdnJ2ckZuadh0oxrAT5tLgkMbfgMgMDY1v42yy2ZSEVHonFGUcUdpbM8tosNnXjS7PoLY8vVbLYrORebMzKa/80UF6S/d/TJcsDEitz8hNTjvwaueEHCAAA//+pZRGv",\n "stop_count": 0,\n "transactions": [\n {\n "hash": "b9749a4ab31695b1e9365bb4e3d279043ca90ba333050d3fe5511f1907fee5a4",\n "contract_name": "",\n "params": null,\n "key_id": 6667782293976713160,\n "time": 1676512422406,\n "type": 1,\n "size": "250.00B"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-maxblockid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-maxblockid"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.maxBlockId")])]),t._v(" "),e("p",[t._v("Get the highest block ID on the current node")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-10"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-10"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Block Id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - 現在のノード上の最高ブロック")])]),t._v(" "),e("h4",{attrs:{id:"例-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-10"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.maxBlockId","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 774\n }\n')])])]),e("h3",{attrs:{id:"ibax-getkeyscount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getkeyscount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getKeysCount")])]),t._v(" "),e("p",[t._v("現在のノード上のアドレスの総数を取得する")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-11"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-11"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - Total number of addresses")])]),t._v(" "),e("h4",{attrs:{id:"例-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-11"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getKeysCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 11\n }\n')])])]),e("h3",{attrs:{id:"ibax-gettxcount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettxcount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getTxCount")])]),t._v(" "),e("p",[t._v("現在のノード上のトランザクションの総数を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-12"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-12"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - Total number of transactions")])]),t._v(" "),e("h4",{attrs:{id:"例-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-12"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTxCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 149068\n }\n')])])]),e("h3",{attrs:{id:"ibax-gettransactioncount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettransactioncount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getTransactionCount")])]),t._v(" "),e("p",[t._v("ブロックトランザクションの数を取得する")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-13"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("block or hash")]),t._v(" - "),e("em",[e("a",{attrs:{href:"#blockorhash"}},[t._v("BlockOrHash")])]),t._v(" - ブロック高さまたはブロックハッシュ")])]),t._v(" "),e("h4",{attrs:{id:"戻り値-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-13"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの総数")])]),t._v(" "),e("h4",{attrs:{id:"例-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-13"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getTransactionCount","id":1,"params":["efc386f7573269610a34af9cc722f775cca8183ccaa0ed7a96db61ef0bde6d1c"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 337\n }\n')])])]),e("h3",{attrs:{id:"ibax-getblockscountbynode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockscountbynode"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getBlocksCountByNode")])]),t._v(" "),e("p",[t._v("Gノードロケーションパッキングブロックの数を取得する")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-14"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("nodePosition")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ノードサブスクリプト")]),t._v(" "),e("li",[e("strong",[t._v("consensusMode")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - コンセンサスモード。パラメーター (1: Creator Managementモード、2: DAO Governanceモード)")])]),t._v(" "),e("h4",{attrs:{id:"戻り値-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-14"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - ノードサブスクリプトのパッキング数オブジェクトを取得します。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("total_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの総数")]),t._v(" "),e("li",[e("strong",[t._v("partial_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ノードサブスクリプトのパッキングブロック数")])]),t._v(" "),e("h4",{attrs:{id:"例-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-14"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlocksCountByNode","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "total_count": 774,\n "partial_count": 774\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-honornodescount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-honornodescount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.honorNodesCount")])]),t._v(" "),e("p",[t._v("名誉ノード数を取得する")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-15"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-15"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ノードの数")])]),t._v(" "),e("h4",{attrs:{id:"例-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-15"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.honorNodesCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 1\n }\n')])])]),e("h3",{attrs:{id:"ibax-getecosystemcount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemcount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getEcosystemCount")])]),t._v(" "),e("p",[t._v("エコシステムの獲得数を取得する")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-16"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"戻り値-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-16"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコロジー番号")])]),t._v(" "),e("h4",{attrs:{id:"例-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-16"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemCount","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": 2\n }\n')])])]),e("h3",{attrs:{id:"ibax-ecosysteminfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-ecosysteminfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.ecosystemInfo")])]),t._v(" "),e("p",[t._v("エコロジー情報にアクセスする")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-17"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("ecosystem id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコロジーID")])]),t._v(" "),e("h4",{attrs:{id:"戻り値-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-17"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコロジー名")]),t._v(" "),e("li",[e("strong",[t._v("digits")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - 精度")]),t._v(" "),e("li",[e("strong",[t._v("token_symbol")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トークンシンボル")]),t._v(" "),e("li",[e("strong",[t._v("token_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トークンの名称")]),t._v(" "),e("li",[e("strong",[t._v("total_amount")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 発行量(初回発行、発行していない場合は "),e("code",[t._v('"0"')]),t._v(")")]),t._v(" "),e("li",[e("strong",[t._v("is_withdraw")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - 破棄可能性 "),e("code",[t._v("true:破棄可能 false:破棄不可能")])]),t._v(" "),e("li",[e("strong",[t._v("withdraw")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 破棄量(破棄不可能な場合、または破棄されていない場合は "),e("code",[t._v('"0"')]),t._v(")")]),t._v(" "),e("li",[e("strong",[t._v("is_emission")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - 増発可能性 "),e("code",[t._v("true:増発可能 false:増発不可能")])]),t._v(" "),e("li",[e("strong",[t._v("emission")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 増発量(増発不可能な場合、または増発がない場合は "),e("code",[t._v('"0"')]),t._v(")")]),t._v(" "),e("li",[e("strong",[t._v("introduction")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコの紹介")]),t._v(" "),e("li",[e("strong",[t._v("logo")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコロゴのID(バイナリテーブルIDに対応)、RESTFUL APIで利用可能")]),t._v(" "),e("li",[e("strong",[t._v("creator")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコ作成者")])]),t._v(" "),e("h4",{attrs:{id:"例-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-17"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.ecosystemInfo","id":1,"params":[1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "id": 5,\n "name": "test name",\n "digits": 6,\n "token_symbol": "test",\n "token_name": "test Coin",\n "total_amount": "10000",\n "is_withdraw": true,\n "withdraw": "100000000000900000",\n "is_emission": true,\n "emission": "100000000001000000",\n "introduction": "this is a test introduction",\n "logo": 6,\n "creator": "0666-0819-7161-7879-5186"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-appparams"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-appparams"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.appParams")])]),t._v(" "),e("p",[t._v("現在のエコシステムまたは指定されたエコシステムのアプリケーションパラメータのリストを返します")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-18"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("appid")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アプリケーションID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - エコシステムID;")]),t._v(" "),e("p",[t._v("指定されていない場合、または0の場合、現在のエコシステムのパラメータが返されます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("names")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - アプリケーションパラメータ名をフィルタリングします。")]),t._v(" "),e("p",[t._v("カンマで区切られた名前のリスト、例:"),e("code",[t._v("name1,name2")]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" オフセット、デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" エントリ数、デフォルトは100、最大100。")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-18"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("p",[e("em",[t._v("Array")]),t._v(" - アプリケーションパラメータのリスト")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("app_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アプリケーションID")]),t._v(" "),e("li",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - 配列の各要素には、次のパラメータが含まれます。\n"),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータID、ユニーク。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータ名。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータ値。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータを変更するための権限。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-18"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.appParams","id":1,"params":[1,1,"role_developer,role_governancer"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "app_id": 1,\n "list": [\n {\n "id": "4",\n "name": "role_developer",\n "value": "1",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n },\n {\n "id": "5",\n "name": "role_governancer",\n "value": "2",\n "conditions": "ContractConditions(\\"MainCondition\\")"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getecosystemparams"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getecosystemparams"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getEcosystemParams")])]),t._v(" "),e("p",[t._v("エコシステムパラメータのリストを取得する")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-19"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - エコシステムID")]),t._v(" "),e("p",[t._v("もし0またはそのようなパラメータがない場合、デフォルト: 現在のecid。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("names")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - フィルタパラメータの名前。")]),t._v(" "),e("p",[t._v("カンマで区切られた名前のリスト、例:"),e("code",[t._v("name1,name2")]),t._v("。")]),t._v(" "),e("p",[t._v("フィルタパラメータがある場合、"),e("em",[t._v("offset")]),t._v("と"),e("em",[t._v("limit")]),t._v("パラメータは無効です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" オフセット、デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" エントリ数、デフォルトは100、最大100。")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-19"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には、次のパラメータが含まれます。\n"),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータのID、ユニーク。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータの名前。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータの値。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータを変更するための権限。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-19"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getEcosystemParams","id":1,"params":[0,"changing_app_params,changing_language"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "9",\n "name": "changing_app_params",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n },\n {\n "id": "4",\n "name": "changing_language",\n "value": "ContractConditions(\\"DeveloperCondition\\")",\n "conditions": "ContractConditions(\\"DeveloperCondition\\")"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-gettablecount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettablecount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getTableCount")])]),t._v(" "),e("p",[t._v("現在のエコシステムに関するデータテーブルのリストを返します。")]),t._v(" "),e("p",[t._v("Offset and number of entries can be set")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-20"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - [Omitempty] オフセット。デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - [Omitempty] エントリの数。デフォルトは100で、最大は100です。")])])]),t._v(" "),e("h4",{attrs:{id:"戻り値-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#戻り値-20"}},[t._v("#")]),t._v(" 戻り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - 現在のエコロジカルデータテーブルの総シート数。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には次のパラメーターが含まれています:")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - プレフィックスなしのデータテーブルの名前。")]),t._v(" "),e("li",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブル内のエントリ数。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-20"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTableCount","id":1,"params":[0,2]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 32,\n "list": [\n {\n "name": "app_params",\n "count": "41"\n },\n {\n "name": "applications",\n "count": "7"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-gettable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-gettable"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getTable")])]),t._v(" "),e("p",[t._v("R現在のエコシステムのリクエストデータテーブルに関する情報を返します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-21"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("tableName")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブル名")])]),t._v(" "),e("h4",{attrs:{id:"返り値"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブルの名前。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("insert")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリを追加する権限。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("new_column")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 新しいフィールドを追加する権限。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("update")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリの権限を変更する権限。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("app_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アプリケーションID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 権限を変更するための条件。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("columns")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - データテーブルフィールドに関連する情報の配列:")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - フィールドの名前。")]),t._v(" "),e("li",[e("strong",[t._v("type")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - フィールドのデータ型。")]),t._v(" "),e("li",[e("strong",[t._v("perm")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - このフィールドの値を変更する権限。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-21"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getTable","id":1,"params":["app_params"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "name": "app_params",\n "insert": "ContractConditions(\\"DeveloperCondition\\")",\n "new_column": "ContractConditions(\\"@1MainCondition\\")",\n "update": "ContractAccess(\\"@1EditAppParam\\")",\n "conditions": "ContractConditions(\\"@1MainCondition\\")",\n "app_id": "1",\n "columns": [\n {\n "name": "value",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "app_id",\n "type": "number",\n "perm": "ContractAccess(\\"@1ItemChangeAppId\\")"\n },\n {\n "name": "ecosystem",\n "type": "number",\n "perm": "false"\n },\n {\n "name": "conditions",\n "type": "text",\n "perm": "ContractAccess(\\"@1EditAppParam\\")"\n },\n {\n "name": "permissions",\n "type": "json",\n "perm": "ContractConditions(\\"@1MainCondition\\")"\n },\n {\n "name": "name",\n "type": "varchar",\n "perm": "false"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getlist"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getlist"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getList")])]),t._v(" "),e("p",[t._v("指定されたデータテーブルのエントリを返します。")]),t._v(" "),e("p",[t._v("返される列を指定することができます。")]),t._v(" "),e("p",[t._v("オフセットとエントリの数を設定することができます。")]),t._v(" "),e("p",[t._v("クエリ条件を設定することができます。")]),t._v(" "),e("p",[t._v("タイプが "),e("em",[t._v("BYTEA")]),t._v("(バイト配列、ハッシュ、バイトコード配列)のデータテーブルのヘックスエンコーディング")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-22"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[e("em",[t._v("Object")]),t._v(" - データテーブルオブジェクトを取得します。")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブルの名前。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - [Omitempty] エントリの数。デフォルトは25です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - [Omitempty] オフセット。デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("order")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - [Omitempty] ソート方法。デフォルトはid ASCです。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("columns")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - [Omitempty] 要求された列のコンマ区切りのリスト。指定されていない場合はすべての列が返されます。")]),t._v(" "),e("p",[t._v("id列は常に返されます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("where")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - [Omitempty] クエリ条件")]),t._v(" "),e("p",[t._v("例:id > 2 かつ name = john をクエリしたい場合は、"),e("code",[t._v('where:{"id":{"$gt":2}, "name":{"$eq": "john"}}')]),t._v(" を使用します。")]),t._v(" "),e("p",[t._v("詳細については、"),e("RouterLink",{attrs:{to:"/ja/topics/script.html#dbfind"}},[t._v("DBFind")]),t._v(" のwhere構文を参照してください。")],1)])]),t._v(" "),e("h4",{attrs:{id:"返り値-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-2"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリの総数。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には次のパラメーターが含まれています:")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("...")]),t._v(" - データテーブルの他の列。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-22"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getList","id":1,"params":[{"name":"@1history","where":{"$and": [{"id":{"$gt": 2}}, {"id":{"$lt": 5}}]}}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "amount": "1000000000000000000",\n "block_id": "4",\n "comment": "UTXO",\n "created_at": "1676538080433",\n "ecosystem": "1",\n "id": "3",\n "recipient_balance": "1000000000000000000",\n "recipient_id": "666...160",\n "sender_balance": "1000000000000000000",\n "sender_id": "666...3160",\n "status": "0",\n "txhash": "2ac156c0ce55c10fd485cb9d59f50e3f9b269fb9bb69571d3c2eeae033d6c6cc",\n "type": "24",\n "value_detail": "NULL"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getsections"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsections"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getSections")])]),t._v(" "),e("p",[t._v("現在のエコシステムのタブに戻ります。\nテーブルエントリのリストで、オフセットとエントリ数を設定できます。")]),t._v(" "),e("p",[t._v("もし "),e("em",[t._v("role_access")]),t._v(" フィールドがロールのリストを含み、現在のロールが含まれていない場合、レコードは返されません。"),e("em",[t._v("title")]),t._v(" フィールドのデータは、リクエストヘッダーの "),e("em",[t._v("Accept-Language")]),t._v(" 言語リソースによって置き換えられます。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-23"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" - アクションリクエストオブジェクトを取得します。\n"),e("ul",[e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - エントリの数。デフォルトは25です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - オフセット。デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("lang")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - このフィールドは、マルチリンガルリソースコードまたはローカライゼーションを指定します。例:"),e("em",[t._v("en, zh")]),t._v("。指定されたマルチリンガルリソースが見つからない場合、例えば "),e("em",[t._v("en-US")]),t._v(" の場合は、マルチリンガルリソースグループで検索します。"),e("strong",[t._v("デフォルト")]),t._v(": "),e("strong",[t._v("en")]),t._v("。")])])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-3"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - タブエントリの総数。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には、セクションテーブルのすべての列に関する情報が含まれています。")])])]),t._v(" "),e("h4",{attrs:{id:"例-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-23"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSections","id":1,"params":[{"offset":0,"limit":2}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 2,\n "list": [\n {\n "ecosystem": "1",\n "id": "1",\n "page": "default_page",\n "roles_access": "[]",\n "status": "2",\n "title": "Home",\n "urlname": "home"\n },\n {\n "ecosystem": "1",\n "id": "2",\n "page": "developer_index",\n "roles_access": "[]",\n "status": "1",\n "title": "Developer",\n "urlname": "developer"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getrow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getrow"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getRow")])]),t._v(" "),e("p",[t._v("現在のエコシステムの指定されたデータテーブルのエントリを返します。返される列を指定することができます。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-24"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("tableName")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブルの名前。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリのID。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("columns")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")])]),t._v(" "),e("p",[t._v("要求された列のコンマ区切りのリスト。指定されていない場合、すべての列が返されます。")]),t._v(" "),e("p",[t._v('フィルタリングしない場合は、空白 "" を指定できます。')]),t._v(" "),e("p",[t._v("id列は常に返されます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("whereColumn")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - 検索する列名(Number型の列のみ検索可能)")])])]),t._v(" "),e("h4",{attrs:{id:"返り値-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-4"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - 列の値を受け取るオブジェクト\n"),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("...")]),t._v(" - 要求された列のシーケンス。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-24"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getRow","id":1,"params":["@1history",4,"id,sender_id,recipient_id,amount,ecosystem,created_at","id"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "value": {\n "amount": "680388766240",\n "created_at": "1677222830899",\n "ecosystem": "1",\n "id": "296",\n "recipient_id": "6667782293976713160",\n "sender_id": "6660819716178795186"\n }\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-systemparams"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-systemparams"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.systemParams")])]),t._v(" "),e("p",[t._v("プラットフォームパラメータのリストを返します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-25"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("names")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - カンマで区切られたリクエストパラメータのリスト。")]),t._v(" "),e("p",[t._v("例:"),e("code",[t._v('names="name1,name2"')]),t._v("。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - オフセット。デフォルトは0です。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - エントリの数。デフォルトは100で、最大は100です。")])])]),t._v(" "),e("h4",{attrs:{id:"返り値-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-5"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には次のパラメーターが含まれています:\n"),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ユニークなID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターの名前。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターの値。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターを変更する権限。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-25"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.systemParams","id":1,"params":["gap_between_blocks,honor_nodes"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "id": "4",\n "name": "gap_between_blocks",\n "value": "2",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n },\n {\n "id": "6",\n "name": "honor_nodes",\n "value": "",\n "conditions": "ContractAccess(\\"@1UpdatePlatformParam\\")"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-history"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-history"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.history")])]),t._v(" "),e("p",[t._v("現在のエコシステムの指定されたデータテーブルのエントリの変更レコードを返します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-26"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - データテーブルの名前。")]),t._v(" "),e("li",[e("strong",[t._v("tableId")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリのID。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-6"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には、要求されたエントリの変更レコードが含まれています。")])]),t._v(" "),e("h4",{attrs:{id:"例-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-26"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.history","id":1,"params":["contracts",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "list": [\n {\n "conditions": "ContractConditions(\\"MainCondition\\")",\n "ecosystem": "1",\n "value": "// This contract is used to set \\"developer\\" rights....."\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getpagerow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagerow"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getPageRow")])]),t._v(" "),e("p",[t._v("エコシステムページデータテーブルのフィールドで、現在のエントリを取得します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-27"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - テーブル内のエントリの名前を指定します。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-7"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリの名前。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コンテンツ。")]),t._v(" "),e("li",[e("strong",[t._v("menu")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ディレクトリ。")]),t._v(" "),e("li",[e("strong",[t._v("nodesCount")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ページが検証するノードの数。")]),t._v(" "),e("li",[e("strong",[t._v("app_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アプリケーションID。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターを変更する権限。")])]),t._v(" "),e("h4",{attrs:{id:"例-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-27"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPageRow","id":1,"params":["default_page"]}\' http://127.0.0.1:7079\n\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5,\n "name": "default_page",\n "value": "If(#account_id# == #guest_account#){\\n Include(@1apps_description)\\n}.Else{\\n Include(@1profile)\\n}",\n "menu": "default_menu",\n "nodesCount": 1,\n "app_id": 1,\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getmenurow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenurow"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getMenuRow")])]),t._v(" "),e("p",[t._v("エコシステムメニューデータテーブルのフィールドで、現在のエントリを取得します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-28"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - テーブル内のエントリの名前を指定します。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-8"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリの名前。")]),t._v(" "),e("li",[e("strong",[t._v("title")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - タイトル。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コンテンツ。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターを変更する権限。")])]),t._v(" "),e("h4",{attrs:{id:"例-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-28"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenuRow","id":1,"params":["default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 2,\n "name": "default_menu",\n "title": "default",\n "value": "\\nMenuItem.....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getsnippetrow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsnippetrow"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getSnippetRow")])]),t._v(" "),e("p",[t._v("エコシステムスニペットデータテーブルのフィールドから、現在のエントリを取得します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-29"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - テーブル内のエントリの名前を指定します。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-9"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エントリの名前。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コンテンツ。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメーターを変更する権限。")])]),t._v(" "),e("h4",{attrs:{id:"例-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-29"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSnippetRow","id":1,"params":["welcome"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 12,\n "name": "welcome",\n "value": "Div(content-wrapper)....",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getappcontent"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getappcontent"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getAppContent")])]),t._v(" "),e("p",[t._v("アプリケーションに関連する情報(ページ、スニペット、メニューなど)を取得します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-30"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アプリケーションID")])]),t._v(" "),e("h4",{attrs:{id:"返り値-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-10"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("snippets")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - コードスニペット情報の配列")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コードスニペット名")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("pages")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - ページ情報の配列")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ページ名")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("contracts")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - コントラクト情報の配列")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ID")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクト名")])])])]),t._v(" "),e("h4",{attrs:{id:"例-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-30"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "snippets": [ //if not app snippets is null array,example:[]\n {\n "id": 2,\n "name": "developer_link"\n },\n {\n "id": 3,\n "name": "export_info"\n }\n ],\n "pages": [ //if not app pages is null array,example:[]\n {\n "id": 6,\n "name": "menus_list"\n },\n {\n "id": 7,\n "name": "params_edit"\n }\n ],\n "contracts": [ //if not app contracts is null array,example:[]\n {\n "id": 2,\n "name": "MainCondition"\n },\n {\n "id": 33,\n "name": "NodeOwnerCondition"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getmember"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmember"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getMember")])]),t._v(" "),e("p",[t._v("メンバー情報を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-31"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("account")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - メンバー情報")]),t._v(" "),e("li",[e("strong",[t._v("ecosystemId")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エコシステムID")])]),t._v(" "),e("h4",{attrs:{id:"返り値-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-11"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - メンバーID")]),t._v(" "),e("li",[e("strong",[t._v("member_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 名前")]),t._v(" "),e("li",[e("strong",[t._v("image_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - アバターのID")]),t._v(" "),e("li",[e("strong",[t._v("member_info")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 自己紹介")])]),t._v(" "),e("h4",{attrs:{id:"例-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-31"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}}" -d \'{"jsonrpc":"2.0","method":"ibax.getMember","id":1,"params":["1497-2036-4953-3607-1121",1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 14,\n "member_name": "som",\n "image_id": 5, \n "member_info": "{\\"information\\": \\"Everything will be okay in the end. If it\'s not okay, it\'s not the end.\\"}"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getcontracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontracts"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getContracts")])]),t._v(" "),e("p",[t._v("現在のエコシステムのコントラクトのリストを取得します。オフセットとエントリ数を設定することができます。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-32"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("offset")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" オフセット。デフォルトは0です。")]),t._v(" "),e("li",[e("strong",[t._v("limit")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" エントリ数。デフォルトは25です。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-12"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - エントリの総数。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("list")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - 配列の各要素には、次のパラメータが含まれます:")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトID。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの名前。")]),t._v(" "),e("li",[e("strong",[t._v("value")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの内容。")]),t._v(" "),e("li",[e("strong",[t._v("wallet_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトがバインドされているアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトにバインドされたウォレットのアドレス "),e("code",[t._v("XXXX-...-XXXX")]),t._v("。")]),t._v(" "),e("li",[e("strong",[t._v("ecosystem_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトが所属するエコシステムのID。")]),t._v(" "),e("li",[e("strong",[t._v("app_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトが所属するアプリケーションのID。")]),t._v(" "),e("li",[e("strong",[t._v("conditions")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの権限を変更します。")]),t._v(" "),e("li",[e("strong",[t._v("token_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの支払いに使用されるパスのエコシステムID。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-32"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContracts","id":1,"params":[0,1]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "count": 293,\n "list": [\n {\n "address": "0000-0000-0000-0000-0000",\n "app_id": "1",\n "conditions": "ContractConditions(\\"@1DeveloperCondition\\")",\n "ecosystem_id": "1",\n "id": "1",\n "name": "DeveloperCondition",\n "token_id": "1",\n "value": "// This contract is used to ...",\n "wallet_id": "0"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getcontractinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontractinfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getContractInfo")])]),t._v(" "),e("p",[t._v("指定されたコントラクトの情報を返します。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-33"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("contractName")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの名前。形式は "),e("code",[t._v("@ecosystem_id%%contractName%")]),t._v(" です。例:@1contractName(指定されたエコシステムID1のcontractNameコントラクト)またはcontractName(現在のエコシステムのcontractNameコントラクト)。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-13"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - VM内のコントラクトID。")]),t._v(" "),e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステムIDを含むコントラクト名 "),e("code",[t._v("@1MainCondition")]),t._v("。")]),t._v(" "),e("li",[e("strong",[t._v("state")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - コントラクトが所属するエコシステムのID。")]),t._v(" "),e("li",[e("strong",[t._v("walletid")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトがバインドされているアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("tokenid")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトの支払いに使用されるパスのエコシステムID。")]),t._v(" "),e("li",[e("strong",[t._v("address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトにバインドされたウォレットのアドレス "),e("code",[t._v("XXXX-...-XXXX")]),t._v("。")]),t._v(" "),e("li",[e("strong",[t._v("tableid")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクトが配置されている"),e("em",[t._v("contracts")]),t._v("テーブルのエントリのID。")]),t._v(" "),e("li",[e("strong",[t._v("fields")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - コントラクトの"),e("strong",[t._v("data")]),t._v("セクションの各パラメータの構造情報が含まれる配列:\n"),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータの名前。")]),t._v(" "),e("li",[e("strong",[t._v("type")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - パラメータの型。")]),t._v(" "),e("li",[e("strong",[t._v("optional")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - パラメータのオプション。"),e("code",[t._v("true")]),t._v(" はオプションパラメータを意味し、"),e("code",[t._v("false")]),t._v(" は必須パラメータを意味します。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-33"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getContractInfo","id":1,"params":["@1TokensSend"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "id": 5098,\n "state": 1,\n "tableid": "98",\n "walletid": "0",\n "tokenid": "1",\n "address": "0000-0000-0000-0000-0000",\n "fields": [\n {\n "name": "Amount",\n "type": "money",\n "optional": false\n },\n {\n "name": "Recipient",\n "type": "string",\n "optional": true\n },\n {\n "name": "iName",\n "type": "string",\n "optional": true\n },\n {\n "name": "Comment",\n "type": "string",\n "optional": true\n },\n {\n "name": "Ecosystem",\n "type": "int",\n "optional": true\n }\n ],\n "name": "@1TokensSend"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-sendtx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-sendtx"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.sendTx")])]),t._v(" "),e("p",[t._v("パラメーターでトランザクションを受け取り、それらをトランザクションキューに追加し、リクエストが正常に実行された場合はトランザクションのハッシュを返します。このハッシュはブロック内の対応するトランザクションを指し示し、エラーレスポンスの場合にはエラーテキストメッセージに含まれます。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-34"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" - トランザクションデータオブジェクト\n"),e("ul",[e("li",[e("strong",[t._v("tx_key")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの内容です。このパラメーターは任意の名前を指定でき、複数のトランザクションを受け取ることができます。")])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-14"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hashes")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - トランザクションハッシュの配列:\n"),e("ul",[e("li",[e("strong",[t._v("tx1")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクション1のハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("txN")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションNのハッシュ。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-34"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.sendTx","id":1,"params":[{"tx1":...,"txN":...}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hashes":[\n {"hash1":"hash1"},\n {"hashN":"hashN"}\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-txstatus"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txstatus"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.txStatus")])]),t._v(" "),e("p",[t._v("指定されたトランザクションハッシュのブロックIDとエラーメッセージを取得します。ブロックIDとエラーテキストメッセージの返り値がnullの場合、トランザクションはまだブロックに含まれていません。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-35"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hashes")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションハッシュ。"),e("code",[t._v(",")]),t._v("で区切って指定します。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-15"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - トランザクションハッシュ\n"),e("ul",[e("li",[e("p",[e("strong",[t._v("blockid")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションが正常に実行された場合、ブロックIDが返されます。")]),t._v(" "),e("p",[t._v("トランザクションの実行が失敗した場合、"),e("em",[t._v("blockid")]),t._v(" は "),e("code",[t._v("0")]),t._v(" となり、トランザクションの実行エラーがペナルティにより処理された場合は、対応するブロックIDが返されます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("result")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの結果を "),e("strong",[t._v("$result")]),t._v(" 変数で返します。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("errmsg")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" トランザクションの実行に失敗した場合、エラーテキストメッセージが返されます。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("type")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エラーのタイプ")]),t._v(" "),e("li",[e("strong",[t._v("error")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エラーメッセージ")])])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("penalty")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションの実行が失敗した場合、(0: ペナルティなし、1: ペナルティあり)")])])])])]),t._v(" "),e("h4",{attrs:{id:"例-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-35"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.txStatus","id":1,"params":["cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9,4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 2,\n "result": {\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": "793",\n "result": "",\n "penalty": 0\n },\n "cf46ef1ce7ecfcf48ccf209577fb8a2130426b71adc3a3855aff7f68d114fca9": {\n "blockid": "793",\n "errmsg": {\n "type": "warning",\n "error": "platform ecosystem can not be burning Tokens"\n },\n "result": "",\n "penalty": 1\n }\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-txinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.txInfo")])]),t._v(" "),e("p",[t._v("指定されたハッシュに関するトランザクションの情報を返します。ブロックIDと確認数を含みます。オプションのパラメータが指定された場合、コントラクト名と関連するパラメータも返すことができます。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-36"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("contractinfo")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - コントラクトの詳細パラメータ識別子。このトランザクションに関連するコントラクトの詳細を取得します。デフォルトは "),e("code",[t._v("false")]),t._v(" です。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-16"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("blockid")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションが含まれるブロックのID。\n値が "),e("code",[t._v("0")]),t._v(" の場合、このハッシュに対するトランザクションは見つかりません。\nトランザクションが現在のノードで発生した場合、"),e("a",{attrs:{href:"#ibax-txstatus"}},[t._v("ibax.txStatus")]),t._v(" を通じて取得できます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("confirm")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - このブロック "),e("em",[t._v("blockid")]),t._v(" のノードの確認数。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("data")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - "),e("code",[t._v("contractinfo=true")]),t._v(" が指定された場合、コントラクトの詳細情報が返されます。指定されていない場合は null が返されます。")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("block_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ")]),t._v(" "),e("li",[e("strong",[t._v("block_hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのハッシュ")]),t._v(" "),e("li",[e("strong",[t._v("address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの作成アドレス")]),t._v(" "),e("li",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの送信エコシステムID")]),t._v(" "),e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのハッシュ")]),t._v(" "),e("li",[e("strong",[t._v("expedite")]),t._v(" - "),e("em",[t._v("String")]),t._v(' - 速達料金、利用できない場合は ""')]),t._v(" "),e("li",[e("strong",[t._v("contract_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクト名")]),t._v(" "),e("li",[e("strong",[t._v("params")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - コントラクトのパラメータ、"),e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")]),t._v(" を介してコントラクトフィールドをクエリできます")]),t._v(" "),e("li",[e("strong",[t._v("created_at")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションの作成日時")]),t._v(" "),e("li",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのサイズ、単位: B;KiB;MiB;GiB;TiB")]),t._v(" "),e("li",[e("strong",[t._v("status")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ステータス (0: 成功 1: ペナルティ)")])])])]),t._v(" "),e("h4",{attrs:{id:"例-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-36"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.txInfo","id":1,"params":["020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "blockid": "796",\n "confirm": 0,\n "data": {\n "block_id": 796,\n "block_hash": "bccbc3cf47b49bee5fb7321810884db49b73f5114b0a6fcd234dd3fdf9c22ef4",\n "address": "0666-7782-2939-7671-3160",\n "ecosystem": 2,\n "hash": "020d8c004b3a0c00a6bfffa36e2746509295e5ea6dbb14e7cd6098c3d906bb58",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "1000000000000",\n "Recipient": "0666-7782-2939-7671-3160"\n },\n "created_at": 1678774455841,\n "size": "213.00B",\n "status": 1\n }\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-txinfomultiple"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-txinfomultiple"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.txInfoMultiple")])]),t._v(" "),e("p",[t._v("指定されたハッシュリストに関するトランザクションに関する情報を返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-37"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("hashes")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - トランザクションのハッシュのリスト。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("contractinfo")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" - コントラクトの詳細パラメータ識別子。このトランザクションに関連するコントラクトの詳細を取得します。デフォルトは "),e("code",[t._v("false")]),t._v(" です。")])])]),t._v(" "),e("h4",{attrs:{id:"返り値-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-17"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("results")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - トランザクションのハッシュをキー、トランザクションの詳細を値とするデータ辞書。\n"),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのハッシュ。\n"),e("ul",[e("li",[e("strong",[t._v("blockid")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションが含まれるブロックのID。値が "),e("code",[t._v("0")]),t._v(" の場合、そのハッシュに対するトランザクションは見つかりません。")]),t._v(" "),e("li",[e("strong",[t._v("confirm")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - このブロック "),e("em",[t._v("blockid")]),t._v(" の確認数。")]),t._v(" "),e("li",[e("strong",[t._v("data")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - "),e("code",[t._v("contentinfo=true")]),t._v(" が指定された場合、このパラメータにはコントラクトの詳細が返されます。指定されていない場合は null です。\n"),e("ul",[e("li",[e("strong",[t._v("block_id")]),t._v("- "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ")]),t._v(" "),e("li",[e("strong",[t._v("block_hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのハッシュ")]),t._v(" "),e("li",[e("strong",[t._v("address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの作成アドレス")]),t._v(" "),e("li",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションの送信エコシステムID")]),t._v(" "),e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのハッシュ")]),t._v(" "),e("li",[e("strong",[t._v("expedite")]),t._v(" - "),e("em",[t._v("String")]),t._v(' - 速達料金、利用できない場合は ""')]),t._v(" "),e("li",[e("strong",[t._v("contract_name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - コントラクト名")]),t._v(" "),e("li",[e("strong",[t._v("params")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - コントラクトのパラメータ、"),e("a",{attrs:{href:"#ibax-getcontractinfo"}},[t._v("ibax.getContractInfo")]),t._v(" を介してコントラクトフィールドをクエリできます")]),t._v(" "),e("li",[e("strong",[t._v("created_at")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - トランザクションの作成日時")]),t._v(" "),e("li",[e("strong",[t._v("size")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - トランザクションのサイズ、単位: B;KiB;MiB;GiB;TiB")]),t._v(" "),e("li",[e("strong",[t._v("status")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ステータス (0:成功 1:ペナルティ)")])])])])])])])]),t._v(" "),e("h4",{attrs:{id:"例-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-37"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":[["1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284","4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b"],true]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "results": {\n "1875b4fc02a8bf5ccf0d3fbce83011dd6711d8d325c7d731ac659b8beffc0284": {\n "blockid": 0,\n "confirm": 0,\n "data": null\n },\n "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b": {\n "blockid": 793,\n "confirm": 0,\n "data": {\n "block_id": 793,\n "block_hash": "ef3b2f2e18662e0b8bba136a209e30c5aae76d9a82e0b21209786f62fe5676e4",\n "address": "0666-0819-7161-7879-5186",\n "ecosystem": 1,\n "hash": "4a458232de2ab2a3f5361da68e409b925c775346d14139263a69c0e8ecf0166b",\n "expedite": "1",\n "contract_name": "@1TokensSend",\n "params": {\n "Amount": "200",\n "Comment": "Hello Dear",\n "Recipient": "1196-2490-5275-7101-3496"\n },\n "created_at": 1678765099072,\n "size": "297.00B",\n "status": 0\n }\n }\n }\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getpagevalidatorscount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagevalidatorscount"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getPageValidatorsCount")])]),t._v(" "),e("p",[t._v("指定されたページに対して検証する必要があるノードの数を返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-38"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ページ名。"),e("code",[t._v("@ecosystem_id%%%page_name%")]),t._v(" の形式で指定します。例: @1params_list (エコロジー1のページ名 params_list) や params_list (現在のエコロジーのページ名 params_list)。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-18"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("validate_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ページに対して検証する必要があるノードの数を指定します。")])]),t._v(" "),e("h4",{attrs:{id:"例-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-38"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageValidatorsCount","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "validate_count": 1\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getpage"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpage"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getPage")])]),t._v(" "),e("p",[t._v("指定されたページ名のコードJSONオブジェクトのツリーを取得します。このツリーはテンプレートエンジンによる処理の結果です。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-39"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ページ名。"),e("code",[t._v("@ecosystem_id%%page_name%")]),t._v(" の形式で指定します。例: "),e("code",[t._v("@1main_page")]),t._v("。")]),t._v(" "),e("p",[t._v("エコシステムIDが指定されていない場合、現在のエコロジーのページを検索します。例: "),e("code",[t._v("main_page")])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-19"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("menu")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ページが所属するメニューの名前です。")]),t._v(" "),e("li",[e("strong",[t._v("menutree")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - ページのメニューのJSONオブジェクトツリーです。")]),t._v(" "),e("li",[e("strong",[t._v("tree")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - ページのJSONオブジェクトツリーです。")])]),t._v(" "),e("h4",{attrs:{id:"例-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-39"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getPage","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "menu": "developer_menu",\n "menutree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ],\n "tree": [\n {\n ....\n }\n ...\n ],\n "nodesCount": 1\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getmenu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getmenu"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getMenu")])]),t._v(" "),e("p",[t._v("指定されたメニュー名のコードJSONオブジェクトツリーを取得します。このメニューはテンプレートエンジンによる処理の結果です。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-40"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" -\n"),e("blockquote",[e("p",[t._v("メニュー名は "),e("code",[t._v("@ecosystem_id%%%menu_name%")]),t._v(" の形式で指定します。例: "),e("code",[t._v("@1main_menu")]),t._v("。\nエコシステムIDを指定しない場合は、デフォルトで現在のエコロジーのメニューが見つかります。例: "),e("code",[t._v("main_menu")])])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-20"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("title")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - メニューのタイトル。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("tree")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - メニューのJSONオブジェクトツリー。")])])]),t._v(" "),e("h4",{attrs:{id:"例-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-40"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getMenu","id":1,"params":["@1default_menu"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "title": "default",\n "tree": [\n {\n "tag": "menuitem",\n "attr": {\n "icon": "icon-cloud-upload",\n "page": "@1import_upload",\n "title": "Import"\n }\n }\n ...\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getsource"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getsource"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getSource")])]),t._v(" "),e("p",[t._v("指定されたページ名のコード化されたJSONオブジェクトツリーを返します。いかなる関数も実行せず、データを受信しません。返されるJSONオブジェクトツリーは、ページのテンプレートに対応し、ビジュアルページデザイナーで使用することができます。ページが見つからない場合は、404エラーが返されます。")]),t._v(" "),e("p",[e("a",{attrs:{href:"#authorization"}},[t._v("Authorization")])]),t._v(" "),e("h4",{attrs:{id:"パラメーター-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-41"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" -\nページ名は "),e("code",[t._v("@ecosystem_id%%%page_name%")]),t._v(" の形式で指定します。例: "),e("code",[t._v("@1main_page")]),t._v("。\nエコシステムIDを持たない場合は、デフォルトで現在のエコロジーのページが見つかります。例: "),e("code",[t._v("main_page")])])]),t._v(" "),e("h4",{attrs:{id:"返り値-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-21"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("tree")]),t._v(" - "),e("em",[t._v("Array")]),t._v(" - ページのJSONオブジェクトツリー。")])]),t._v(" "),e("h4",{attrs:{id:"例-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-41"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {$Token}" -d \'{"jsonrpc":"2.0","method":"ibax.getSource","id":1,"params":["@1params_list"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": [\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1applications"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"name\\": \\"System\\"}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "setvar",\n "attr": {\n "name": "role_developer_id",\n "value": "AppParam(Ecosystem: #ecosystem_id#, App: #application_id#, Name: role_developer)"\n }\n },\n {\n "tag": "dbfind",\n "attr": {\n "name": "@1roles_participants"\n },\n "tail": [\n {\n "tag": "where",\n "attr": {\n "where": "{\\"ecosystem\\": \\"#ecosystem_id#\\", \\"$and\\": [{\\"role->id\\": {\\"$in\\": [#role_developer_id#]}}, {\\"role->id\\": \\"#role_id#\\"}], \\"member->account\\": \\"#account_id#\\", \\"deleted\\": 0}"\n }\n }\n\t\t\t\t\t\t...\n ]\n },\n {\n "tag": "if",\n "attr": {\n "condition": "#developer_access_id#>0"\n },\n "children": [\n {\n "tag": "setvar",\n "attr": {\n "name": "this_page",\n "value": "@1params_list"\n }\n }\n\t\t\t\t\t\t...\n ],\n "tail": [\n {\n "tag": "else",\n "children": [\n {\n "tag": "settitle",\n "attr": {\n "title": "$@1ecosystem_parameters$"\n }\n }\n\t\t\t\t\t\t\t\t...\n ]\n }\n ]\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getpagehash"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getpagehash"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getPageHash")])]),t._v(" "),e("p",[t._v("指定されたページ名のSHA256ハッシュを返します。ページが見つからない場合は404エラーが返されます。")]),t._v(" "),e("p",[t._v("他のノードにリクエストを行う際に正しいハッシュを受け取るためには、"),e("em",[t._v("ecosystem,key_id,role_id")]),t._v(" パラメーターも渡す必要があります。他のエコシステムからページを受け取るには、ページ名の前にエコシステムIDを付ける必要があります。例:"),e("code",[t._v("@2mypage")]),t._v("。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-42"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-42"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("name")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - エコシステムIDを含むページの名前。形式は "),e("code",[t._v("@ecosystem_id%%%page_name%")]),t._v(" です。例: "),e("code",[t._v("@1main_page")]),t._v("。エコシステムIDを指定することもできます。")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ecosystem")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" エコシステムID。")])]),t._v(" "),e("li",[e("p",[e("em",[t._v("Object")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" 指定されたページオブジェクトを取得する場合")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アカウントアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("role_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ロールID。")])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-22"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" -\n"),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 16進数のハッシュ値。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-42"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-42"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getPageHash","id":1,"params":["@1params_list",0,{"role_id":"1","key_id":"-6484253546138538120"}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "fc5ed3b5e879dd5521dfb792e815019bd8411851e850e75a3590d71e950a0465"\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getcontent"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getcontent"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getContent")])]),t._v(" "),e("p",[t._v("オプションのパラメーター "),e("strong",[t._v("source")]),t._v(" が "),e("code",[t._v("true")]),t._v(" と指定されている場合、"),e("strong",[t._v("template")]),t._v(" パラメーターのページコードからJSONオブジェクトの数を返します。このJSONオブジェクトツリーは、関数を実行せずにデータを受信しないものです。このJSONオブジェクトツリーは、ビジュアルページデザイナーで使用することができます。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-43"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-43"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("Object")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("template")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ページコード。")]),t._v(" "),e("li",[e("strong",[t._v("source")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - "),e("code",[t._v("true")]),t._v(" と指定されている場合、JSONオブジェクトツリーは関数を実行せずにデータを受信しません。")])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-23"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("tree")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - JSONオブジェクトツリー。")])]),t._v(" "),e("h4",{attrs:{id:"例-43"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-43"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getContent","id":1,"params":[{"template","..."source":true}]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "tree": {\n "type":"......", \n "children": [\n {...},\n {...}\n ]\n }\n }\n }\n \n')])])]),e("h3",{attrs:{id:"ibax-getblockinfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getblockinfo"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getBlockInfo")])]),t._v(" "),e("p",[t._v("指定されたブロックIDに関する情報を返します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-44"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-44"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの高さ。")])]),t._v(" "),e("h4",{attrs:{id:"返り値-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-24"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのハッシュ値。")]),t._v(" "),e("li",[e("strong",[t._v("key_id")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックに署名したアカウントのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("time")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックの生成タイムスタンプ。")]),t._v(" "),e("li",[e("strong",[t._v("tx_count")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロック内のトランザクションの総数。")]),t._v(" "),e("li",[e("strong",[t._v("rollbacks_hash")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ブロックのロールバックハッシュ。")]),t._v(" "),e("li",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ブロックのエンドポイントリスト内での位置。")]),t._v(" "),e("li",[e("strong",[t._v("consensus_mode")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - コンセンサスモード(1: クリエーターマネージメントモード、2: DAOガバナンスモード)。")])]),t._v(" "),e("h4",{attrs:{id:"例-44"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-44"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getBlockInfo","id":1,"params":[12]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "hash": "Hl+/VvYFFu4iq4zLrRDGHBhm7DM7llEAfEJyaX2Q3is=",\n "key_id": 6667782293976713160,\n "time": 1677134955,\n "tx_count": 1,\n "rollbacks_hash": "o37QAighKMb8WqbEHAqCQb5bOfMvOqV0WoTaN631q74=",\n "node_position": 0,\n "consensus_mode": 1\n }\n }\n')])])]),e("h3",{attrs:{id:"ibax-getconfig"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ibax-getconfig"}},[t._v("#")]),t._v(" "),e("strong",[t._v("ibax.getConfig")])]),t._v(" "),e("p",[t._v("centrifugoのホストアドレスとポートを取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-45"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-45"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("option")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - 設定項目")]),t._v(" "),e("ol",[e("li",[t._v('"centrifugo" - メッセージングサービス')])])])]),t._v(" "),e("h4",{attrs:{id:"返り値-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-25"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("centrifugo")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - "),e("a",{attrs:{href:"#omitempty"}},[t._v("Omitempty")]),t._v(" centrifugoのホストアドレスとポート。結果の形式は "),e("code",[t._v("http://address:port")]),t._v(" となります。例: "),e("code",[t._v("http://127.0.0.1:8100")]),t._v("。")])]),t._v(" "),e("h4",{attrs:{id:"例-45"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-45"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"ibax.getConfig","id":1,"params":["centrifugo"]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "centrifugo":"http://127.0.0.1:8100"\n }\n }\n')])])]),e("h3",{attrs:{id:"net-getnetwork"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#net-getnetwork"}},[t._v("#")]),t._v(" "),e("strong",[t._v("net.getNetwork")])]),t._v(" "),e("p",[t._v("ノードの情報を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-46"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-46"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-26"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("network_id")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ネットワークの識別子。")]),t._v(" "),e("li",[e("strong",[t._v("centrifugo_url")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - centrifugoメッセージサービスのアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("test")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - テストチェーンであるかどうか。")]),t._v(" "),e("li",[e("strong",[t._v("private")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - チェーンがプライベートであるかどうか。")]),t._v(" "),e("li",[e("strong",[t._v("honor_nodes")]),t._v(" - "),e("em",[t._v("Object")]),t._v(" - honorノードのリスト。\n"),e("ul",[e("li",[e("strong",[t._v("tcp_address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - TCPアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("api_address")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - APIアドレス。")]),t._v(" "),e("li",[e("strong",[t._v("public_key")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ノードの公開鍵。")]),t._v(" "),e("li",[e("strong",[t._v("unban_time")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - アンバンの時間。")])])])]),t._v(" "),e("h4",{attrs:{id:"例-46"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-46"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.getNetwork","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "network_id": "1",\n "centrifugo_url": "127.0.0.1",\n "test": false,\n "private": false,\n "honor_nodes": [\n {\n "tcp_address": "127.0.0.1:7078",\n "api_address": "http://127.0.0.1:7078",\n "public_key": "049a41b24862f8db61ee66fb206094baa57bfeac7ea786d63662a964d144eb85d1a0e230928d56f46dd61eefac7640b6aa2883b2445c7b2adc0e581f983ff0aedb",\n "unban_time": "-62135596800"\n }\n ]\n }\n }\n')])])]),e("h3",{attrs:{id:"net-status"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#net-status"}},[t._v("#")]),t._v(" "),e("strong",[t._v("net.status")])]),t._v(" "),e("p",[t._v("現在のノードのステータスを取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-47"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-47"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-27"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("status")]),t._v(" - "),e("em",[t._v("String")]),t._v(" - ノードのステータス\n"),e("ul",[e("li",[t._v('"node server status is running" - ノードが稼働中です')]),t._v(" "),e("li",[t._v('"node server is updating" - ノードが更新中です')]),t._v(" "),e("li",[t._v('"node server is stopped" - ノードが停止中です')])])])]),t._v(" "),e("h4",{attrs:{id:"例-47"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-47"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"net.status","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": "node server status is running"\n }\n')])])]),e("h3",{attrs:{id:"rpc-modules"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rpc-modules"}},[t._v("#")]),t._v(" "),e("strong",[t._v("rpc.modules")])]),t._v(" "),e("p",[t._v("現在登録されているJSON-RPCインターフェースを取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-48"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-48"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-28"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("Array")]),t._v(" - JSON-RPCインターフェースの配列")])]),t._v(" "),e("h4",{attrs:{id:"例-48"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-48"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"rpc.modules","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n "net.getNetwork",\n "ibax.getAppContent",\n "ibax.honorNodesCount",\n "ibax.maxBlockId",\n "ibax.detailedBlock",\n "ibax.getConfig",\n "ibax.getTableCount",\n "ibax.getMenu"\n ]\n }\n')])])]),e("h3",{attrs:{id:"admin-startjsonrpc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#admin-startjsonrpc"}},[t._v("#")]),t._v(" "),e("strong",[t._v("admin.startJsonRpc")])]),t._v(" "),e("p",[t._v("JSON-RPCの名前空間サービスの切り替えに使用できます。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-49"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-49"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[e("strong",[t._v("methods")]),t._v(" - "),e("em",[t._v("String")]),t._v(' - JSON-RPCモジュール、デフォルト値: "ibax,net"')]),t._v(" "),e("h4",{attrs:{id:"返り値-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-29"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("bool")]),t._v(" - 実行のステータス")])]),t._v(" "),e("h4",{attrs:{id:"例-49"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-49"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.startJsonRpc","id":1,"params":["ibax,net,admin"]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),e("h3",{attrs:{id:"admin-stopjsonrpc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#admin-stopjsonrpc"}},[t._v("#")]),t._v(" "),e("strong",[t._v("admin.stopJsonRpc")])]),t._v(" "),e("p",[t._v("JSON-RPCサービスを閉じることができます。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-50"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-50"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-30"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("em",[t._v("bool")]),t._v(" - 実行のステータス")])]),t._v(" "),e("h4",{attrs:{id:"例-50"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-50"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"admin.stopJsonRpc","id":1,"params":[]}\' http://127.0.0.1:8385\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": true\n }\n')])])]),e("h3",{attrs:{id:"debug-getnodebanstat"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#debug-getnodebanstat"}},[t._v("#")]),t._v(" "),e("strong",[t._v("debug.getNodeBanStat")])]),t._v(" "),e("p",[t._v("ノードの無効化状態を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-51"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-51"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-31"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("p",[e("strong",[t._v("node_position")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - ノードの添字\n"),e("strong",[t._v("status")]),t._v(" - "),e("em",[t._v("Bool")]),t._v(" - 無効化の状態。"),e("code",[t._v("true")]),t._v("は無効化されていることを示し、"),e("code",[t._v("false")]),t._v("は無効化されていないことを示します。")]),t._v(" "),e("h4",{attrs:{id:"例-51"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-51"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getNodeBanStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": [\n {\n "node_position": 0,\n "status": true\n }\n ]\n }\n')])])]),e("h3",{attrs:{id:"debug-getmemstat"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#debug-getmemstat"}},[t._v("#")]),t._v(" "),e("strong",[t._v("debug.getMemStat")])]),t._v(" "),e("p",[t._v("現在のノードのメモリ使用状況を取得します。")]),t._v(" "),e("h4",{attrs:{id:"パラメーター-52"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#パラメーター-52"}},[t._v("#")]),t._v(" パラメーター")]),t._v(" "),e("p",[t._v("なし")]),t._v(" "),e("h4",{attrs:{id:"返り値-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#返り値-32"}},[t._v("#")]),t._v(" 返り値")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("alloc")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - リクエストされたバイト数およびまだ使用中のバイト数")]),t._v(" "),e("li",[e("strong",[t._v("sys")]),t._v(" - "),e("em",[t._v("Number")]),t._v(" - システムから取得されたバイト数")])]),t._v(" "),e("h4",{attrs:{id:"例-52"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#例-52"}},[t._v("#")]),t._v(" 例")]),t._v(" "),e("div",{staticClass:"language-text extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' //Request\n curl -X POST -H "Content-Type: application/json" -d \'{"jsonrpc":"2.0","method":"debug.getMemStat","id":1,"params":[]}\' http://127.0.0.1:7079\n\n //Response\n {\n "jsonrpc": "2.0",\n "id": 1,\n "result": {\n "alloc": 11537432,\n "sys": 35329248\n }\n }\n')])])])])}),[],!1,null,null,null);a.default=_.exports}}]); \ No newline at end of file diff --git a/assets/js/80.fc3ac8ab.js b/assets/js/98.32aeff0a.js similarity index 99% rename from assets/js/80.fc3ac8ab.js rename to assets/js/98.32aeff0a.js index d4db791..c6a774e 100644 --- a/assets/js/80.fc3ac8ab.js +++ b/assets/js/98.32aeff0a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{460:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" Daemon")]),e._v(" "),a("p",[e._v("In this section, we will describe how IBax nodes interact with each other from a technical perspective.")]),e._v(" "),a("h2",{attrs:{id:"about-the-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#about-the-server-daemon"}},[e._v("#")]),e._v(" About the server daemon")]),e._v(" "),a("p",[e._v("The server daemon needs to run on every network node, which executes various server functions and supports IBax's blockchain protocol. In the blockchain network, the daemon distributes blocks and transactions, generates new blocks, and verifies blocks and transactions received, and it can avoid the fork issue.")]),e._v(" "),a("h3",{attrs:{id:"honor-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node-daemon"}},[e._v("#")]),e._v(" Honor node daemon")]),e._v(" "),a("p",[e._v("A honor node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-daemon"}},[e._v("BlockGenerator daemon")])]),e._v(" "),a("p",[e._v("Generating new blocks.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("p",[e._v("Downloading new blocks from other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("p",[e._v("Confirming that blocks on the node also exist on most other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("p",[e._v("Distributing transactions and blocks to other honor nodes.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks daemon")]),e._v(" "),a("p",[e._v("Blocks in the queue, which contains blocks from other nodes.")]),e._v(" "),a("p",[e._v("Block processing logic is the same as "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx daemon")]),e._v(" "),a("p",[e._v("Verifying the transactions in queue.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler daemon")]),e._v(" "),a("p",[e._v("Running contracts as scheduled.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node-daemon"}},[e._v("#")]),e._v(" Guardian node daemon")]),e._v(" "),a("p",[e._v("A guardian node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Scheduler")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection daemon")]),e._v(" "),a("p",[e._v("This daemon downloads blocks and synchronizes the blockchain with other network nodes.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronization"}},[e._v("#")]),e._v(" Blockchain synchronization")]),e._v(" "),a("p",[e._v("This daemon synchronizes the blockchain by determining the maximum block height in the blockchain network, requesting new blocks, and solving the fork issue in the blockchain.")]),e._v(" "),a("h4",{attrs:{id:"check-for-blockchain-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-for-blockchain-updates"}},[e._v("#")]),e._v(" Check for blockchain updates")]),e._v(" "),a("p",[e._v("This daemon sends requests from the current block ID to all honor nodes.")]),e._v(" "),a("p",[e._v("If the current block ID of the node running the daemon is less than the current block ID of any honor node, the blockchain network node is considered out of date.")]),e._v(" "),a("h4",{attrs:{id:"download-new-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-new-blocks"}},[e._v("#")]),e._v(" Download new blocks")]),e._v(" "),a("p",[e._v("The node that returns the largest current block height is considered the latest node.\nThe daemon downloads all unknown blocks.")]),e._v(" "),a("h4",{attrs:{id:"solving-the-fork-issue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[e._v("#")]),e._v(" Solving the fork issue")]),e._v(" "),a("p",[e._v("If a fork is detected in the blockchain, the daemon moves the fork backward by downloading all blocks to a common parent block.\nWhen found the common parent block, a blockchain rollback is performed on the node running the daemon, and the correct block is added to the blockchain until the latest one is included.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlocksCollection daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockCollection daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" points to the largest block ID among all honor nodes.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" points to the data with the largest block ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-daemon"}},[e._v("#")]),e._v(" BlockGenerator daemon")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon generates new blocks.")]),e._v(" "),a("h3",{attrs:{id:"pre-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pre-verification"}},[e._v("#")]),e._v(" Pre-verification")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon analyzes the latest blocks in the blockchain to make new block generation plans.")]),e._v(" "),a("p",[e._v("If the following conditions are met, a new block can be generated:")]),e._v(" "),a("ul",[a("li",[e._v("The node that generated the latest block is in a node within the honor node list and runs the daemon.")]),e._v(" "),a("li",[e._v("The shortest time since the latest unverified block was generated.")])]),e._v(" "),a("h3",{attrs:{id:"block-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-generation"}},[e._v("#")]),e._v(" Block generation")]),e._v(" "),a("p",[e._v("A new block generated by the daemon contains all new transactions, which can be received from the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(" of other nodes or generated by the node running the daemon. The block generated is stored in the node database.")]),e._v(" "),a("h3",{attrs:{id:"tables-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-2"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (saves new blocks)")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon does not make any request to other daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator daemon")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends transactions and blocks to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[e._v("#")]),e._v(" Guardian node")]),e._v(" "),a("p",[e._v("When working on a guardian node, the daemon sends transactions generated by its node to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),a("p",[e._v("When working on a honor node, the daemon sends blocks generated and transaction hashes to all honor nodes.")]),e._v(" "),a("p",[e._v("Then, the honor node responds to transaction requests unknown to it. The daemon sends the complete transaction data as a response.")]),e._v(" "),a("h3",{attrs:{id:"tables-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-3"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Disseminator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("transactions")])]),e._v(" "),a("h3",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Send transactions and block hashes to the honor node.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Receive transaction data from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"confirmations-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirmations-daemon"}},[e._v("#")]),e._v(" Confirmations daemon")]),e._v(" "),a("p",[e._v("The Confirmations daemon checks whether all the blocks in its node exist on most other nodes.")]),e._v(" "),a("h3",{attrs:{id:"block-confirmation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-confirmation"}},[e._v("#")]),e._v(" Block confirmation")]),e._v(" "),a("p",[e._v("A block confirmed by multiple node in the network is considered as a confirmed block.")]),e._v(" "),a("p",[e._v("The daemon confirms all blocks one by one starting from the first that is currently not confirmed in the database.")]),e._v(" "),a("p",[e._v("Each block is confirmed in the way as follows:")]),e._v(" "),a("ul",[a("li",[e._v("Sending a request containing the ID of the block being confirmed to all honor nodes.")]),e._v(" "),a("li",[e._v("All honor nodes respond to the block hash.")]),e._v(" "),a("li",[e._v("If the hash responded matches the hash of the block on the daemon node, the confirmation counter value is increased. If not, the cancellation counter value is increased.")])]),e._v(" "),a("h3",{attrs:{id:"tables-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-4"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Confirmations daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("confirmation")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Confirmations daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Request block hashes from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-service-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-service-protocol"}},[e._v("#")]),e._v(" TCP service protocol")]),e._v(" "),a("p",[e._v("The TCP service protocol works on honor nodes and guardian nodes, which uses the binary protocol on TCP to requests from the BlocksCollection, Disseminator, and Confirmation daemons.")]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[e._v("Each request has a type defined by the first two bytes of the request.")]),e._v(" "),a("h2",{attrs:{id:"type-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-1"}},[e._v("#")]),e._v(" Type 1")]),e._v(" "),a("h4",{attrs:{id:"request-sender"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Hashes of the transaction and block.")]),e._v(" "),a("h4",{attrs:{id:"request-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("The block hash is added to the block queue.")]),e._v(" "),a("p",[e._v("Analyzes and verifies the transaction hashes, and select transactions that have not yet appeared on the node.")]),e._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No. After processing the request, a "),a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" request is issued.")]),e._v(" "),a("h2",{attrs:{id:"type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-2"}},[e._v("#")]),e._v(" Type 2")]),e._v(" "),a("h4",{attrs:{id:"request-sender-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-2"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-2"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("The transaction data, including the data size:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the transaction data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The transaction data.")]),e._v(" "),a("h4",{attrs:{id:"request-processing-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing-2"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("Verifies the transaction and add it to the transaction queue.")]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h2",{attrs:{id:"type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-4"}},[e._v("#")]),e._v(" Type 4")]),e._v(" "),a("h4",{attrs:{id:"request-sender-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-3"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-3"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block hash.")]),e._v(" "),a("p",[e._v("Returns "),a("code",[e._v("0")]),e._v(" if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-7"}},[e._v("#")]),e._v(" Type 7")]),e._v(" "),a("h4",{attrs:{id:"request-sender-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-4"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-4"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The block data, including data size.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the block data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The block data.")]),e._v(" "),a("p",[e._v("The connection is closed if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-10"}},[e._v("#")]),e._v(" Type 10")]),e._v(" "),a("h4",{attrs:{id:"request-sender-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-5"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-5"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{476:function(e,t,a){"use strict";a.r(t);var s=a(51),o=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#daemon"}},[e._v("#")]),e._v(" Daemon")]),e._v(" "),a("p",[e._v("In this section, we will describe how IBax nodes interact with each other from a technical perspective.")]),e._v(" "),a("h2",{attrs:{id:"about-the-server-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#about-the-server-daemon"}},[e._v("#")]),e._v(" About the server daemon")]),e._v(" "),a("p",[e._v("The server daemon needs to run on every network node, which executes various server functions and supports IBax's blockchain protocol. In the blockchain network, the daemon distributes blocks and transactions, generates new blocks, and verifies blocks and transactions received, and it can avoid the fork issue.")]),e._v(" "),a("h3",{attrs:{id:"honor-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node-daemon"}},[e._v("#")]),e._v(" Honor node daemon")]),e._v(" "),a("p",[e._v("A honor node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("p",[a("a",{attrs:{href:"#blockgenerator-daemon"}},[e._v("BlockGenerator daemon")])]),e._v(" "),a("p",[e._v("Generating new blocks.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("p",[e._v("Downloading new blocks from other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("p",[e._v("Confirming that blocks on the node also exist on most other nodes.")])]),e._v(" "),a("li",[a("p",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("p",[e._v("Distributing transactions and blocks to other honor nodes.")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserBlocks daemon")]),e._v(" "),a("p",[e._v("Blocks in the queue, which contains blocks from other nodes.")]),e._v(" "),a("p",[e._v("Block processing logic is the same as "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")])]),e._v(" "),a("li",[a("p",[e._v("QueueParserTx daemon")]),e._v(" "),a("p",[e._v("Verifying the transactions in queue.")])]),e._v(" "),a("li",[a("p",[e._v("Scheduler daemon")]),e._v(" "),a("p",[e._v("Running contracts as scheduled.")])])]),e._v(" "),a("h3",{attrs:{id:"guardian-node-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node-daemon"}},[e._v("#")]),e._v(" Guardian node daemon")]),e._v(" "),a("p",[e._v("A guardian node runs the following server daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")])]),e._v(" "),a("li",[a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")])]),e._v(" "),a("li",[e._v("QueueParserTx")]),e._v(" "),a("li",[e._v("Scheduler")])]),e._v(" "),a("h2",{attrs:{id:"blockcollection-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockcollection-daemon"}},[e._v("#")]),e._v(" BlockCollection daemon")]),e._v(" "),a("p",[e._v("This daemon downloads blocks and synchronizes the blockchain with other network nodes.")]),e._v(" "),a("h3",{attrs:{id:"blockchain-synchronization"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockchain-synchronization"}},[e._v("#")]),e._v(" Blockchain synchronization")]),e._v(" "),a("p",[e._v("This daemon synchronizes the blockchain by determining the maximum block height in the blockchain network, requesting new blocks, and solving the fork issue in the blockchain.")]),e._v(" "),a("h4",{attrs:{id:"check-for-blockchain-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-for-blockchain-updates"}},[e._v("#")]),e._v(" Check for blockchain updates")]),e._v(" "),a("p",[e._v("This daemon sends requests from the current block ID to all honor nodes.")]),e._v(" "),a("p",[e._v("If the current block ID of the node running the daemon is less than the current block ID of any honor node, the blockchain network node is considered out of date.")]),e._v(" "),a("h4",{attrs:{id:"download-new-blocks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-new-blocks"}},[e._v("#")]),e._v(" Download new blocks")]),e._v(" "),a("p",[e._v("The node that returns the largest current block height is considered the latest node.\nThe daemon downloads all unknown blocks.")]),e._v(" "),a("h4",{attrs:{id:"solving-the-fork-issue"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solving-the-fork-issue"}},[e._v("#")]),e._v(" Solving the fork issue")]),e._v(" "),a("p",[e._v("If a fork is detected in the blockchain, the daemon moves the fork backward by downloading all blocks to a common parent block.\nWhen found the common parent block, a blockchain rollback is performed on the node running the daemon, and the correct block is added to the blockchain until the latest one is included.")]),e._v(" "),a("h3",{attrs:{id:"tables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlocksCollection daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockCollection daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-10"}},[e._v("Type 10")]),e._v(" points to the largest block ID among all honor nodes.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-7"}},[e._v("Type 7")]),e._v(" points to the data with the largest block ID.")])]),e._v(" "),a("h2",{attrs:{id:"blockgenerator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#blockgenerator-daemon"}},[e._v("#")]),e._v(" BlockGenerator daemon")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon generates new blocks.")]),e._v(" "),a("h3",{attrs:{id:"pre-verification"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pre-verification"}},[e._v("#")]),e._v(" Pre-verification")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon analyzes the latest blocks in the blockchain to make new block generation plans.")]),e._v(" "),a("p",[e._v("If the following conditions are met, a new block can be generated:")]),e._v(" "),a("ul",[a("li",[e._v("The node that generated the latest block is in a node within the honor node list and runs the daemon.")]),e._v(" "),a("li",[e._v("The shortest time since the latest unverified block was generated.")])]),e._v(" "),a("h3",{attrs:{id:"block-generation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-generation"}},[e._v("#")]),e._v(" Block generation")]),e._v(" "),a("p",[e._v("A new block generated by the daemon contains all new transactions, which can be received from the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(" of other nodes or generated by the node running the daemon. The block generated is stored in the node database.")]),e._v(" "),a("h3",{attrs:{id:"tables-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-2"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("block_chain (saves new blocks)")]),e._v(" "),a("li",[e._v("transactions")]),e._v(" "),a("li",[e._v("transactions_status")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-2"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The BlockGenerator daemon does not make any request to other daemons.")]),e._v(" "),a("h2",{attrs:{id:"disseminator-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disseminator-daemon"}},[e._v("#")]),e._v(" Disseminator daemon")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends transactions and blocks to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"guardian-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#guardian-node"}},[e._v("#")]),e._v(" Guardian node")]),e._v(" "),a("p",[e._v("When working on a guardian node, the daemon sends transactions generated by its node to all honor nodes.")]),e._v(" "),a("h3",{attrs:{id:"honor-node"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#honor-node"}},[e._v("#")]),e._v(" Honor node")]),e._v(" "),a("p",[e._v("When working on a honor node, the daemon sends blocks generated and transaction hashes to all honor nodes.")]),e._v(" "),a("p",[e._v("Then, the honor node responds to transaction requests unknown to it. The daemon sends the complete transaction data as a response.")]),e._v(" "),a("h3",{attrs:{id:"tables-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-3"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Disseminator daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("transactions")])]),e._v(" "),a("h3",{attrs:{id:"request-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-3"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Disseminator daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-1"}},[e._v("Type 1")]),e._v(" Send transactions and block hashes to the honor node.")]),e._v(" "),a("li",[a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" Receive transaction data from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"confirmations-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#confirmations-daemon"}},[e._v("#")]),e._v(" Confirmations daemon")]),e._v(" "),a("p",[e._v("The Confirmations daemon checks whether all the blocks in its node exist on most other nodes.")]),e._v(" "),a("h3",{attrs:{id:"block-confirmation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#block-confirmation"}},[e._v("#")]),e._v(" Block confirmation")]),e._v(" "),a("p",[e._v("A block confirmed by multiple node in the network is considered as a confirmed block.")]),e._v(" "),a("p",[e._v("The daemon confirms all blocks one by one starting from the first that is currently not confirmed in the database.")]),e._v(" "),a("p",[e._v("Each block is confirmed in the way as follows:")]),e._v(" "),a("ul",[a("li",[e._v("Sending a request containing the ID of the block being confirmed to all honor nodes.")]),e._v(" "),a("li",[e._v("All honor nodes respond to the block hash.")]),e._v(" "),a("li",[e._v("If the hash responded matches the hash of the block on the daemon node, the confirmation counter value is increased. If not, the cancellation counter value is increased.")])]),e._v(" "),a("h3",{attrs:{id:"tables-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tables-4"}},[e._v("#")]),e._v(" Tables")]),e._v(" "),a("p",[e._v("The Confirmations daemon uses the following tables:")]),e._v(" "),a("ul",[a("li",[e._v("confirmation")]),e._v(" "),a("li",[e._v("info_block")])]),e._v(" "),a("h3",{attrs:{id:"request-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-4"}},[e._v("#")]),e._v(" Request")]),e._v(" "),a("p",[e._v("The Confirmations daemon sends the following requests to other daemons:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"#type-4"}},[e._v("Type 4")]),e._v(" Request block hashes from the honor node.")])]),e._v(" "),a("h2",{attrs:{id:"tcp-service-protocol"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tcp-service-protocol"}},[e._v("#")]),e._v(" TCP service protocol")]),e._v(" "),a("p",[e._v("The TCP service protocol works on honor nodes and guardian nodes, which uses the binary protocol on TCP to requests from the BlocksCollection, Disseminator, and Confirmation daemons.")]),e._v(" "),a("h2",{attrs:{id:"request-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-type"}},[e._v("#")]),e._v(" Request type")]),e._v(" "),a("p",[e._v("Each request has a type defined by the first two bytes of the request.")]),e._v(" "),a("h2",{attrs:{id:"type-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-1"}},[e._v("#")]),e._v(" Type 1")]),e._v(" "),a("h4",{attrs:{id:"request-sender"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Hashes of the transaction and block.")]),e._v(" "),a("h4",{attrs:{id:"request-processing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("The block hash is added to the block queue.")]),e._v(" "),a("p",[e._v("Analyzes and verifies the transaction hashes, and select transactions that have not yet appeared on the node.")]),e._v(" "),a("h4",{attrs:{id:"response"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No. After processing the request, a "),a("a",{attrs:{href:"#type-2"}},[e._v("Type 2")]),e._v(" request is issued.")]),e._v(" "),a("h2",{attrs:{id:"type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-2"}},[e._v("#")]),e._v(" Type 2")]),e._v(" "),a("h4",{attrs:{id:"request-sender-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-2"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#disseminator-daemon"}},[e._v("Disseminator daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-2"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("The transaction data, including the data size:")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the transaction data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The transaction data.")]),e._v(" "),a("h4",{attrs:{id:"request-processing-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-processing-2"}},[e._v("#")]),e._v(" Request processing")]),e._v(" "),a("p",[e._v("Verifies the transaction and add it to the transaction queue.")]),e._v(" "),a("h4",{attrs:{id:"response-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-2"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h2",{attrs:{id:"type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-4"}},[e._v("#")]),e._v(" Type 4")]),e._v(" "),a("h4",{attrs:{id:"request-sender-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-3"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#confirmations-daemon"}},[e._v("Confirmations daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-3"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("h4",{attrs:{id:"response-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-3"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block hash.")]),e._v(" "),a("p",[e._v("Returns "),a("code",[e._v("0")]),e._v(" if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-7"}},[e._v("#")]),e._v(" Type 7")]),e._v(" "),a("h4",{attrs:{id:"request-sender-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-4"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-4"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])]),e._v(" "),a("h4",{attrs:{id:"response-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-4"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("The block data, including data size.")]),e._v(" "),a("ul",[a("li",[a("p",[e._v("data_size (4 bytes)")])]),e._v(" "),a("li",[a("p",[e._v("Size of the block data, in bytes.")])]),e._v(" "),a("li",[a("p",[e._v("data (data_size bytes)")])])]),e._v(" "),a("p",[e._v("The block data.")]),e._v(" "),a("p",[e._v("The connection is closed if not having a block with this ID.")]),e._v(" "),a("h2",{attrs:{id:"type-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#type-10"}},[e._v("#")]),e._v(" Type 10")]),e._v(" "),a("h4",{attrs:{id:"request-sender-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-sender-5"}},[e._v("#")]),e._v(" Request sender")]),e._v(" "),a("p",[e._v("This request is sent by the "),a("a",{attrs:{href:"#blockcollection-daemon"}},[e._v("BlockCollection daemon")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"request-data-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#request-data-5"}},[e._v("#")]),e._v(" Request data")]),e._v(" "),a("p",[e._v("No.")]),e._v(" "),a("h4",{attrs:{id:"response-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#response-5"}},[e._v("#")]),e._v(" Response")]),e._v(" "),a("p",[e._v("Block ID.")]),e._v(" "),a("ul",[a("li",[e._v("block_id (4 bytes)")])])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/99.516d8b9f.js b/assets/js/99.c50280d4.js similarity index 99% rename from assets/js/99.516d8b9f.js rename to assets/js/99.c50280d4.js index dd57fc9..6727c84 100644 --- a/assets/js/99.516d8b9f.js +++ b/assets/js/99.c50280d4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{477:function(t,a,e){"use strict";e.r(a);var s=e(51),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"smart-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#smart-contracts"}},[t._v("#")]),t._v(" Smart Contracts")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#contract-structure"}},[t._v("Contract Structure")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#data-section"}},[t._v("Data section")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#conditions-section"}},[t._v("Conditions section")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#action-section"}},[t._v("Action section")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#variables"}},[t._v("Variables")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#nested-contracts"}},[t._v("Nested Contracts")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#file-upload"}},[t._v("File upload")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#queries-in-json-format"}},[t._v("Queries in JSON format")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#queries-with-date-and-time-operations"}},[t._v("Queries with date and time operations")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#needle-contract-language"}},[t._v("Needle contract language")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#basic-elements-and-structure"}},[t._v("Basic elements and structure")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#data-types-and-variables"}},[t._v("Data types and variables")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#array"}},[t._v("Array")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#if-and-while-statements"}},[t._v("If and While statements")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#functions"}},[t._v("Functions")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#function-declaration"}},[t._v("Function declaration")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#variable-length-parameters"}},[t._v("Variable-length parameters")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#optional-parameters"}},[t._v("Optional parameters")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#needle-functions-classification"}},[t._v("Needle functions classification")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#needle-functions-reference"}},[t._v("Needle functions reference")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#appparam"}},[t._v("AppParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbrow"}},[t._v("DBRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbselectmetrics"}},[t._v("DBSelectMetrics")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#ecosysparam"}},[t._v("EcosysParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#gethistory"}},[t._v("GetHistory")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#gethistoryrow"}},[t._v("GetHistoryRow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getcolumntype"}},[t._v("GetColumnType")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getdatafromxlsx"}},[t._v("GetDataFromXLSX")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getrowscountxlsx"}},[t._v("GetRowsCountXLSX")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#langres"}},[t._v("LangRes")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getblock"}},[t._v("GetBlock")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbinsert"}},[t._v("DBInsert")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbupdate"}},[t._v("DBUpdate")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbupdateext"}},[t._v("DBUpdateExt")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#delcolumn"}},[t._v("DelColumn")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#deltable"}},[t._v("DelTable")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#append"}},[t._v("Append")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#join"}},[t._v("Join")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#split"}},[t._v("Split")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#len"}},[t._v("Len")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#row"}},[t._v("Row")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#one"}},[t._v("One")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getmapkeys"}},[t._v("GetMapKeys")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sortedkeys"}},[t._v("SortedKeys")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#callcontract"}},[t._v("CallContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#contractaccess"}},[t._v("ContractAccess")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#contractconditions"}},[t._v("ContractConditions")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#evalcondition"}},[t._v("EvalCondition")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getcontractbyid"}},[t._v("GetContractById")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getcontractbyname"}},[t._v("GetContractByName")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#roleaccess"}},[t._v("RoleAccess")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#transactioninfo"}},[t._v("TransactionInfo")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#throw"}},[t._v("Throw")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#validatecondition"}},[t._v("ValidateCondition")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#addresstoid"}},[t._v("AddressToId")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#idtoaddress"}},[t._v("IdToAddress")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#pubtoid"}},[t._v("PubToID")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#decodebase64"}},[t._v("DecodeBase64")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#encodebase64"}},[t._v("EncodeBase64")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#float"}},[t._v("Float")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#hextobytes"}},[t._v("HexToBytes")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#formatmoney"}},[t._v("FormatMoney")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#random"}},[t._v("Random")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#int"}},[t._v("Int")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#hash"}},[t._v("Hash")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sha256"}},[t._v("Sha256")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#str"}},[t._v("Str")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#jsonencode"}},[t._v("JSONEncode")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#jsonencodeindent"}},[t._v("JSONEncodeIndent")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#jsondecode"}},[t._v("JSONDecode")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#hasprefix"}},[t._v("HasPrefix")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#contains"}},[t._v("Contains")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#replace"}},[t._v("Replace")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#size"}},[t._v("Size")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sprintf"}},[t._v("Sprintf")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#substr"}},[t._v("Substr")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#tolower"}},[t._v("ToLower")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#toupper"}},[t._v("ToUpper")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#trimspace"}},[t._v("TrimSpace")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#floor"}},[t._v("Floor")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#log"}},[t._v("Log")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#log10"}},[t._v("Log10")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#pow"}},[t._v("Pow")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#round"}},[t._v("Round")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sqrt"}},[t._v("Sqrt")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#stringtobytes"}},[t._v("StringToBytes")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#bytestostring"}},[t._v("BytesToString")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sysparamstring"}},[t._v("SysParamString")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#sysparamint"}},[t._v("SysParamInt")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#dbupdatesysparam"}},[t._v("DBUpdateSysParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#updatenotifications"}},[t._v("UpdateNotifications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#updaterolesnotifications"}},[t._v("UpdateRolesNotifications")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#httprequest"}},[t._v("HTTPRequest")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#httppostjson"}},[t._v("HTTPPostJSON")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#blocktime"}},[t._v("BlockTime")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#datetime"}},[t._v("DateTime")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#unixdatetime"}},[t._v("UnixDateTime")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#createobs"}},[t._v("CreateOBS")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#getobslist"}},[t._v("GetOBSList")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#runobs"}},[t._v("RunOBS")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#stopobs"}},[t._v("StopOBS")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#removeobs"}},[t._v("RemoveOBS")])])])]),t._v(" "),e("li",[e("a",{attrs:{href:"#system-contracts"}},[t._v("System Contracts")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"#newecosystem"}},[t._v("NewEcosystem")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editecosystemname"}},[t._v("EditEcosystemName")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newcontract"}},[t._v("NewContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editcontract"}},[t._v("EditContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#bindwallet"}},[t._v("BindWallet")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#unbindwallet"}},[t._v("UnbindWallet")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newparameter"}},[t._v("NewParameter")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editparameter"}},[t._v("EditParameter")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newmenu"}},[t._v("NewMenu")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editmenu"}},[t._v("EditMenu")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#appendmenu"}},[t._v("AppendMenu")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newpage"}},[t._v("NewPage")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editpage"}},[t._v("EditPage")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#appendpage"}},[t._v("AppendPage")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newblock"}},[t._v("NewBlock")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editblock"}},[t._v("EditBlock")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newtable"}},[t._v("NewTable")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#edittable"}},[t._v("EditTable")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newcolumn"}},[t._v("NewColumn")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editcolumn"}},[t._v("EditColumn")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newlang"}},[t._v("NewLang")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editlang"}},[t._v("EditLang")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#import"}},[t._v("Import")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#importupload"}},[t._v("ImportUpload")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newappparam"}},[t._v("NewAppParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editappparam"}},[t._v("EditAppParam")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#newdelayedcontract"}},[t._v("NewDelayedContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#editdelayedcontract"}},[t._v("EditDelayedContract")])]),t._v(" "),e("li",[e("a",{attrs:{href:"#uploadbinary"}},[t._v("UploadBinary")])])])])]),t._v(" "),e("p",[t._v("Smart Contract (hereinafter referred to as Contract) is one of the basic elements of an application. The implementation of a contract on a page by the user is usually a single operation that the purpose is to update or create a database entry. All data operations of an application form a contract system, and these contracts interact with each other through database or contract content functions.")]),t._v(" "),e("h2",{attrs:{id:"contract-structure"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contract-structure"}},[t._v("#")]),t._v(" Contract Structure")]),t._v(" "),e("p",[t._v("Use the keyword "),e("code",[t._v("contract")]),t._v(" to declare a contract, followed by the contract name, and the contract content must be enclosed in braces. A contract mainly consists of three sections:")]),t._v(" "),e("ol",[e("li",[e("p",[e("strong",[t._v("data")]),t._v(" - "),e("a",{attrs:{href:"#data-section"}},[t._v("data section")]),t._v(", where declares the variables of the input data, including variable name and variable type;")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("conditions")]),t._v(" - "),e("a",{attrs:{href:"#conditions-section"}},[t._v("conditions section")]),t._v(", where validates the correctness of the data;")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("action")]),t._v(" - "),e("a",{attrs:{href:"#action-section"}},[t._v("action section")]),t._v(", where defines the data manipulations.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("contract MyContract {\n data {\n FromId int\n ToId int\n Amount money\n }\n func conditions {\n ...\n }\n func action {\n ...\n }\n}\n")])])]),e("h3",{attrs:{id:"data-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#data-section"}},[t._v("#")]),t._v(" Data section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("data")]),t._v(" section describes the contract data inputs and the form parameters received.")]),t._v(" "),e("p",[t._v("The structure of each line by sequence:")]),t._v(" "),e("ul",[e("li",[t._v("Variable name - only receive variables, not arrays;")]),t._v(" "),e("li",[t._v("Variable data type - the "),e("a",{attrs:{href:"#data-types-and-variables"}},[t._v("data type")]),t._v(" of the variable;")]),t._v(" "),e("li",[t._v("optional - an optional parameter that do not need to fill in the form element.")])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('contract my {\n data {\n Name string\n RequestId int\n Photo file "optional"\n Amount money\n Private bytes\n }\n ...\n}\n')])])]),e("h3",{attrs:{id:"conditions-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#conditions-section"}},[t._v("#")]),t._v(" Conditions section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("conditions")]),t._v(" section describes the validation of data received.")]),t._v(" "),e("p",[t._v("The following commands are used for error warnings: serious errors "),e("code",[t._v("error")]),t._v(", warning errors "),e("code",[t._v("warning")]),t._v(", suggestive errors "),e("code",[t._v("info")]),t._v(". These three commands will generate an error that terminates the execution of contracts, and each error will print a different type of error log information. For example:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('if fuel == 0 {\n error "fuel cannot be zero!"\n}\nif money < limit {\n warning Sprintf("You don\'t have enough money: %v <%v", money, limit)\n}\nif idexist > 0 {\n info "You have already been registered"\n}\n')])])]),e("h3",{attrs:{id:"action-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#action-section"}},[t._v("#")]),t._v(" Action section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("action")]),t._v(" section describes the main code of the contract, which retrieves other data and records the result values in tables. For example:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('action {\nDBUpdate("keys", $key_id, {"-amount": $amount})\nDBUpdate("keys", $recipient, {"+amount": $amount, "pub": $Pub})\n}\n')])])]),e("h2",{attrs:{id:"variables"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variables"}},[t._v("#")]),t._v(" Variables")]),t._v(" "),e("p",[t._v("Variables declared in the data section are passed to other contract sections through the "),e("code",[t._v("$")]),t._v(" symbol followed by the variable name. The "),e("code",[t._v("$")]),t._v(" symbol can also be used to declare other variables that are not within the data section, which are considered as global variables of this contract and all contracts that this contract is nested.")]),t._v(" "),e("p",[t._v("Pre-defined variables can be used in contracts, which contain transaction data that called the contract:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("$time")]),t._v(" - transaction timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$ecosystem_id")]),t._v(" - ecosystem ID;")]),t._v(" "),e("li",[e("code",[t._v("$block")]),t._v(" - ID of the block containing the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$key_id")]),t._v(" - address of the account that signed the current transaction;")]),t._v(" "),e("li",[e("code",[t._v("$type")]),t._v(" - contract ID in the virtual machine;")]),t._v(" "),e("li",[e("code",[t._v("$block_key_id")]),t._v(" - account address of the node generated the block;")]),t._v(" "),e("li",[e("code",[t._v("$block_time")]),t._v(" - block generation timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$original_contract")]),t._v(" - name of the contract that initially processed the transaction. It means the contract is called during transaction validation if the variable is an empty string. To check whether the contract is called by another contract or directly by the transaction, you need to compare the values of $original_contract and $this_contract. It means that the contract is called by the transaction if they are equal;")]),t._v(" "),e("li",[e("code",[t._v("$this_contract")]),t._v(" - name of the contract currently being executed;")]),t._v(" "),e("li",[e("code",[t._v("$guest_key")]),t._v(" - guest account address;")]),t._v(" "),e("li",[e("code",[t._v("$stack")]),t._v(" - contract array stack with a data type of array, containing all contracts executed. The first element of the array represents the name of the contract currently being executed, while the last element represents the name of the contract that initially processed the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$node_position")]),t._v(" - the index number of the verification node array where the block is located;")]),t._v(" "),e("li",[e("code",[t._v("$txhash")]),t._v(" - transaction hash;")]),t._v(" "),e("li",[e("code",[t._v("$contract")]),t._v(" - the current contract structure array.")])]),t._v(" "),e("p",[t._v("Predefined variables can be accessed not only in contracts, but also in permission fields that defines the access permission conditions of the application elements. When used in permission fields, predefined variables for block information are always equal to zero, such as "),e("code",[t._v("$time")]),t._v(", "),e("code",[t._v("$block")]),t._v(", etc.")]),t._v(" "),e("p",[t._v("A predefined variable "),e("code",[t._v("$result")]),t._v(" is assigned with the return result of the contract.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('contract my {\n data {\n Name string\n Amount money\n }\n func conditions {\n if $Amount <= 0 {\n error "Amount cannot be 0"\n }\n $ownerId = 1232\n }\n func action {\n var amount money\n amount = $Amount - 10\n DBUpdate("mytable", $ownerId, {name: $Name,amount: amount})\n DBUpdate("mytable2", $ownerId, {amount: 10})\n }\n}\n')])])]),e("h2",{attrs:{id:"nested-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#nested-contracts"}},[t._v("#")]),t._v(" Nested Contracts")]),t._v(" "),e("p",[t._v("You can nest contracts in the conditions and action sections of the contract. Nested contracts can be called directly, and the contract parameters are specified in parentheses after the contract name, for example, "),e("code",[t._v("@1NameContract(Params)")]),t._v(". You may also call nested contracts with the "),e("a",{attrs:{href:"#callcontract"}},[t._v("CallContract")]),t._v(" function.")]),t._v(" "),e("h2",{attrs:{id:"file-upload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-upload"}},[t._v("#")]),t._v(" File upload")]),t._v(" "),e("p",[t._v("To upload a file using a form in the format of "),e("code",[t._v("multipart/form-data")]),t._v(", the data type of the contract must be "),e("code",[t._v("file")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("contract Upload {\n data {\n \t File file\n }\n ...\n}\n")])])]),e("p",[t._v("The "),e("a",{attrs:{href:"#uploadbinary"}},[t._v("UploadBinary")]),t._v(" contract is used to upload and store files. With the Logicor language function "),e("RouterLink",{attrs:{to:"/ja/topics/templates2.html#binary"}},[t._v("Binary")]),t._v(" in the page editor, you can get the file download link.")],1),t._v(" "),e("h2",{attrs:{id:"queries-in-json-format"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-in-json-format"}},[t._v("#")]),t._v(" Queries in JSON format")]),t._v(" "),e("p",[t._v("In the contract language, "),e("strong",[t._v("JSON")]),t._v(" can be specified as a field type. You can use the syntax: "),e("strong",[t._v("columnname->fieldname")]),t._v(" to process the entry field. The value obtained is recorded in "),e("strong",[t._v("columnname.fieldname")]),t._v(". The above syntax can be used in Columns,One,Where of the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret map\nvar val str\nvar list array\nret = DBFind("mytable").Columns("myname,doc,doc->ind").WhereId($Id).Row()\nval = ret["doc.ind"]\nval = DBFind("mytable").Columns("myname,doc->type").WhereId($Id).One("doc->type")\nlist = DBFind("mytable").Columns("myname,doc,doc->ind").Where("doc->ind = ?", "101")\nval = DBFind("mytable").WhereId($Id).One("doc->check")\n')])])]),e("h2",{attrs:{id:"queries-with-date-and-time-operations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-with-date-and-time-operations"}},[t._v("#")]),t._v(" Queries with date and time operations")]),t._v(" "),e("p",[t._v("You cannot directly query and update the date and time with the contract language functions, but you can use PostgreSQL functions and features in the Where statement as in the example below. For example, you need to compare the field date_column with the current time. If date_column is a timestamp type, the expression should be "),e("code",[t._v("date_column NOW()")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Where("to_timestamp(date_column)> NOW()")\nWhere("date_column , >=, <=, ==, !=, ||, &&")])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if val> 10 || id != $block_key_id {\n ...\n} else {\n ...\n}\n")])])]),e("p",[t._v("The code block is executed when the conditional statement of the "),e("strong",[t._v("while")]),t._v(" loop is true. "),e("strong",[t._v("break")]),t._v(" means to terminate the loop of the code block. If you want to start a loop from the beginning, use "),e("strong",[t._v("continue")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var i int\nwhile true {\n if i > 100 {\n break\n }\n ...\n if i == 50 {\n continue\n }\n ...\n i = i + 1\n}\n")])])]),e("p",[t._v("In addition to conditional statements, Needle also supports standard arithmetic operations: "),e("code",[t._v("+")]),t._v(", "),e("code",[t._v("-")]),t._v(", "),e("code",[t._v("*")]),t._v(", "),e("code",[t._v("/")]),t._v(".")]),t._v(" "),e("p",[t._v("Variables of string and bytes types can be used as a conditional statement. If the length of the type is greater than zero, the condition is true, otherwise it is false.")]),t._v(" "),e("h2",{attrs:{id:"functions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#functions"}},[t._v("#")]),t._v(" Functions")]),t._v(" "),e("p",[t._v("Functions can perform some operations on the data received by the "),e("a",{attrs:{href:"#data-section"}},[t._v("data section")]),t._v(" of a contract: read and write data from the database, convert the type of value, and establish the interaction between contracts.")]),t._v(" "),e("h3",{attrs:{id:"function-declaration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#function-declaration"}},[t._v("#")]),t._v(" Function declaration")]),t._v(" "),e("p",[t._v("Use the func keyword to declare a function, followed by the name and the list of parameters passed to it and their types. All parameters are enclosed in parentheses and separated by commas. After the parentheses, the data type of the value returned by the function must be declared. The function body must be enclosed in braces. If the function has no parameters, the braces can be omitted. To return a value from a function, use the "),e("code",[t._v("return")]),t._v(" keyword.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func myfunc(left int, right int) int {\n return left*right + left - right\n}\nfunc test int {\n return myfunc(10, 30) + myfunc(20, 50)\n}\nfunc ooops {\n error "Ooops..."\n}\n')])])]),e("p",[t._v("Function do not return errors, because all error checks are performed automatically. If there is an error in any function, the contract will terminate its operation and present the error description in a window.")]),t._v(" "),e("h3",{attrs:{id:"variable-length-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variable-length-parameters"}},[t._v("#")]),t._v(" Variable-length parameters")]),t._v(" "),e("p",[t._v("Functions can define variable-length parameters, use the "),e("code",[t._v("...")]),t._v(" symbol as the last parameter type of the function to indicate variable-length parameters, with a data type of "),e("code",[t._v("array")]),t._v(". Variable-length parameters include all variables from the time the parameter is passed in the call. All types of variables can be passed, but you need to deal with conflicts of mismatching of data types.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func sum(out string, values ...) {\nvar i, res int\n\nwhile i 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"field": {"$gte": 12}}')]),t._v("\nEquivalent to "),e("code",[t._v("field >= 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$and": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 AND expr2 AND expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$or": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 OR expr2 OR expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$like": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value%'")]),t._v(" (fuzzy search).")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$begin": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'value%'")]),t._v(" (starts with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$end": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value'")]),t._v(" (ends with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: "$isnull"}')]),t._v("\nEquivalent to field is null.")])])])])]),t._v(" "),e("p",[t._v("Make sure not to overwrite the keys of object arrays. For example, if you want to query with "),e("code",[t._v("id>2 and id<5")]),t._v(", you cannot use "),e("code",[t._v('{id:{"$gt": 2}, id:{"$lt": 5}}')]),t._v(", because the first element will be overwritten by the second element. You should use the following query structure:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{id: [{"$gt": 2}, {"$lt": 5}]}\n')])])]),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"$and": [{id:{"$gt": 2}}, {id:{"$lt": 5}}]}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Queries by ID. For example, .WhereId(1).")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Order")])]),t._v(" "),e("p",[t._v("Used to sort the result set by a specified column, or by id by default.")]),t._v(" "),e("p",[t._v("If you use only one field for sorting, you can specify it as a string. To sort multiple fields, you need to specify an array of string objects:")]),t._v(" "),e("p",[t._v("Descending order: "),e("code",[t._v('{"field": "-1"}')]),t._v(" Equivalent to "),e("code",[t._v("field desc")]),t._v(".")]),t._v(" "),e("p",[t._v("Ascending order: "),e("code",[t._v('{"field": "1"}')]),t._v(" Equivalent to "),e("code",[t._v("field asc")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")])]),t._v(" "),e("p",[t._v("Returns the number of entries. 25, by default. The maximum number is 10,000.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Offset")])]),t._v(" "),e("p",[t._v("Offset.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Ecosystemid")])]),t._v(" "),e("p",[t._v("Ecosystem ID. By default, the table of the current ecosystem is queried.")])])]),t._v(" "),e("h4",{attrs:{id:"example-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var i int\nvar ret string\nret = DBFind("contracts").Columns("id,value").Where({id: [{"$gt": 2}, {"$lt": 5}]}).Order( "id")\nwhile i 0 {\n item = list[0]\n}\n')])])]),e("h3",{attrs:{id:"gethistoryrow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gethistoryrow"}},[t._v("#")]),t._v(" GetHistoryRow")]),t._v(" "),e("p",[t._v("Returns a single snapshot from the change history of a specified entry in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetHistoryRow(table string, id int, rollbackId int) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("rollbackId")])]),t._v(" "),e("p",[t._v("rollback_tx The entry ID of the table.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' $result = GetHistoryRow("contracts",205,2358)\n')])])]),e("h3",{attrs:{id:"getcolumntype"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[t._v("#")]),t._v(" GetColumnType")]),t._v(" "),e("p",[t._v("Returns the data type of a specified field in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetColumnType(table, column string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The following types can be returned: "),e("code",[t._v("text, varchar, number, money, double, bytes, json, datetime, double")]),t._v(".")]),t._v(" "),e("h4",{attrs:{id:"example-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var coltype string\ncoltype = GetColumnType("members", "member_name")\n')])])]),e("h3",{attrs:{id:"getdatafromxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getdatafromxlsx"}},[t._v("#")]),t._v(" GetDataFromXLSX")]),t._v(" "),e("p",[t._v("Returns data from XLSX spreadsheets.")]),t._v(" "),e("h4",{attrs:{id:"syntax-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetDataFromXLSX(binId int, line int, count int, sheet int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("line")])]),t._v(" "),e("p",[t._v("The starting line number, starting from 0 by default.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("count")])]),t._v(" "),e("p",[t._v("The number of rows that need to be returned.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var a array\na = GetDataFromXLSX(3, 12, 10, 1)\n")])])]),e("h3",{attrs:{id:"getrowscountxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getrowscountxlsx"}},[t._v("#")]),t._v(" GetRowsCountXLSX")]),t._v(" "),e("p",[t._v("Returns the number of lines in a specified XLSX file.")]),t._v(" "),e("h4",{attrs:{id:"syntax-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetRowsCountXLSX(binId int, sheet int) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var count int\ncount = GetRowsCountXLSX(binid, 1)\n")])])]),e("h3",{attrs:{id:"langres"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[t._v("#")]),t._v(" LangRes")]),t._v(" "),e("p",[t._v("Returns a multilingual resource with name label for language lang, specified as a two-character code, for example: "),e("code",[t._v("en")]),t._v(", "),e("code",[t._v("zh")]),t._v(". If there is no language for a selected language, then the language resource of the "),e("code",[t._v("en")]),t._v(" label is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("LangRes(label string, lang string) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("label")])]),t._v(" "),e("p",[t._v("Language resource name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("lang")])]),t._v(" "),e("p",[t._v("Two-character language code.")])])]),t._v(" "),e("h4",{attrs:{id:"example-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('warning LangRes("@1confirm", "en")\nerror LangRes("@1problems", "zh")\n')])])]),e("h3",{attrs:{id:"getblock"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getblock"}},[t._v("#")]),t._v(" GetBlock")]),t._v(" "),e("p",[t._v("Returns relevant information about a specified block.")]),t._v(" "),e("h4",{attrs:{id:"syntax-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetBlock(blockID int64) map\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("blockID")])]),t._v(" "),e("p",[t._v("Block ID.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("Return an array of objects:")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("id")])]),t._v(" "),e("p",[t._v("Block ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("time")])]),t._v(" "),e("p",[t._v("Block generation timestamp.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")])]),t._v(" "),e("p",[t._v("The account address of the verification node generated the block.")])])]),t._v(" "),e("h4",{attrs:{id:"example-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var b map\nb = GetBlock(1)\nPrintln(b)\n")])])]),e("h3",{attrs:{id:"dbinsert"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbinsert"}},[t._v("#")]),t._v(" DBInsert")]),t._v(" "),e("p",[t._v("Adds an entry to a specified table and return the entry ID.")]),t._v(" "),e("h4",{attrs:{id:"syntax-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBInsert(table string, params map) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are inserted values.")])])]),t._v(" "),e("h4",{attrs:{id:"example-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBInsert("mytable", {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdate"}},[t._v("#")]),t._v(" DBUpdate")]),t._v(" "),e("p",[t._v("Changes the column value of a specified entry ID in a specified table. If the entry ID does not exist in the table, an error is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdate(tblname string, id int, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdate("mytable", myid, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdateext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdateext"}},[t._v("#")]),t._v(" DBUpdateExt")]),t._v(" "),e("p",[t._v("Changes the value of a column in a specified table that matches the query condition.")]),t._v(" "),e("h4",{attrs:{id:"syntax-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdateExt(tblname string, where map, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("where")])]),t._v(" "),e("p",[t._v("Query conditions.")]),t._v(" "),e("p",[t._v("For more details, see "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdateExt("mytable", {id: $key_id, ecosystem: $ecosystem_id}, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"delcolumn"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delcolumn"}},[t._v("#")]),t._v(" DelColumn")]),t._v(" "),e("p",[t._v("Deletes a field in a specified table that has no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelColumn(tblname string, column string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("The field to be deleted.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelColumn("mytable", "mycolumn")\n')])])]),e("h3",{attrs:{id:"deltable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deltable"}},[t._v("#")]),t._v(" DelTable")]),t._v(" "),e("p",[t._v("Deletes a specified table that has e no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelTable(tblname string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelTable("mytable")\n')])])]),e("h3",{attrs:{id:"append"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#append"}},[t._v("#")]),t._v(" Append")]),t._v(" "),e("p",[t._v("Inserts any type of val into the src array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("p",[t._v("Append(src array, val anyType) array")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("src")])]),t._v(" "),e("p",[t._v("The original array.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("The value to be inserted.")])])]),t._v(" "),e("h4",{attrs:{id:"example-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var list array\nlist = Append(list, "new_val")\n')])])]),e("h3",{attrs:{id:"join"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#join"}},[t._v("#")]),t._v(" Join")]),t._v(" "),e("p",[t._v("Combines elements of the in array into a string with a specified sep separator.")]),t._v(" "),e("h4",{attrs:{id:"syntax-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Join(in array, sep string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("Array name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var val string, myarr array\n myarr[0] = "first"\n myarr[1] = 10\n val = Join(myarr, ",")\n')])])]),e("h3",{attrs:{id:"split"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#split"}},[t._v("#")]),t._v(" Split")]),t._v(" "),e("p",[t._v("Uses the sep separator to split the in string into elements and put them into an array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Split(in string, sep string) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("String.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var myarr array\nmyarr = Split("first,second,third", ",")\n')])])]),e("h3",{attrs:{id:"len"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#len"}},[t._v("#")]),t._v(" Len")]),t._v(" "),e("p",[t._v("Returns the number of elements in a specified array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Len(val array) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if Len(mylist) == 0 {\n ...\n}\n")])])]),e("h3",{attrs:{id:"row"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#row"}},[t._v("#")]),t._v(" Row")]),t._v(" "),e("p",[t._v("The list parameter must not be specified in this case. Return the first object array in the array list. If the list is empty, an empty result is returned. This function is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" Row(list array) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("list")])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")])])]),t._v(" "),e("h4",{attrs:{id:"example-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var ret map\n ret = DBFind("contracts").Columns("id,value").WhereId(10).Row()\n Println(ret)\n')])])]),e("h3",{attrs:{id:"one"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#one"}},[t._v("#")]),t._v(" One")]),t._v(" "),e("p",[t._v("Returns the field value of the first object array in the array list. If the list array is empty, nil is returned. It is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("One(list array, column string) string\n")])])]),e("ul",[e("li",[e("strong",[t._v("list")])])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret string\nret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")\nif ret != nil {\n Println(ret)\n}\n')])])]),e("h3",{attrs:{id:"getmapkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getmapkeys"}},[t._v("#")]),t._v(" GetMapKeys")]),t._v(" "),e("p",[t._v("Returns the key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetMapKeys(val map) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k1"] = "v1"\nval["k2"] = "v2"\narr = GetMapKeys(val)\n')])])]),e("h3",{attrs:{id:"sortedkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sortedkeys"}},[t._v("#")]),t._v(" SortedKeys")]),t._v(" "),e("p",[t._v("Returns a sorted key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("SortedKeys(val map) array\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k2"] = "v2"\nval["k1"] = "v1"\narr = SortedKeys(val)\n')])])]),e("h3",{attrs:{id:"callcontract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#callcontract"}},[t._v("#")]),t._v(" CallContract")]),t._v(" "),e("p",[t._v("Calls the contract with a specified name. All parameters of the data section in the contract must be included in an object array. This function returns the value assigned to the "),e("strong",[t._v("$result")]),t._v(" variable by a specified contract.")]),t._v(" "),e("h4",{attrs:{id:"syntax-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("CallContract(name string, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The name of the contract being called.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An associative array of the contract input data.")])])]),t._v(" "),e("h4",{attrs:{id:"example-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var par map\npar["Name"] = "My Name"\nCallContract("MyContract", par)\n')])])]),e("h3",{attrs:{id:"contractaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractaccess"}},[t._v("#")]),t._v(" ContractAccess")]),t._v(" "),e("p",[t._v("Checks if the name of contract being executed matches one of the names listed in the parameters. Usually it is used to control contract access to tables. When editing table fields or inserting and adding new column fields in the permissions section of the table, please specify this function in the permissions fields.")]),t._v(" "),e("h4",{attrs:{id:"syntax-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractAccess(name string, [name string]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractAccess("MyContract")\nContractAccess("MyContract","SimpleContract")\n')])])]),e("h3",{attrs:{id:"contractconditions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractconditions"}},[t._v("#")]),t._v(" ContractConditions")]),t._v(" "),e("p",[t._v("Calls the conditions section in the contract with a specified name.")]),t._v(" "),e("p",[t._v("For this type of contracts, the data section must be empty. If the conditions section is executed without error, it returns true. If there is an error during execution, the parent contract will also be terminated due to the error. This function is usually used to control the contract's access to tables and can be called in the permission fields when editing system tables.")]),t._v(" "),e("h4",{attrs:{id:"syntax-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractConditions(name string, [name string]) bool\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractConditions("MainCondition")\n')])])]),e("h3",{attrs:{id:"evalcondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#evalcondition"}},[t._v("#")]),t._v(" EvalCondition")]),t._v(" "),e("p",[t._v("Gets the value of the condfield field in the record with a 'name' field from the tablename table, and checks the conditions of the condfield field value.")]),t._v(" "),e("h4",{attrs:{id:"syntax-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(tablename string, name string, condfield string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tablename")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Queries the value with the 'name' field.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("condfield")])]),t._v(" "),e("p",[t._v("The name of the field whose conditions needs to be checked.")])])]),t._v(" "),e("h4",{attrs:{id:"example-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(`menu`, $Name, `conditions`)\n")])])]),e("h3",{attrs:{id:"getcontractbyid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyid"}},[t._v("#")]),t._v(" GetContractById")]),t._v(" "),e("p",[t._v("Returns its contract name by contract ID. If not found the contract, an empty string is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractById(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("The contract ID in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var name string\nname = GetContractById($IdContract)\n")])])]),e("h3",{attrs:{id:"getcontractbyname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyname"}},[t._v("#")]),t._v(" GetContractByName")]),t._v(" "),e("p",[t._v("This function returns its contract ID by contract name. If not found the contract, zero is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractByName(name string) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The contract name in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var id int\nid = GetContractByName(`NewBlock`)\n")])])]),e("h3",{attrs:{id:"roleaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#roleaccess"}},[t._v("#")]),t._v(" RoleAccess")]),t._v(" "),e("p",[t._v("Checks whether the role ID of the contract caller matches one of the IDs specified in the parameter.")]),t._v(" "),e("p",[t._v("You can use this function to control contract access to tables and other data.")]),t._v(" "),e("h4",{attrs:{id:"syntax-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(id int, [id int]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Role ID.")])])]),t._v(" "),e("h4",{attrs:{id:"example-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(1)\nRoleAccess(1, 3)\n")])])]),e("h3",{attrs:{id:"transactioninfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#transactioninfo"}},[t._v("#")]),t._v(" TransactionInfo")]),t._v(" "),e("p",[t._v("Queries transactions by specified hash value and returns information about the contract executed and its parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("TransactionInfo(hash: string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hash")])]),t._v(" "),e("p",[t._v("Transaction hash in hexadecimal string format.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("This function returns a string in JSON format:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("contract")])]),t._v(" "),e("p",[t._v("Contract name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("Data passed to contract parameters.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("block")])]),t._v(" "),e("p",[t._v("ID of the block that processed the transaction.")])])]),t._v(" "),e("h4",{attrs:{id:"example-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var out map\nout = JSONDecode(TransactionInfo(hash))\n")])])]),e("h3",{attrs:{id:"throw"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#throw"}},[t._v("#")]),t._v(" Throw")]),t._v(" "),e("p",[t._v("Generates an error of type exception.")]),t._v(" "),e("h4",{attrs:{id:"syntax-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Throw(ErrorId string, ErrDescription string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("ErrorId")])]),t._v(" "),e("p",[t._v("Error identifier.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ErrDescription")])]),t._v(" "),e("p",[t._v("Error description.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The format of this type of transaction results:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"type":"exception","error":"Error description","id":"Error ID"}\n')])])]),e("h4",{attrs:{id:"example-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Throw("Problem", "There is a problem")\n')])])]),e("h3",{attrs:{id:"validatecondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#validatecondition"}},[t._v("#")]),t._v(" ValidateCondition")]),t._v(" "),e("p",[t._v("Tries to compile the conditions specified by the condition parameter. If there is an error during the compilation process, an error is generated and the contract called is terminated. This function is designed to check the correctness of the conditional format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ValidateCondition(condition string, state int)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("condition")])]),t._v(" "),e("p",[t._v("The conditional format that needs to be verified.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("state")])]),t._v(" "),e("p",[t._v("Ecosystem ID. If you check the global condition, please specify it as 0.")])])]),t._v(" "),e("h4",{attrs:{id:"example-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ValidateCondition(`ContractAccess("@1MyContract")`, 1)\n')])])]),e("h3",{attrs:{id:"addresstoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[t._v("#")]),t._v(" AddressToId")]),t._v(" "),e("p",[t._v("Returns the corresponding account address by wallet address. If an invalid address is specified, '0' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("AddressToId(address string) int\n\n")])])]),e("ul",[e("li",[e("p",[t._v("Address")]),t._v(" "),e("p",[t._v("Wallet address in "),e("code",[t._v("XXXX-...-XXXX")]),t._v(" format or number format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("wallet = AddressToId($Recipient)\n")])])]),e("h3",{attrs:{id:"idtoaddress"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#idtoaddress"}},[t._v("#")]),t._v(" IdToAddress")]),t._v(" "),e("p",[t._v("Returns the corresponding wallet address by account address. If an invalid address is specified, the invalid address 'invalid' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("IdToAddress(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Account address.")])])]),t._v(" "),e("h4",{attrs:{id:"example-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("$address = IdToAddress($id)\n")])])]),e("h3",{attrs:{id:"pubtoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pubtoid"}},[t._v("#")]),t._v(" PubToID")]),t._v(" "),e("p",[t._v("The account address is returned by public key in hexadecimal format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("PubToID(hexkey string) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexkey")])]),t._v(" "),e("p",[t._v("The public key in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var wallet int\nwallet = PubToID("04fa5e78.....34abd6")\n')])])]),e("h3",{attrs:{id:"decodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#decodebase64"}},[t._v("#")]),t._v(" DecodeBase64")]),t._v(" "),e("p",[t._v("Returns a string by specifying the base64 format")]),t._v(" "),e("h4",{attrs:{id:"syntax-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DecodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("String in base64 format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("val = DecodeBase64(mybase64)\n")])])]),e("h3",{attrs:{id:"encodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#encodebase64"}},[t._v("#")]),t._v(" EncodeBase64")]),t._v(" "),e("p",[t._v("Returns a string in base64 format by specifying a string.")]),t._v(" "),e("h4",{attrs:{id:"syntax-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EncodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("The string to be encoded.")])])]),t._v(" "),e("h4",{attrs:{id:"example-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var base64str string\nbase64str = EncodeBase64("my text")\n')])])]),e("h3",{attrs:{id:"float"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#float"}},[t._v("#")]),t._v(" Float")]),t._v(" "),e("p",[t._v("Converts an integer or string to a float number.")]),t._v(" "),e("h4",{attrs:{id:"syntax-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Float(val int|string) float\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("An integer or string.")])])]),t._v(" "),e("h4",{attrs:{id:"example-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('val = Float("567.989") + Float(232)\n')])])]),e("h3",{attrs:{id:"hextobytes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hextobytes"}},[t._v("#")]),t._v(" HexToBytes")]),t._v(" "),e("p",[t._v("Converts a string in hexadecimal format to byte type bytes.")]),t._v(" "),e("h4",{attrs:{id:"syntax-42"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" HexToBytes(hexdata string) bytes\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexdata")])]),t._v(" "),e("p",[t._v("A string in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val bytes\nval = HexToBytes("34fe4501a4d80094")\n')])])]),e("h3",{attrs:{id:"formatmoney"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#formatmoney"}},[t._v("#")]),t._v(" FormatMoney")]),t._v(" "),e("p",[t._v("Returns the string value of exp / 10 ^ digit.")]),t._v(" "),e("h4",{attrs:{id:"syntax-43"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("FormatMoney(exp string, digit int) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Exp")])]),t._v(" "),e("p",[t._v("A number in string format.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("digit")])]),t._v(" "),e("p",[t._v("The exponent (positive or negative) of 10 in the expression "),e("code",[t._v("Exp/10^digit")]),t._v(". Positive values determine decimal places.")])])]),t._v(" "),e("h4",{attrs:{id:"example-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' s = FormatMoney("78236475917384", 0)\n')])])]),e("h3",{attrs:{id:"random"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#random"}},[t._v("#")]),t._v(" Random")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Returns a random number between min and max (min <= result 0 {\n info "You have already been registered"\n}\n')])])]),e("h3",{attrs:{id:"action-section"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#action-section"}},[t._v("#")]),t._v(" Action section")]),t._v(" "),e("p",[t._v("The "),e("code",[t._v("action")]),t._v(" section describes the main code of the contract, which retrieves other data and records the result values in tables. For example:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('action {\nDBUpdate("keys", $key_id, {"-amount": $amount})\nDBUpdate("keys", $recipient, {"+amount": $amount, "pub": $Pub})\n}\n')])])]),e("h2",{attrs:{id:"variables"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variables"}},[t._v("#")]),t._v(" Variables")]),t._v(" "),e("p",[t._v("Variables declared in the data section are passed to other contract sections through the "),e("code",[t._v("$")]),t._v(" symbol followed by the variable name. The "),e("code",[t._v("$")]),t._v(" symbol can also be used to declare other variables that are not within the data section, which are considered as global variables of this contract and all contracts that this contract is nested.")]),t._v(" "),e("p",[t._v("Pre-defined variables can be used in contracts, which contain transaction data that called the contract:")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("$time")]),t._v(" - transaction timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$ecosystem_id")]),t._v(" - ecosystem ID;")]),t._v(" "),e("li",[e("code",[t._v("$block")]),t._v(" - ID of the block containing the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$key_id")]),t._v(" - address of the account that signed the current transaction;")]),t._v(" "),e("li",[e("code",[t._v("$type")]),t._v(" - contract ID in the virtual machine;")]),t._v(" "),e("li",[e("code",[t._v("$block_key_id")]),t._v(" - account address of the node generated the block;")]),t._v(" "),e("li",[e("code",[t._v("$block_time")]),t._v(" - block generation timestamp;")]),t._v(" "),e("li",[e("code",[t._v("$original_contract")]),t._v(" - name of the contract that initially processed the transaction. It means the contract is called during transaction validation if the variable is an empty string. To check whether the contract is called by another contract or directly by the transaction, you need to compare the values of $original_contract and $this_contract. It means that the contract is called by the transaction if they are equal;")]),t._v(" "),e("li",[e("code",[t._v("$this_contract")]),t._v(" - name of the contract currently being executed;")]),t._v(" "),e("li",[e("code",[t._v("$guest_key")]),t._v(" - guest account address;")]),t._v(" "),e("li",[e("code",[t._v("$stack")]),t._v(" - contract array stack with a data type of array, containing all contracts executed. The first element of the array represents the name of the contract currently being executed, while the last element represents the name of the contract that initially processed the transaction;")]),t._v(" "),e("li",[e("code",[t._v("$node_position")]),t._v(" - the index number of the verification node array where the block is located;")]),t._v(" "),e("li",[e("code",[t._v("$txhash")]),t._v(" - transaction hash;")]),t._v(" "),e("li",[e("code",[t._v("$contract")]),t._v(" - the current contract structure array.")])]),t._v(" "),e("p",[t._v("Predefined variables can be accessed not only in contracts, but also in permission fields that defines the access permission conditions of the application elements. When used in permission fields, predefined variables for block information are always equal to zero, such as "),e("code",[t._v("$time")]),t._v(", "),e("code",[t._v("$block")]),t._v(", etc.")]),t._v(" "),e("p",[t._v("A predefined variable "),e("code",[t._v("$result")]),t._v(" is assigned with the return result of the contract.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('contract my {\n data {\n Name string\n Amount money\n }\n func conditions {\n if $Amount <= 0 {\n error "Amount cannot be 0"\n }\n $ownerId = 1232\n }\n func action {\n var amount money\n amount = $Amount - 10\n DBUpdate("mytable", $ownerId, {name: $Name,amount: amount})\n DBUpdate("mytable2", $ownerId, {amount: 10})\n }\n}\n')])])]),e("h2",{attrs:{id:"nested-contracts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#nested-contracts"}},[t._v("#")]),t._v(" Nested Contracts")]),t._v(" "),e("p",[t._v("You can nest contracts in the conditions and action sections of the contract. Nested contracts can be called directly, and the contract parameters are specified in parentheses after the contract name, for example, "),e("code",[t._v("@1NameContract(Params)")]),t._v(". You may also call nested contracts with the "),e("a",{attrs:{href:"#callcontract"}},[t._v("CallContract")]),t._v(" function.")]),t._v(" "),e("h2",{attrs:{id:"file-upload"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#file-upload"}},[t._v("#")]),t._v(" File upload")]),t._v(" "),e("p",[t._v("To upload a file using a form in the format of "),e("code",[t._v("multipart/form-data")]),t._v(", the data type of the contract must be "),e("code",[t._v("file")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("contract Upload {\n data {\n \t File file\n }\n ...\n}\n")])])]),e("p",[t._v("The "),e("a",{attrs:{href:"#uploadbinary"}},[t._v("UploadBinary")]),t._v(" contract is used to upload and store files. With the Logicor language function "),e("RouterLink",{attrs:{to:"/ja/topics/templates2.html#binary"}},[t._v("Binary")]),t._v(" in the page editor, you can get the file download link.")],1),t._v(" "),e("h2",{attrs:{id:"queries-in-json-format"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-in-json-format"}},[t._v("#")]),t._v(" Queries in JSON format")]),t._v(" "),e("p",[t._v("In the contract language, "),e("strong",[t._v("JSON")]),t._v(" can be specified as a field type. You can use the syntax: "),e("strong",[t._v("columnname->fieldname")]),t._v(" to process the entry field. The value obtained is recorded in "),e("strong",[t._v("columnname.fieldname")]),t._v(". The above syntax can be used in Columns,One,Where of the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret map\nvar val str\nvar list array\nret = DBFind("mytable").Columns("myname,doc,doc->ind").WhereId($Id).Row()\nval = ret["doc.ind"]\nval = DBFind("mytable").Columns("myname,doc->type").WhereId($Id).One("doc->type")\nlist = DBFind("mytable").Columns("myname,doc,doc->ind").Where("doc->ind = ?", "101")\nval = DBFind("mytable").WhereId($Id).One("doc->check")\n')])])]),e("h2",{attrs:{id:"queries-with-date-and-time-operations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#queries-with-date-and-time-operations"}},[t._v("#")]),t._v(" Queries with date and time operations")]),t._v(" "),e("p",[t._v("You cannot directly query and update the date and time with the contract language functions, but you can use PostgreSQL functions and features in the Where statement as in the example below. For example, you need to compare the field date_column with the current time. If date_column is a timestamp type, the expression should be "),e("code",[t._v("date_column NOW()")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Where("to_timestamp(date_column)> NOW()")\nWhere("date_column , >=, <=, ==, !=, ||, &&")])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if val> 10 || id != $block_key_id {\n ...\n} else {\n ...\n}\n")])])]),e("p",[t._v("The code block is executed when the conditional statement of the "),e("strong",[t._v("while")]),t._v(" loop is true. "),e("strong",[t._v("break")]),t._v(" means to terminate the loop of the code block. If you want to start a loop from the beginning, use "),e("strong",[t._v("continue")]),t._v(".")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var i int\nwhile true {\n if i > 100 {\n break\n }\n ...\n if i == 50 {\n continue\n }\n ...\n i = i + 1\n}\n")])])]),e("p",[t._v("In addition to conditional statements, Needle also supports standard arithmetic operations: "),e("code",[t._v("+")]),t._v(", "),e("code",[t._v("-")]),t._v(", "),e("code",[t._v("*")]),t._v(", "),e("code",[t._v("/")]),t._v(".")]),t._v(" "),e("p",[t._v("Variables of string and bytes types can be used as a conditional statement. If the length of the type is greater than zero, the condition is true, otherwise it is false.")]),t._v(" "),e("h2",{attrs:{id:"functions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#functions"}},[t._v("#")]),t._v(" Functions")]),t._v(" "),e("p",[t._v("Functions can perform some operations on the data received by the "),e("a",{attrs:{href:"#data-section"}},[t._v("data section")]),t._v(" of a contract: read and write data from the database, convert the type of value, and establish the interaction between contracts.")]),t._v(" "),e("h3",{attrs:{id:"function-declaration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#function-declaration"}},[t._v("#")]),t._v(" Function declaration")]),t._v(" "),e("p",[t._v("Use the func keyword to declare a function, followed by the name and the list of parameters passed to it and their types. All parameters are enclosed in parentheses and separated by commas. After the parentheses, the data type of the value returned by the function must be declared. The function body must be enclosed in braces. If the function has no parameters, the braces can be omitted. To return a value from a function, use the "),e("code",[t._v("return")]),t._v(" keyword.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func myfunc(left int, right int) int {\n return left*right + left - right\n}\nfunc test int {\n return myfunc(10, 30) + myfunc(20, 50)\n}\nfunc ooops {\n error "Ooops..."\n}\n')])])]),e("p",[t._v("Function do not return errors, because all error checks are performed automatically. If there is an error in any function, the contract will terminate its operation and present the error description in a window.")]),t._v(" "),e("h3",{attrs:{id:"variable-length-parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#variable-length-parameters"}},[t._v("#")]),t._v(" Variable-length parameters")]),t._v(" "),e("p",[t._v("Functions can define variable-length parameters, use the "),e("code",[t._v("...")]),t._v(" symbol as the last parameter type of the function to indicate variable-length parameters, with a data type of "),e("code",[t._v("array")]),t._v(". Variable-length parameters include all variables from the time the parameter is passed in the call. All types of variables can be passed, but you need to deal with conflicts of mismatching of data types.")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('func sum(out string, values ...) {\nvar i, res int\n\nwhile i 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"field": {"$gte": 12}}')]),t._v("\nEquivalent to "),e("code",[t._v("field >= 12")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$and": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 AND expr2 AND expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{"$or": [, , ]}')]),t._v("\nEquivalent to "),e("code",[t._v("expr1 OR expr2 OR expr3")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$like": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value%'")]),t._v(" (fuzzy search).")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$begin": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'value%'")]),t._v(" (starts with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: {"$end": "value"}}')]),t._v("\nEquivalent to "),e("code",[t._v("field like'%value'")]),t._v(" (ends with "),e("code",[t._v("value")]),t._v(").")])]),t._v(" "),e("li",[e("p",[e("code",[t._v('{field: "$isnull"}')]),t._v("\nEquivalent to field is null.")])])])])]),t._v(" "),e("p",[t._v("Make sure not to overwrite the keys of object arrays. For example, if you want to query with "),e("code",[t._v("id>2 and id<5")]),t._v(", you cannot use "),e("code",[t._v('{id:{"$gt": 2}, id:{"$lt": 5}}')]),t._v(", because the first element will be overwritten by the second element. You should use the following query structure:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{id: [{"$gt": 2}, {"$lt": 5}]}\n')])])]),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"$and": [{id:{"$gt": 2}}, {id:{"$lt": 5}}]}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Queries by ID. For example, .WhereId(1).")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Order")])]),t._v(" "),e("p",[t._v("Used to sort the result set by a specified column, or by id by default.")]),t._v(" "),e("p",[t._v("If you use only one field for sorting, you can specify it as a string. To sort multiple fields, you need to specify an array of string objects:")]),t._v(" "),e("p",[t._v("Descending order: "),e("code",[t._v('{"field": "-1"}')]),t._v(" Equivalent to "),e("code",[t._v("field desc")]),t._v(".")]),t._v(" "),e("p",[t._v("Ascending order: "),e("code",[t._v('{"field": "1"}')]),t._v(" Equivalent to "),e("code",[t._v("field asc")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("limit")])]),t._v(" "),e("p",[t._v("Returns the number of entries. 25, by default. The maximum number is 10,000.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Offset")])]),t._v(" "),e("p",[t._v("Offset.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Ecosystemid")])]),t._v(" "),e("p",[t._v("Ecosystem ID. By default, the table of the current ecosystem is queried.")])])]),t._v(" "),e("h4",{attrs:{id:"example-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var i int\nvar ret string\nret = DBFind("contracts").Columns("id,value").Where({id: [{"$gt": 2}, {"$lt": 5}]}).Order( "id")\nwhile i 0 {\n item = list[0]\n}\n')])])]),e("h3",{attrs:{id:"gethistoryrow"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gethistoryrow"}},[t._v("#")]),t._v(" GetHistoryRow")]),t._v(" "),e("p",[t._v("Returns a single snapshot from the change history of a specified entry in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-7"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetHistoryRow(table string, id int, rollbackId int) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("rollbackId")])]),t._v(" "),e("p",[t._v("rollback_tx The entry ID of the table.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' $result = GetHistoryRow("contracts",205,2358)\n')])])]),e("h3",{attrs:{id:"getcolumntype"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcolumntype"}},[t._v("#")]),t._v(" GetColumnType")]),t._v(" "),e("p",[t._v("Returns the data type of a specified field in a specified table.")]),t._v(" "),e("h4",{attrs:{id:"syntax-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-8"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetColumnType(table, column string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("table")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The following types can be returned: "),e("code",[t._v("text, varchar, number, money, double, bytes, json, datetime, double")]),t._v(".")]),t._v(" "),e("h4",{attrs:{id:"example-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var coltype string\ncoltype = GetColumnType("members", "member_name")\n')])])]),e("h3",{attrs:{id:"getdatafromxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getdatafromxlsx"}},[t._v("#")]),t._v(" GetDataFromXLSX")]),t._v(" "),e("p",[t._v("Returns data from XLSX spreadsheets.")]),t._v(" "),e("h4",{attrs:{id:"syntax-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-9"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetDataFromXLSX(binId int, line int, count int, sheet int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("line")])]),t._v(" "),e("p",[t._v("The starting line number, starting from 0 by default.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("count")])]),t._v(" "),e("p",[t._v("The number of rows that need to be returned.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var a array\na = GetDataFromXLSX(3, 12, 10, 1)\n")])])]),e("h3",{attrs:{id:"getrowscountxlsx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getrowscountxlsx"}},[t._v("#")]),t._v(" GetRowsCountXLSX")]),t._v(" "),e("p",[t._v("Returns the number of lines in a specified XLSX file.")]),t._v(" "),e("h4",{attrs:{id:"syntax-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-10"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetRowsCountXLSX(binId int, sheet int) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("binId")])]),t._v(" "),e("p",[t._v("ID in XLSX format in the binary table binary.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sheet")])]),t._v(" "),e("p",[t._v("List number, starting from 1 by default.")])])]),t._v(" "),e("h4",{attrs:{id:"example-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var count int\ncount = GetRowsCountXLSX(binid, 1)\n")])])]),e("h3",{attrs:{id:"langres"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#langres"}},[t._v("#")]),t._v(" LangRes")]),t._v(" "),e("p",[t._v("Returns a multilingual resource with name label for language lang, specified as a two-character code, for example: "),e("code",[t._v("en")]),t._v(", "),e("code",[t._v("zh")]),t._v(". If there is no language for a selected language, then the language resource of the "),e("code",[t._v("en")]),t._v(" label is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-11"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("LangRes(label string, lang string) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("label")])]),t._v(" "),e("p",[t._v("Language resource name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("lang")])]),t._v(" "),e("p",[t._v("Two-character language code.")])])]),t._v(" "),e("h4",{attrs:{id:"example-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('warning LangRes("@1confirm", "en")\nerror LangRes("@1problems", "zh")\n')])])]),e("h3",{attrs:{id:"getblock"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getblock"}},[t._v("#")]),t._v(" GetBlock")]),t._v(" "),e("p",[t._v("Returns relevant information about a specified block.")]),t._v(" "),e("h4",{attrs:{id:"syntax-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-12"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetBlock(blockID int64) map\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("blockID")])]),t._v(" "),e("p",[t._v("Block ID.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("Return an array of objects:")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("id")])]),t._v(" "),e("p",[t._v("Block ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("time")])]),t._v(" "),e("p",[t._v("Block generation timestamp.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("key_id")])]),t._v(" "),e("p",[t._v("The account address of the verification node generated the block.")])])]),t._v(" "),e("h4",{attrs:{id:"example-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var b map\nb = GetBlock(1)\nPrintln(b)\n")])])]),e("h3",{attrs:{id:"dbinsert"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbinsert"}},[t._v("#")]),t._v(" DBInsert")]),t._v(" "),e("p",[t._v("Adds an entry to a specified table and return the entry ID.")]),t._v(" "),e("h4",{attrs:{id:"syntax-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-13"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBInsert(table string, params map) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are inserted values.")])])]),t._v(" "),e("h4",{attrs:{id:"example-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBInsert("mytable", {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdate"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdate"}},[t._v("#")]),t._v(" DBUpdate")]),t._v(" "),e("p",[t._v("Changes the column value of a specified entry ID in a specified table. If the entry ID does not exist in the table, an error is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-14"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdate(tblname string, id int, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Entry ID.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-13"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdate("mytable", myid, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"dbupdateext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#dbupdateext"}},[t._v("#")]),t._v(" DBUpdateExt")]),t._v(" "),e("p",[t._v("Changes the value of a column in a specified table that matches the query condition.")]),t._v(" "),e("h4",{attrs:{id:"syntax-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-15"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DBUpdateExt(tblname string, where map, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("where")])]),t._v(" "),e("p",[t._v("Query conditions.")]),t._v(" "),e("p",[t._v("For more details, see "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(".")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An array of objects where keys are field names and values are new values after changes.")])])]),t._v(" "),e("h4",{attrs:{id:"example-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-14"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DBUpdateExt("mytable", {id: $key_id, ecosystem: $ecosystem_id}, {name: "John Smith", amount: 100})\n')])])]),e("h3",{attrs:{id:"delcolumn"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#delcolumn"}},[t._v("#")]),t._v(" DelColumn")]),t._v(" "),e("p",[t._v("Deletes a field in a specified table that has no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-16"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelColumn(tblname string, column string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("The field to be deleted.")])])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelColumn("mytable", "mycolumn")\n')])])]),e("h3",{attrs:{id:"deltable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#deltable"}},[t._v("#")]),t._v(" DelTable")]),t._v(" "),e("p",[t._v("Deletes a specified table that has e no records.")]),t._v(" "),e("h4",{attrs:{id:"syntax-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-17"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DelTable(tblname string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tblname")])]),t._v(" "),e("p",[t._v("Table name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-15"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('DelTable("mytable")\n')])])]),e("h3",{attrs:{id:"append"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#append"}},[t._v("#")]),t._v(" Append")]),t._v(" "),e("p",[t._v("Inserts any type of val into the src array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-18"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("p",[t._v("Append(src array, val anyType) array")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("src")])]),t._v(" "),e("p",[t._v("The original array.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("The value to be inserted.")])])]),t._v(" "),e("h4",{attrs:{id:"example-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-16"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var list array\nlist = Append(list, "new_val")\n')])])]),e("h3",{attrs:{id:"join"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#join"}},[t._v("#")]),t._v(" Join")]),t._v(" "),e("p",[t._v("Combines elements of the in array into a string with a specified sep separator.")]),t._v(" "),e("h4",{attrs:{id:"syntax-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-19"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Join(in array, sep string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("Array name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-17"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var val string, myarr array\n myarr[0] = "first"\n myarr[1] = 10\n val = Join(myarr, ",")\n')])])]),e("h3",{attrs:{id:"split"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#split"}},[t._v("#")]),t._v(" Split")]),t._v(" "),e("p",[t._v("Uses the sep separator to split the in string into elements and put them into an array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-20"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Split(in string, sep string) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("In")])]),t._v(" "),e("p",[t._v("String.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("sep")])]),t._v(" "),e("p",[t._v("Separator.")])])]),t._v(" "),e("h4",{attrs:{id:"example-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-18"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var myarr array\nmyarr = Split("first,second,third", ",")\n')])])]),e("h3",{attrs:{id:"len"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#len"}},[t._v("#")]),t._v(" Len")]),t._v(" "),e("p",[t._v("Returns the number of elements in a specified array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-21"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Len(val array) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-19"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("if Len(mylist) == 0 {\n ...\n}\n")])])]),e("h3",{attrs:{id:"row"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#row"}},[t._v("#")]),t._v(" Row")]),t._v(" "),e("p",[t._v("The list parameter must not be specified in this case. Return the first object array in the array list. If the list is empty, an empty result is returned. This function is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-22"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" Row(list array) map\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("list")])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")])])]),t._v(" "),e("h4",{attrs:{id:"example-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-20"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' var ret map\n ret = DBFind("contracts").Columns("id,value").WhereId(10).Row()\n Println(ret)\n')])])]),e("h3",{attrs:{id:"one"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#one"}},[t._v("#")]),t._v(" One")]),t._v(" "),e("p",[t._v("Returns the field value of the first object array in the array list. If the list array is empty, nil is returned. It is mostly used in conjunction with the "),e("a",{attrs:{href:"#dbfind"}},[t._v("DBFind")]),t._v(" function. When using this function, you cannot specify parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-23"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("One(list array, column string) string\n")])])]),e("ul",[e("li",[e("strong",[t._v("list")])])]),t._v(" "),e("p",[t._v("The array of objects returned by the DBFind function.")]),t._v(" "),e("ul",[e("li",[e("p",[e("strong",[t._v("column")])]),t._v(" "),e("p",[t._v("Field Name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-21"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var ret string\nret = DBFind("contracts").Columns("id,value").WhereId(10).One("value")\nif ret != nil {\n Println(ret)\n}\n')])])]),e("h3",{attrs:{id:"getmapkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getmapkeys"}},[t._v("#")]),t._v(" GetMapKeys")]),t._v(" "),e("p",[t._v("Returns the key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-24"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetMapKeys(val map) array\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-22"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k1"] = "v1"\nval["k2"] = "v2"\narr = GetMapKeys(val)\n')])])]),e("h3",{attrs:{id:"sortedkeys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sortedkeys"}},[t._v("#")]),t._v(" SortedKeys")]),t._v(" "),e("p",[t._v("Returns a sorted key array in the object array.")]),t._v(" "),e("h4",{attrs:{id:"syntax-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-25"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("SortedKeys(val map) array\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("Object array.")])])]),t._v(" "),e("h4",{attrs:{id:"example-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-23"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val map\nvar arr array\nval["k2"] = "v2"\nval["k1"] = "v1"\narr = SortedKeys(val)\n')])])]),e("h3",{attrs:{id:"callcontract"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#callcontract"}},[t._v("#")]),t._v(" CallContract")]),t._v(" "),e("p",[t._v("Calls the contract with a specified name. All parameters of the data section in the contract must be included in an object array. This function returns the value assigned to the "),e("strong",[t._v("$result")]),t._v(" variable by a specified contract.")]),t._v(" "),e("h4",{attrs:{id:"syntax-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-26"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("CallContract(name string, params map)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The name of the contract being called.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("An associative array of the contract input data.")])])]),t._v(" "),e("h4",{attrs:{id:"example-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-24"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var par map\npar["Name"] = "My Name"\nCallContract("MyContract", par)\n')])])]),e("h3",{attrs:{id:"contractaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractaccess"}},[t._v("#")]),t._v(" ContractAccess")]),t._v(" "),e("p",[t._v("Checks if the name of contract being executed matches one of the names listed in the parameters. Usually it is used to control contract access to tables. When editing table fields or inserting and adding new column fields in the permissions section of the table, please specify this function in the permissions fields.")]),t._v(" "),e("h4",{attrs:{id:"syntax-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-27"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractAccess(name string, [name string]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-25"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractAccess("MyContract")\nContractAccess("MyContract","SimpleContract")\n')])])]),e("h3",{attrs:{id:"contractconditions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contractconditions"}},[t._v("#")]),t._v(" ContractConditions")]),t._v(" "),e("p",[t._v("Calls the conditions section in the contract with a specified name.")]),t._v(" "),e("p",[t._v("For this type of contracts, the data section must be empty. If the conditions section is executed without error, it returns true. If there is an error during execution, the parent contract will also be terminated due to the error. This function is usually used to control the contract's access to tables and can be called in the permission fields when editing system tables.")]),t._v(" "),e("h4",{attrs:{id:"syntax-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-28"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ContractConditions(name string, [name string]) bool\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Contract name.")])])]),t._v(" "),e("h4",{attrs:{id:"example-26"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-26"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ContractConditions("MainCondition")\n')])])]),e("h3",{attrs:{id:"evalcondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#evalcondition"}},[t._v("#")]),t._v(" EvalCondition")]),t._v(" "),e("p",[t._v("Gets the value of the condfield field in the record with a 'name' field from the tablename table, and checks the conditions of the condfield field value.")]),t._v(" "),e("h4",{attrs:{id:"syntax-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-29"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(tablename string, name string, condfield string)\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("tablename")])]),t._v(" "),e("p",[t._v("Table name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("Queries the value with the 'name' field.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("condfield")])]),t._v(" "),e("p",[t._v("The name of the field whose conditions needs to be checked.")])])]),t._v(" "),e("h4",{attrs:{id:"example-27"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-27"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EvalCondition(`menu`, $Name, `conditions`)\n")])])]),e("h3",{attrs:{id:"getcontractbyid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyid"}},[t._v("#")]),t._v(" GetContractById")]),t._v(" "),e("p",[t._v("Returns its contract name by contract ID. If not found the contract, an empty string is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-30"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractById(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("The contract ID in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-28"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-28"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var name string\nname = GetContractById($IdContract)\n")])])]),e("h3",{attrs:{id:"getcontractbyname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getcontractbyname"}},[t._v("#")]),t._v(" GetContractByName")]),t._v(" "),e("p",[t._v("This function returns its contract ID by contract name. If not found the contract, zero is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-31"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("GetContractByName(name string) int\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("name")])]),t._v(" "),e("p",[t._v("The contract name in the contract table contracts.")])])]),t._v(" "),e("h4",{attrs:{id:"example-29"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-29"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var id int\nid = GetContractByName(`NewBlock`)\n")])])]),e("h3",{attrs:{id:"roleaccess"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#roleaccess"}},[t._v("#")]),t._v(" RoleAccess")]),t._v(" "),e("p",[t._v("Checks whether the role ID of the contract caller matches one of the IDs specified in the parameter.")]),t._v(" "),e("p",[t._v("You can use this function to control contract access to tables and other data.")]),t._v(" "),e("h4",{attrs:{id:"syntax-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-32"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(id int, [id int]) bool\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Role ID.")])])]),t._v(" "),e("h4",{attrs:{id:"example-30"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-30"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("RoleAccess(1)\nRoleAccess(1, 3)\n")])])]),e("h3",{attrs:{id:"transactioninfo"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#transactioninfo"}},[t._v("#")]),t._v(" TransactionInfo")]),t._v(" "),e("p",[t._v("Queries transactions by specified hash value and returns information about the contract executed and its parameters.")]),t._v(" "),e("h4",{attrs:{id:"syntax-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-33"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("TransactionInfo(hash: string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hash")])]),t._v(" "),e("p",[t._v("Transaction hash in hexadecimal string format.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("This function returns a string in JSON format:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"contract":"ContractName", "params":{"key": "val"}, "block": "N"}\n')])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("contract")])]),t._v(" "),e("p",[t._v("Contract name.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("params")])]),t._v(" "),e("p",[t._v("Data passed to contract parameters.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("block")])]),t._v(" "),e("p",[t._v("ID of the block that processed the transaction.")])])]),t._v(" "),e("h4",{attrs:{id:"example-31"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-31"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("var out map\nout = JSONDecode(TransactionInfo(hash))\n")])])]),e("h3",{attrs:{id:"throw"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#throw"}},[t._v("#")]),t._v(" Throw")]),t._v(" "),e("p",[t._v("Generates an error of type exception.")]),t._v(" "),e("h4",{attrs:{id:"syntax-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-34"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Throw(ErrorId string, ErrDescription string)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("ErrorId")])]),t._v(" "),e("p",[t._v("Error identifier.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("ErrDescription")])]),t._v(" "),e("p",[t._v("Error description.")])])]),t._v(" "),e("blockquote",[e("p",[e("strong",[t._v("Return value")])])]),t._v(" "),e("p",[t._v("The format of this type of transaction results:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('{"type":"exception","error":"Error description","id":"Error ID"}\n')])])]),e("h4",{attrs:{id:"example-32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-32"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('Throw("Problem", "There is a problem")\n')])])]),e("h3",{attrs:{id:"validatecondition"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#validatecondition"}},[t._v("#")]),t._v(" ValidateCondition")]),t._v(" "),e("p",[t._v("Tries to compile the conditions specified by the condition parameter. If there is an error during the compilation process, an error is generated and the contract called is terminated. This function is designed to check the correctness of the conditional format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-35"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("ValidateCondition(condition string, state int)\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("condition")])]),t._v(" "),e("p",[t._v("The conditional format that needs to be verified.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("state")])]),t._v(" "),e("p",[t._v("Ecosystem ID. If you check the global condition, please specify it as 0.")])])]),t._v(" "),e("h4",{attrs:{id:"example-33"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-33"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('ValidateCondition(`ContractAccess("@1MyContract")`, 1)\n')])])]),e("h3",{attrs:{id:"addresstoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#addresstoid"}},[t._v("#")]),t._v(" AddressToId")]),t._v(" "),e("p",[t._v("Returns the corresponding account address by wallet address. If an invalid address is specified, '0' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-36"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("AddressToId(address string) int\n\n")])])]),e("ul",[e("li",[e("p",[t._v("Address")]),t._v(" "),e("p",[t._v("Wallet address in "),e("code",[t._v("XXXX-...-XXXX")]),t._v(" format or number format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-34"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-34"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("wallet = AddressToId($Recipient)\n")])])]),e("h3",{attrs:{id:"idtoaddress"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#idtoaddress"}},[t._v("#")]),t._v(" IdToAddress")]),t._v(" "),e("p",[t._v("Returns the corresponding wallet address by account address. If an invalid address is specified, the invalid address 'invalid' is returned.")]),t._v(" "),e("h4",{attrs:{id:"syntax-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-37"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("IdToAddress(id int) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Id")])]),t._v(" "),e("p",[t._v("Account address.")])])]),t._v(" "),e("h4",{attrs:{id:"example-35"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-35"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("$address = IdToAddress($id)\n")])])]),e("h3",{attrs:{id:"pubtoid"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pubtoid"}},[t._v("#")]),t._v(" PubToID")]),t._v(" "),e("p",[t._v("The account address is returned by public key in hexadecimal format.")]),t._v(" "),e("h4",{attrs:{id:"syntax-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-38"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("PubToID(hexkey string) int\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexkey")])]),t._v(" "),e("p",[t._v("The public key in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-36"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-36"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var wallet int\nwallet = PubToID("04fa5e78.....34abd6")\n')])])]),e("h3",{attrs:{id:"decodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#decodebase64"}},[t._v("#")]),t._v(" DecodeBase64")]),t._v(" "),e("p",[t._v("Returns a string by specifying the base64 format")]),t._v(" "),e("h4",{attrs:{id:"syntax-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-39"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("DecodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("String in base64 format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-37"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-37"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("val = DecodeBase64(mybase64)\n")])])]),e("h3",{attrs:{id:"encodebase64"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#encodebase64"}},[t._v("#")]),t._v(" EncodeBase64")]),t._v(" "),e("p",[t._v("Returns a string in base64 format by specifying a string.")]),t._v(" "),e("h4",{attrs:{id:"syntax-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-40"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EncodeBase64(input string) string\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Input")])]),t._v(" "),e("p",[t._v("The string to be encoded.")])])]),t._v(" "),e("h4",{attrs:{id:"example-38"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-38"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var base64str string\nbase64str = EncodeBase64("my text")\n')])])]),e("h3",{attrs:{id:"float"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#float"}},[t._v("#")]),t._v(" Float")]),t._v(" "),e("p",[t._v("Converts an integer or string to a float number.")]),t._v(" "),e("h4",{attrs:{id:"syntax-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-41"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Float(val int|string) float\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("val")])]),t._v(" "),e("p",[t._v("An integer or string.")])])]),t._v(" "),e("h4",{attrs:{id:"example-39"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-39"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('val = Float("567.989") + Float(232)\n')])])]),e("h3",{attrs:{id:"hextobytes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hextobytes"}},[t._v("#")]),t._v(" HexToBytes")]),t._v(" "),e("p",[t._v("Converts a string in hexadecimal format to byte type bytes.")]),t._v(" "),e("h4",{attrs:{id:"syntax-42"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-42"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(" HexToBytes(hexdata string) bytes\n\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("hexdata")])]),t._v(" "),e("p",[t._v("A string in hexadecimal format.")])])]),t._v(" "),e("h4",{attrs:{id:"example-40"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-40"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('var val bytes\nval = HexToBytes("34fe4501a4d80094")\n')])])]),e("h3",{attrs:{id:"formatmoney"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#formatmoney"}},[t._v("#")]),t._v(" FormatMoney")]),t._v(" "),e("p",[t._v("Returns the string value of exp / 10 ^ digit.")]),t._v(" "),e("h4",{attrs:{id:"syntax-43"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#syntax-43"}},[t._v("#")]),t._v(" Syntax")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("FormatMoney(exp string, digit int) string\n")])])]),e("ul",[e("li",[e("p",[e("strong",[t._v("Exp")])]),t._v(" "),e("p",[t._v("A number in string format.")])]),t._v(" "),e("li",[e("p",[e("strong",[t._v("digit")])]),t._v(" "),e("p",[t._v("The exponent (positive or negative) of 10 in the expression "),e("code",[t._v("Exp/10^digit")]),t._v(". Positive values determine decimal places.")])])]),t._v(" "),e("h4",{attrs:{id:"example-41"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-41"}},[t._v("#")]),t._v(" Example")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v(' s = FormatMoney("78236475917384", 0)\n')])])]),e("h3",{attrs:{id:"random"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#random"}},[t._v("#")]),t._v(" Random")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("Returns a random number between min and max (min <= result =l.length?{value:void 0,done:!0}:(e=i(l,n),t.index+=e.length,{value:e,done:!1})}))},function(e,t,l){var i=l(0),n=l(5),a=l(8),r=l(23),o=l(88),s=l(65),u=l(30),c=l(84).CONFIGURABLE,g=u.get,p=u.enforce,v=String(String).split("String");(e.exports=function(e,t,l,s){var u,g=!!s&&!!s.unsafe,d=!!s&&!!s.enumerable,f=!!s&&!!s.noTargetGet,m=s&&void 0!==s.name?s.name:t;n(l)&&("Symbol("===String(m).slice(0,7)&&(m="["+String(m).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!a(l,"name")||c&&l.name!==m)&&r(l,"name",m),(u=p(l)).source||(u.source=v.join("string"==typeof m?m:""))),e!==i?(g?!f&&e[t]&&(d=!0):delete e[t],d?e[t]=l:r(e,t,l)):d?e[t]=l:o(t,l)})(Function.prototype,"toString",(function(){return n(this)&&g(this).source||s(this)}))},function(e,t){var l=Array.isArray;e.exports=l},function(e,t,l){var i=l(0),n=l(141),a=l(142),r=l(118),o=l(23),s=l(4),u=s("iterator"),c=s("toStringTag"),g=r.values,p=function(e,t){if(e){if(e[u]!==g)try{o(e,u,g)}catch(t){e[u]=g}if(e[c]||o(e,c,t),n[t])for(var l in r)if(e[l]!==r[l])try{o(e,l,r[l])}catch(t){e[l]=r[l]}}};for(var v in n)p(i[v]&&i[v].prototype,v);p(a,"DOMTokenList")},function(e,t,l){var i=l(153),n="object"==typeof self&&self&&self.Object===Object&&self,a=i||n||Function("return this")();e.exports=a},function(e,t,l){var i=l(0),n=l(67),a=i.String;e.exports=function(e){if("Symbol"===n(e))throw TypeError("Cannot convert a Symbol value to a string");return a(e)}},function(e,t){e.exports=!1},function(e,t,l){var i=l(10),n=l(11),a=l(42);e.exports=i?function(e,t,l){return n.f(e,t,a(1,l))}:function(e,t,l){return e[t]=l,e}},function(e,t,l){var i=l(2),n=i({}.toString),a=i("".slice);e.exports=function(e){return a(n(e),8,-1)}},function(e,t,l){var i,n=l(6),a=l(198),r=l(92),o=l(40),s=l(123),u=l(59),c=l(64),g=c("IE_PROTO"),p=function(){},v=function(e){return" + diff --git a/concepts/blockchain-layers.html b/concepts/blockchain-layers.html index 8e16877..f9acf8c 100644 --- a/concepts/blockchain-layers.html +++ b/concepts/blockchain-layers.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/concepts/consensus.html b/concepts/consensus.html index 812517e..732c2e2 100644 --- a/concepts/consensus.html +++ b/concepts/consensus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/concepts/faq.html b/concepts/faq.html index 850e86b..adb04be 100644 --- a/concepts/faq.html +++ b/concepts/faq.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/concepts/thesaurus.html b/concepts/thesaurus.html index 8cc5ebe..dafffc6 100644 --- a/concepts/thesaurus.html +++ b/concepts/thesaurus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/concepts/about-the-platform.html b/de/concepts/about-the-platform.html index 35a1fa7..1735a90 100644 --- a/de/concepts/about-the-platform.html +++ b/de/concepts/about-the-platform.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/concepts/blockchain-layers.html b/de/concepts/blockchain-layers.html index a197f8e..c032e2b 100644 --- a/de/concepts/blockchain-layers.html +++ b/de/concepts/blockchain-layers.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/concepts/consensus.html b/de/concepts/consensus.html index ccecb66..a53ce54 100644 --- a/de/concepts/consensus.html +++ b/de/concepts/consensus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/concepts/faq.html b/de/concepts/faq.html index 8d7fc13..fde065b 100644 --- a/de/concepts/faq.html +++ b/de/concepts/faq.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/concepts/thesaurus.html b/de/concepts/thesaurus.html index 78391da..7faedfa 100644 --- a/de/concepts/thesaurus.html +++ b/de/concepts/thesaurus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/howtos/deployment.html b/de/howtos/deployment.html index 716b712..e6fb304 100644 --- a/de/howtos/deployment.html +++ b/de/howtos/deployment.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/index.html b/de/index.html index d98feee..73dbe86 100644 --- a/de/index.html +++ b/de/index.html @@ -12,8 +12,8 @@ - - + +

Eine große Reduzierung der Blockchain-Anwendungskosten

Ein unabhängig aufgebautes physisches Ökosystem

Schnelle Bereitstellung von verteilten Servern, Entwicklungs- und Anwendungsumgebungen

Ein diversifizierter DApp Store und BaaS-Funktionalität

Tatsächliche Serviceantwort in Sekunden

Ketten- und systemübergreifende Dateninteraktion

Ein neues Infrastrukturnetzwerk, das öffentliche, Allianz- und private Ketten integriert

Ein anpassbarer Konsensmechanismus

Trennung von Front-End und Back-End, um verschiedene Verschlüsselungsanforderungen zu erfüllen

- + diff --git a/de/reference/api2.html b/de/reference/api2.html index 4f63502..d0b03b6 100644 --- a/de/reference/api2.html +++ b/de/reference/api2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/reference/backend-config.html b/de/reference/backend-config.html index 202c258..741cde5 100644 --- a/de/reference/backend-config.html +++ b/de/reference/backend-config.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/reference/desync_monitor.html b/de/reference/desync_monitor.html index 2cbf91d..0245417 100644 --- a/de/reference/desync_monitor.html +++ b/de/reference/desync_monitor.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/reference/json-rpc.html b/de/reference/json-rpc.html index 7a921ae..9344bd6 100644 --- a/de/reference/json-rpc.html +++ b/de/reference/json-rpc.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/reference/platform-parameters.html b/de/reference/platform-parameters.html index 7a155d6..f957d32 100644 --- a/de/reference/platform-parameters.html +++ b/de/reference/platform-parameters.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/topics/daemons.html b/de/topics/daemons.html index 3584d22..3819ef3 100644 --- a/de/topics/daemons.html +++ b/de/topics/daemons.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/topics/script.html b/de/topics/script.html index 1a017b2..6cd71b9 100644 --- a/de/topics/script.html +++ b/de/topics/script.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/topics/templates2.html b/de/topics/templates2.html index ff626f8..4745b4f 100644 --- a/de/topics/templates2.html +++ b/de/topics/templates2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/topics/vm.html b/de/topics/vm.html index 68a039e..a1cdefb 100644 --- a/de/topics/vm.html +++ b/de/topics/vm.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/tutorials/app_tutorial.html b/de/tutorials/app_tutorial.html index f1d834c..f7bc7ae 100644 --- a/de/tutorials/app_tutorial.html +++ b/de/tutorials/app_tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/de/tutorials/tutorial.html b/de/tutorials/tutorial.html index a767df7..87837a9 100644 --- a/de/tutorials/tutorial.html +++ b/de/tutorials/tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/concepts/about-the-platform.html b/es/concepts/about-the-platform.html index 6afc4de..fcba666 100644 --- a/es/concepts/about-the-platform.html +++ b/es/concepts/about-the-platform.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/concepts/blockchain-layers.html b/es/concepts/blockchain-layers.html index 964534f..611fd4a 100644 --- a/es/concepts/blockchain-layers.html +++ b/es/concepts/blockchain-layers.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/concepts/consensus.html b/es/concepts/consensus.html index d8e2da2..5ced760 100644 --- a/es/concepts/consensus.html +++ b/es/concepts/consensus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/concepts/faq.html b/es/concepts/faq.html index 38448be..f010d40 100644 --- a/es/concepts/faq.html +++ b/es/concepts/faq.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/concepts/thesaurus.html b/es/concepts/thesaurus.html index 23b2862..bf53117 100644 --- a/es/concepts/thesaurus.html +++ b/es/concepts/thesaurus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/howtos/deployment.html b/es/howtos/deployment.html index fb62a64..0ea8efc 100644 --- a/es/howtos/deployment.html +++ b/es/howtos/deployment.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/index.html b/es/index.html index df8c2c6..cd06714 100644 --- a/es/index.html +++ b/es/index.html @@ -12,8 +12,8 @@ - - + +

Una gran reducción del costo de la aplicación blockchain.

Un ecosistema físico construido de forma independiente

Implementación rápida de servidores distribuidos, entornos de desarrollo y aplicaciones

Una tienda DApp diversificada y una funcionalidad BaaS

Respuesta de servicio real en segundos

Interacción de datos entre cadenas y sistemas

Una nueva red de infraestructura que integra cadenas públicas, de alianzas y privadas.

Un mecanismo de consenso personalizable

Separación de front-end y back-end para satisfacer diversas necesidades de cifrado

- + diff --git a/es/reference/api2.html b/es/reference/api2.html index d749f84..6ac122a 100644 --- a/es/reference/api2.html +++ b/es/reference/api2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/reference/backend-config.html b/es/reference/backend-config.html index 6da89ec..3e08d9f 100644 --- a/es/reference/backend-config.html +++ b/es/reference/backend-config.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/reference/desync_monitor.html b/es/reference/desync_monitor.html index 788a501..c590fd0 100644 --- a/es/reference/desync_monitor.html +++ b/es/reference/desync_monitor.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/reference/json-rpc.html b/es/reference/json-rpc.html index 04e1833..066d164 100644 --- a/es/reference/json-rpc.html +++ b/es/reference/json-rpc.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/reference/platform-parameters.html b/es/reference/platform-parameters.html index 9e488f3..dcfa4a7 100644 --- a/es/reference/platform-parameters.html +++ b/es/reference/platform-parameters.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/topics/daemons.html b/es/topics/daemons.html index 6b3ff41..6277fe3 100644 --- a/es/topics/daemons.html +++ b/es/topics/daemons.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/topics/script.html b/es/topics/script.html index ab75941..e9ebfdd 100644 --- a/es/topics/script.html +++ b/es/topics/script.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/topics/templates2.html b/es/topics/templates2.html index 81cbbe3..042e0cd 100644 --- a/es/topics/templates2.html +++ b/es/topics/templates2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/topics/vm.html b/es/topics/vm.html index b4a0905..b865c7a 100644 --- a/es/topics/vm.html +++ b/es/topics/vm.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/tutorials/app_tutorial.html b/es/tutorials/app_tutorial.html index 2a90c97..0a23608 100644 --- a/es/tutorials/app_tutorial.html +++ b/es/tutorials/app_tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/es/tutorials/tutorial.html b/es/tutorials/tutorial.html index 8adc077..b41b110 100644 --- a/es/tutorials/tutorial.html +++ b/es/tutorials/tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/concepts/about-the-platform.html b/fr/concepts/about-the-platform.html index 01db15d..47ddead 100644 --- a/fr/concepts/about-the-platform.html +++ b/fr/concepts/about-the-platform.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/concepts/blockchain-layers.html b/fr/concepts/blockchain-layers.html index 399801f..23b1f39 100644 --- a/fr/concepts/blockchain-layers.html +++ b/fr/concepts/blockchain-layers.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/concepts/consensus.html b/fr/concepts/consensus.html index ac2d504..9aa68a7 100644 --- a/fr/concepts/consensus.html +++ b/fr/concepts/consensus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/concepts/faq.html b/fr/concepts/faq.html index 2b67518..0255568 100644 --- a/fr/concepts/faq.html +++ b/fr/concepts/faq.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/concepts/thesaurus.html b/fr/concepts/thesaurus.html index 4868d82..baf8fb6 100644 --- a/fr/concepts/thesaurus.html +++ b/fr/concepts/thesaurus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/howtos/deployment.html b/fr/howtos/deployment.html index 7d08b6a..59f080b 100644 --- a/fr/howtos/deployment.html +++ b/fr/howtos/deployment.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/index.html b/fr/index.html index 5134255..da54186 100644 --- a/fr/index.html +++ b/fr/index.html @@ -12,8 +12,8 @@ - - + +

Une grande réduction du coût de l'application blockchain

Un écosystème physique construit de manière indépendante

Déploiement rapide de serveurs distribués, d'environnements de développement et d'applications

Un DApp Store diversifié et des fonctionnalités BaaS

Réponse réelle du service en quelques secondes

Interaction des données inter-chaînes et inter-systèmes

Un nouveau réseau d'infrastructures intégrant des chaînes publiques, alliances et rives

Un mécanisme de consensus personnalisable

Séparation du front-end et du back-end pour répondre aux divers besoins de cryptage

- + diff --git a/fr/reference/api2.html b/fr/reference/api2.html index c1a21c1..a0cb922 100644 --- a/fr/reference/api2.html +++ b/fr/reference/api2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/reference/backend-config.html b/fr/reference/backend-config.html index ade2e0b..36a4ce8 100644 --- a/fr/reference/backend-config.html +++ b/fr/reference/backend-config.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/reference/desync_monitor.html b/fr/reference/desync_monitor.html index ff120cd..a4f571b 100644 --- a/fr/reference/desync_monitor.html +++ b/fr/reference/desync_monitor.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/reference/json-rpc.html b/fr/reference/json-rpc.html index b088064..cc8fcb5 100644 --- a/fr/reference/json-rpc.html +++ b/fr/reference/json-rpc.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/reference/platform-parameters.html b/fr/reference/platform-parameters.html index 824d57c..a3d2f03 100644 --- a/fr/reference/platform-parameters.html +++ b/fr/reference/platform-parameters.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/topics/daemons.html b/fr/topics/daemons.html index d2b3273..4fd7769 100644 --- a/fr/topics/daemons.html +++ b/fr/topics/daemons.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/topics/script.html b/fr/topics/script.html index a9b07bf..dd69d39 100644 --- a/fr/topics/script.html +++ b/fr/topics/script.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/topics/templates2.html b/fr/topics/templates2.html index 2efb5be..3665799 100644 --- a/fr/topics/templates2.html +++ b/fr/topics/templates2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/topics/vm.html b/fr/topics/vm.html index accb6c5..1e2c74a 100644 --- a/fr/topics/vm.html +++ b/fr/topics/vm.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/tutorials/app_tutorial.html b/fr/tutorials/app_tutorial.html index 655db2b..8c8aa51 100644 --- a/fr/tutorials/app_tutorial.html +++ b/fr/tutorials/app_tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/fr/tutorials/tutorial.html b/fr/tutorials/tutorial.html index 967b8e7..7a648e7 100644 --- a/fr/tutorials/tutorial.html +++ b/fr/tutorials/tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/howtos/deployment.html b/howtos/deployment.html index 62f901e..f0d26f9 100644 --- a/howtos/deployment.html +++ b/howtos/deployment.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/index.html b/index.html index 5b61768..3e3b19e 100644 --- a/index.html +++ b/index.html @@ -12,8 +12,8 @@ - - + +

A great reduction of blockchain application cost

An independently build physical ecosystem

Quick deployment of distributed servers, development and application environments

A diversified DApp Store and BaaS functionality

Actual service response in seconds

Cross-chain and cross-system data interaction

A new infrastructure network integrating public, alliance, and rivate chains

A customizable consensus mechanism

Separation of front end and back end to meet various encryption needs

- + diff --git a/it/concepts/about-the-platform.html b/it/concepts/about-the-platform.html index 70ce012..3f8d227 100644 --- a/it/concepts/about-the-platform.html +++ b/it/concepts/about-the-platform.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/concepts/blockchain-layers.html b/it/concepts/blockchain-layers.html index 21d0a94..75d8130 100644 --- a/it/concepts/blockchain-layers.html +++ b/it/concepts/blockchain-layers.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/concepts/consensus.html b/it/concepts/consensus.html index d8994d4..635e809 100644 --- a/it/concepts/consensus.html +++ b/it/concepts/consensus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/concepts/faq.html b/it/concepts/faq.html index 06a9f5a..c29d74e 100644 --- a/it/concepts/faq.html +++ b/it/concepts/faq.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/concepts/thesaurus.html b/it/concepts/thesaurus.html index 8297801..0f1073b 100644 --- a/it/concepts/thesaurus.html +++ b/it/concepts/thesaurus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/howtos/deployment.html b/it/howtos/deployment.html index caea66d..e87b2b6 100644 --- a/it/howtos/deployment.html +++ b/it/howtos/deployment.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/index.html b/it/index.html index c352f93..ddbd209 100644 --- a/it/index.html +++ b/it/index.html @@ -12,8 +12,8 @@ - - + +

Una grande riduzione del costo dell'applicazione blockchain

Un ecosistema fisico costruito in modo indipendente

Implementazione rapida di server distribuiti, ambienti di sviluppo e applicazioni

Un DApp Store diversificato e funzionalità BaaS

Risposta effettiva del servizio in pochi secondi

Interazione dati cross-chain e cross-system

Una nuova rete infrastrutturale che integra catene pubbliche, alleanze e rivali

Un meccanismo di consenso personalizzabile

Separazione di front-end e back-end per soddisfare le diverse esigenze di crittografia

- + diff --git a/it/reference/api2.html b/it/reference/api2.html index 6161239..26a07d5 100644 --- a/it/reference/api2.html +++ b/it/reference/api2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/reference/backend-config.html b/it/reference/backend-config.html index 9798fb9..345a0c8 100644 --- a/it/reference/backend-config.html +++ b/it/reference/backend-config.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/reference/desync_monitor.html b/it/reference/desync_monitor.html index 4a13069..c7c6217 100644 --- a/it/reference/desync_monitor.html +++ b/it/reference/desync_monitor.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/reference/json-rpc.html b/it/reference/json-rpc.html index c4052d3..e6d8889 100644 --- a/it/reference/json-rpc.html +++ b/it/reference/json-rpc.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/reference/platform-parameters.html b/it/reference/platform-parameters.html index 394d033..f5d7431 100644 --- a/it/reference/platform-parameters.html +++ b/it/reference/platform-parameters.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/topics/daemons.html b/it/topics/daemons.html index 532a379..294d599 100644 --- a/it/topics/daemons.html +++ b/it/topics/daemons.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/topics/script.html b/it/topics/script.html index 7c39873..8f46995 100644 --- a/it/topics/script.html +++ b/it/topics/script.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/topics/templates2.html b/it/topics/templates2.html index 3002c35..1577d2f 100644 --- a/it/topics/templates2.html +++ b/it/topics/templates2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/topics/vm.html b/it/topics/vm.html index ad75359..6c1cb0c 100644 --- a/it/topics/vm.html +++ b/it/topics/vm.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/tutorials/app_tutorial.html b/it/tutorials/app_tutorial.html index 2b5c742..e8bbf18 100644 --- a/it/tutorials/app_tutorial.html +++ b/it/tutorials/app_tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/it/tutorials/tutorial.html b/it/tutorials/tutorial.html index 025f55e..1721994 100644 --- a/it/tutorials/tutorial.html +++ b/it/tutorials/tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/concepts/about-the-platform.html b/ja/concepts/about-the-platform.html index 561f9b2..d6b4bec 100644 --- a/ja/concepts/about-the-platform.html +++ b/ja/concepts/about-the-platform.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/concepts/blockchain-layers.html b/ja/concepts/blockchain-layers.html index 7278c45..0f7979b 100644 --- a/ja/concepts/blockchain-layers.html +++ b/ja/concepts/blockchain-layers.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/concepts/consensus.html b/ja/concepts/consensus.html index 0aa0a60..2b90c75 100644 --- a/ja/concepts/consensus.html +++ b/ja/concepts/consensus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/concepts/faq.html b/ja/concepts/faq.html index 312bdee..0bb63c1 100644 --- a/ja/concepts/faq.html +++ b/ja/concepts/faq.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/concepts/thesaurus.html b/ja/concepts/thesaurus.html index f4b50a3..d314e80 100644 --- a/ja/concepts/thesaurus.html +++ b/ja/concepts/thesaurus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/howtos/deployment.html b/ja/howtos/deployment.html index c18db39..e15c762 100644 --- a/ja/howtos/deployment.html +++ b/ja/howtos/deployment.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/index.html b/ja/index.html index 7cb41e0..77821bd 100644 --- a/ja/index.html +++ b/ja/index.html @@ -12,8 +12,8 @@ - - + +

ブロックチェーンアプリケーションのコストを大幅に削減

独立して構築する物理エコシステム

分散サーバー、開発およびアプリケーション環境の迅速な展開

多様なDAppストアとBaaS機能

秒単位の実際のサービス応答

クロスチェーンおよびクロスシステムのデータ相互作用

パブリックチェーン、アライアンスチェーン、およびリバティブチェーンを統合する新しいインフラストラクチャネットワーク

カスタマイズ可能なコンセンサスメカニズム

さまざまな暗号化のニーズを満たすためのフロントエンドとバックエンドの分離

- + diff --git a/ja/reference/api2.html b/ja/reference/api2.html index b61cb5c..5f85389 100644 --- a/ja/reference/api2.html +++ b/ja/reference/api2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/reference/backend-config.html b/ja/reference/backend-config.html index d12288d..d086cc6 100644 --- a/ja/reference/backend-config.html +++ b/ja/reference/backend-config.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/reference/desync_monitor.html b/ja/reference/desync_monitor.html index dd90365..4a282aa 100644 --- a/ja/reference/desync_monitor.html +++ b/ja/reference/desync_monitor.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/reference/json-rpc.html b/ja/reference/json-rpc.html index 673aceb..a4967ef 100644 --- a/ja/reference/json-rpc.html +++ b/ja/reference/json-rpc.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/reference/platform-parameters.html b/ja/reference/platform-parameters.html index fa9fc06..6dad4e4 100644 --- a/ja/reference/platform-parameters.html +++ b/ja/reference/platform-parameters.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/topics/daemons.html b/ja/topics/daemons.html index 5e63a33..f62422f 100644 --- a/ja/topics/daemons.html +++ b/ja/topics/daemons.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/topics/script.html b/ja/topics/script.html index 819e7e2..f26d854 100644 --- a/ja/topics/script.html +++ b/ja/topics/script.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/topics/templates2.html b/ja/topics/templates2.html index d4669ce..988acce 100644 --- a/ja/topics/templates2.html +++ b/ja/topics/templates2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/topics/vm.html b/ja/topics/vm.html index c2a927e..aa54d24 100644 --- a/ja/topics/vm.html +++ b/ja/topics/vm.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/tutorials/app_tutorial.html b/ja/tutorials/app_tutorial.html index fe80aa6..cbf2b1c 100644 --- a/ja/tutorials/app_tutorial.html +++ b/ja/tutorials/app_tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/ja/tutorials/tutorial.html b/ja/tutorials/tutorial.html index 290a2d2..1759103 100644 --- a/ja/tutorials/tutorial.html +++ b/ja/tutorials/tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/reference/api2.html b/reference/api2.html index 7197b9d..dd5e36a 100644 --- a/reference/api2.html +++ b/reference/api2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/reference/backend-config.html b/reference/backend-config.html index 794ea70..244aa73 100644 --- a/reference/backend-config.html +++ b/reference/backend-config.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/reference/desync_monitor.html b/reference/desync_monitor.html index a16c8f3..210e3e1 100644 --- a/reference/desync_monitor.html +++ b/reference/desync_monitor.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/reference/json-rpc.html b/reference/json-rpc.html index 417027c..61f9de8 100644 --- a/reference/json-rpc.html +++ b/reference/json-rpc.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/reference/platform-parameters.html b/reference/platform-parameters.html index 56bf725..d977ea2 100644 --- a/reference/platform-parameters.html +++ b/reference/platform-parameters.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/topics/daemons.html b/topics/daemons.html index cefa1e5..a807302 100644 --- a/topics/daemons.html +++ b/topics/daemons.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/topics/script.html b/topics/script.html index c13faab..6030bd2 100644 --- a/topics/script.html +++ b/topics/script.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/topics/templates2.html b/topics/templates2.html index 6cc251b..fa52279 100644 --- a/topics/templates2.html +++ b/topics/templates2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/topics/vm.html b/topics/vm.html index 2e7d340..ff3e1b4 100644 --- a/topics/vm.html +++ b/topics/vm.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/concepts/about-the-platform.html b/tr-TR/concepts/about-the-platform.html index e68f504..98fef46 100644 --- a/tr-TR/concepts/about-the-platform.html +++ b/tr-TR/concepts/about-the-platform.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/concepts/blockchain-layers.html b/tr-TR/concepts/blockchain-layers.html index c9ece91..3c29187 100644 --- a/tr-TR/concepts/blockchain-layers.html +++ b/tr-TR/concepts/blockchain-layers.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/concepts/consensus.html b/tr-TR/concepts/consensus.html index 5409caf..9dfe70b 100644 --- a/tr-TR/concepts/consensus.html +++ b/tr-TR/concepts/consensus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/concepts/faq.html b/tr-TR/concepts/faq.html index 923d90a..32c6597 100644 --- a/tr-TR/concepts/faq.html +++ b/tr-TR/concepts/faq.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/concepts/thesaurus.html b/tr-TR/concepts/thesaurus.html index e546220..6d74e4e 100644 --- a/tr-TR/concepts/thesaurus.html +++ b/tr-TR/concepts/thesaurus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/howtos/deployment.html b/tr-TR/howtos/deployment.html index 945b29d..056ba91 100644 --- a/tr-TR/howtos/deployment.html +++ b/tr-TR/howtos/deployment.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/index.html b/tr-TR/index.html index cbb4334..c374435 100644 --- a/tr-TR/index.html +++ b/tr-TR/index.html @@ -12,8 +12,8 @@ - - + +

Blockchain uygulama maliyetlerinde büyük bir azalma

Bağımsız olarak oluşturulmuş bir fiziksel ekosistem

Dağıtılmış sunucuların, geliştirme ve uygulama ortamlarının hızlı dağıtımı

Çeşitlendirilmiş bir DApp mağazası ve BaaS işlevselliği

Saniyeler içinde gerçek hizmet yanıtı

Chainler arası ve sistemler arası veri etkileşimi

Kamu, ittifak ve özel chainleri entegre eden yeni bir altyapı ağı

Özelleştirilebilir bir fikir birliği mekanizması

Farklı şifreleme ihtiyaçlarını karşılamak için front-end ve back-end ayrımı

- + diff --git a/tr-TR/reference/api2.html b/tr-TR/reference/api2.html index 6ac5d99..2d07109 100644 --- a/tr-TR/reference/api2.html +++ b/tr-TR/reference/api2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/reference/backend-config.html b/tr-TR/reference/backend-config.html index 056e9c8..34fb2aa 100644 --- a/tr-TR/reference/backend-config.html +++ b/tr-TR/reference/backend-config.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/reference/desync_monitor.html b/tr-TR/reference/desync_monitor.html index ec448f2..991972a 100644 --- a/tr-TR/reference/desync_monitor.html +++ b/tr-TR/reference/desync_monitor.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/reference/json-rpc.html b/tr-TR/reference/json-rpc.html index 999db50..d12497d 100644 --- a/tr-TR/reference/json-rpc.html +++ b/tr-TR/reference/json-rpc.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/reference/platform-parameters.html b/tr-TR/reference/platform-parameters.html index fea82f2..52d7c56 100644 --- a/tr-TR/reference/platform-parameters.html +++ b/tr-TR/reference/platform-parameters.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/topics/daemons.html b/tr-TR/topics/daemons.html index a5a9975..ecf6309 100644 --- a/tr-TR/topics/daemons.html +++ b/tr-TR/topics/daemons.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/topics/script.html b/tr-TR/topics/script.html index 8cc1261..0998dd7 100644 --- a/tr-TR/topics/script.html +++ b/tr-TR/topics/script.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/topics/templates2.html b/tr-TR/topics/templates2.html index 0e5fc47..8fb5826 100644 --- a/tr-TR/topics/templates2.html +++ b/tr-TR/topics/templates2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/topics/vm.html b/tr-TR/topics/vm.html index 75976c5..116c90d 100644 --- a/tr-TR/topics/vm.html +++ b/tr-TR/topics/vm.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/tutorials/app_tutorial.html b/tr-TR/tutorials/app_tutorial.html index 20df7a9..fda4a61 100644 --- a/tr-TR/tutorials/app_tutorial.html +++ b/tr-TR/tutorials/app_tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tr-TR/tutorials/tutorial.html b/tr-TR/tutorials/tutorial.html index ba8c59e..7f49049 100644 --- a/tr-TR/tutorials/tutorial.html +++ b/tr-TR/tutorials/tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tutorials/app_tutorial.html b/tutorials/app_tutorial.html index 3ea500d..bce127a 100644 --- a/tutorials/app_tutorial.html +++ b/tutorials/app_tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/tutorials/tutorial.html b/tutorials/tutorial.html index 746f017..d314730 100644 --- a/tutorials/tutorial.html +++ b/tutorials/tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/concepts/about-the-platform.html b/zh-CN/concepts/about-the-platform.html index b8cf003..bd6c1db 100644 --- a/zh-CN/concepts/about-the-platform.html +++ b/zh-CN/concepts/about-the-platform.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/concepts/blockchain-layers.html b/zh-CN/concepts/blockchain-layers.html index 91f3ebf..cda7698 100644 --- a/zh-CN/concepts/blockchain-layers.html +++ b/zh-CN/concepts/blockchain-layers.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/concepts/consensus.html b/zh-CN/concepts/consensus.html index 9bd3620..9dae951 100644 --- a/zh-CN/concepts/consensus.html +++ b/zh-CN/concepts/consensus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/concepts/faq.html b/zh-CN/concepts/faq.html index 71ddc7e..42f8ddd 100644 --- a/zh-CN/concepts/faq.html +++ b/zh-CN/concepts/faq.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/concepts/thesaurus.html b/zh-CN/concepts/thesaurus.html index f08c406..53e2f8c 100644 --- a/zh-CN/concepts/thesaurus.html +++ b/zh-CN/concepts/thesaurus.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/howtos/deployment.html b/zh-CN/howtos/deployment.html index a453020..69f6e61 100644 --- a/zh-CN/howtos/deployment.html +++ b/zh-CN/howtos/deployment.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/index.html b/zh-CN/index.html index d48624c..389bf7b 100644 --- a/zh-CN/index.html +++ b/zh-CN/index.html @@ -12,8 +12,8 @@ - - + +

大大降低区块链应用成本

独立构建的物理生态系统

分布式服务器、开发和应用环境的快速部署

多元化的 DApp Store 和 BaaS 功能

秒级实际服务响应

跨链跨系统数据交互

集公链、联盟链、私链于一体的新型基础设施网络

可定制的共识机制

前后端分离,满足各种加密需求

- + diff --git a/zh-CN/reference/api2.html b/zh-CN/reference/api2.html index 19423b9..fe5e16e 100644 --- a/zh-CN/reference/api2.html +++ b/zh-CN/reference/api2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/reference/backend-config.html b/zh-CN/reference/backend-config.html index 2d4a9cb..196c735 100644 --- a/zh-CN/reference/backend-config.html +++ b/zh-CN/reference/backend-config.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/reference/desync_monitor.html b/zh-CN/reference/desync_monitor.html index e5201c9..641a035 100644 --- a/zh-CN/reference/desync_monitor.html +++ b/zh-CN/reference/desync_monitor.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/reference/json-rpc.html b/zh-CN/reference/json-rpc.html index a53255e..2f2fa88 100644 --- a/zh-CN/reference/json-rpc.html +++ b/zh-CN/reference/json-rpc.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/reference/platform-parameters.html b/zh-CN/reference/platform-parameters.html index 4d9a921..e800fae 100644 --- a/zh-CN/reference/platform-parameters.html +++ b/zh-CN/reference/platform-parameters.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/topics/daemons.html b/zh-CN/topics/daemons.html index 34f5114..0d6a014 100644 --- a/zh-CN/topics/daemons.html +++ b/zh-CN/topics/daemons.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/topics/script.html b/zh-CN/topics/script.html index d864e7b..fd547f5 100644 --- a/zh-CN/topics/script.html +++ b/zh-CN/topics/script.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/topics/templates2.html b/zh-CN/topics/templates2.html index 66b087e..af47653 100644 --- a/zh-CN/topics/templates2.html +++ b/zh-CN/topics/templates2.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/topics/vm.html b/zh-CN/topics/vm.html index 4893d36..dabc33b 100644 --- a/zh-CN/topics/vm.html +++ b/zh-CN/topics/vm.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/tutorials/app_tutorial.html b/zh-CN/tutorials/app_tutorial.html index c2b063c..5d58a8f 100644 --- a/zh-CN/tutorials/app_tutorial.html +++ b/zh-CN/tutorials/app_tutorial.html @@ -12,8 +12,8 @@ - - + +
- + diff --git a/zh-CN/tutorials/tutorial.html b/zh-CN/tutorials/tutorial.html index 14213d7..8c91125 100644 --- a/zh-CN/tutorials/tutorial.html +++ b/zh-CN/tutorials/tutorial.html @@ -12,8 +12,8 @@ - - + +